HTTP(s)

HTTP(s)


Рассмотрим HTTP запрос на примере telnet

В данном случае, с помощью утилиты telnet, мы подключаемся к домену localhost(ему соответствует ip - 127.0.0.1) на 80-м порту - это локальная машина, с ней взаимодействовать из интернета не получится.
После подключения необходимо указать некоторые параметры: GET - способ передачи данных, / - запрашиваемый ресурс, HTTP/1.1 - версия протокола, на котором будет идти общение и хост на сервере, в данном случае localhost(иногда так бывает, что на одном сервере localhost:80 может находиться много виртуальных серверов - это называется виртуальный хостинг).

Соответственно получаем ответ:

Сначала получаем заголовки ответа, тут говорится о том что запрос http успешно сделан, код ответа - 200, означает что запрос успешно обработан.

код 100 - информативный, информирует о процессе передачи.
код 200 - ОК.
код 300 - перенаправление, говорит о том, что файл был перемещен.
код 400 - ошибка клиента, запрос не может быть обработан по вине клиента, часто ошибка в запросе
код 500 - ошибка сервера, возникает если запрос не может быть обработан по вине сервера.

Информация о сервере, дате запроса, дате последних изменениях в файле и другие, вообще заголовков может быть дычь как много, и в них надо уметь разбираться. Заголовки устанавливают определенные инструкции для общения между клиентом и сервером.

Далее уже возвращается сама страница, так как telnet не имеет графической оболочки и не умеет отображать html, возвращается она в виде текста:

Тут много тэгов всяких, мы с ними позже разберемся.
В общем случае HTTP запрос состоит из следующих составляющих:

METHOD -метод передачи данных, /path?param - путь до файла и передаваемые параметры, HTTP/1.1 - версия HTTP протокола

Есть несколько основных методов передачи данных:
GET, POST, PUT, OPTIONS, но на самом деле чаще всего используются GET и POST, различия в них в том, что GET запрос передает информацию через параметры URL'а, а это означает, что данные могут осесть в логах, да и в целом GET - очень уязвимый метод и передавать через него какие то важные данные опасно, по этому придумал - POST запрос, внешне он похож на GET запрос, однако он спрятан в теле запроса и создан для того, что бы безопасно отправлять важные данные на сервер.

А теперь давайте зададимся вопросом, пришел вот на сервер Васек и говорит, я хочу получить информацию о пришедших сообщеньках, как серверу его идентифицировать? По логину и паролю, в принципе, да. -Но вводить логин и пароль, при каждом перемещении внутри домена - энергозатратная штука, по этому придумали COOKIE.
COOKIE - это пара в формате ключ:значение, которая присваивается сервером пользователю после авторизации и отправляется с каждым запросом, что бы не вводить постоянно свои данные. Важно понимать, что COOKIE так же как и логин\пароль является идентификационными данными и с их помощь можно получить доступ к чужому аккаунту, просто подставив ее значение в браузер:

Ну и закончить я хотел бы на сертификатах. HTTP(s) - что ж это за s, оно значит secure, а это в свою очередь означает, что весь трафик передающийся по этому протоколу шифруется и злоумышленник не может прослушать трафик. Так же существуют центры сертификации, которые выдают ресурсам сертификаты, тем самым подтверждая его подлинность. По сути центром сертификации может стать кто угодно, но он должен быть признан большей частью браузеров.

Report Page