Что нужно знать о HTTP

внешний интерфейс сервер алгоритм HTTP

Прочитав эту статью, вы сможете узнать

  • Принцип HTTP-передачи
  • HTTP-заголовок
  • Принцип HTTPS

Принцип HTTP-передачи

Alt text
Alt text

Когда HTTP хочет отправить сообщение, ему необходимо выполнить следующие два шага:

  • Трехстороннее рукопожатие TCP устанавливает конвейер соединения, и пакеты HTTP последовательно передаются через конвейер в виде потока;
  • TCP будет разбивать эти данные на блоки данных, инкапсулировать их в IP-пакеты и передавать через IP;

Использование TCP в качестве транспортного уровня:

  • надежная передача
  • аккуратный

Типичный процесс HTTP-запроса показан на следующем рисунке:

Alt text
Alt text

Заголовок HTTP-протокола

Общий стандартный HTTP-протоколGET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE.

GET

  • Нет побочных эффектов
  • можно кэшировать
  • Параметры запроса прикреплены к запросу

    POST

  • иметь побочные эффекты
  • не кэшируется
  • Параметры запроса находятся в теле

HEAD

  • Передаются только заголовки HTTP

OPTIONS

  • Анализ запросов для определения методов, поддерживаемых сервером

Воспринимайте это буквальноGET,POST, одно - получить, другое - отправить, так что в общем думаемчитатьКогда ресурс сервера используется, мы будем использоватьGETзапрашивать при необходимостиИсправлятьКогда данные сервера, используйтеPOSTОтправить действие.
Давайте посмотрим на типичныйGETпротокол,

Alt text
Alt text

Рассмотрим несколько важных полей:

Connection

В http1.0 http отключит tcp-ссылку после завершения передачи.Из-за особенностей медленного старта tcp каждый раз устанавливать http будет занимать много времени, поэтому каждый браузер определяет нестандартный протокол называется keep-alive, разумеется, keep-alive включен по умолчанию в http1.1, что указывает на то, что запрос не будет отключен после окончания, то есть следующий запрос может быть передан без DNS-запроса, TCP трехсторонний рукопожатие и прямое использование предыдущего канала для передачи.

Alt text
Alt text

Вышеприведенные два изображения представляют собой два запроса интерфейса Tmall, которые я захватил.Видно, что процесс поиска DNS, начального подключения и SSL во втором запросе меньше, чем в первом запросе, а время улучшается примерно на 100 мс. ., улучшение производительности очень очевидно.
Стоит отметить, что поскольку keep-alive будет мультиплексировать tcp-канал для передачи данных, как узнать, что передача данных завершена, для этого необходимо использовать Content-length, благодаря которому клиент может узнать, когда заканчивается ресурс.

Cache-Control

Приведенный выше keep-alive оптимизирует ссылку в запросе.Также в браузере есть очень важное поле Cache-control.Этот заголовок используется для реализации механизма кеширования путем указания инструкций в http запросах и ответах.
В ответе сервер может указать время истечения ресурса через max-age=x, указывая, что тот же запрос через x секунд направляется непосредственно в логику кэширования на стороне клиента.

Alt text
Alt text

Конечно, клиент может присоединитьсяcache-control:no-cacheЧтобы форсировать ресурсы сервера.
Alt text
Alt text

На приведенном выше рисунке показано влияние некоторых операций браузера на кеш. Фактический принцип заключается в том, чтобы заставить модификацию заголовка запроса повлиять на кеш. Конкретная реализация каждого браузера отличается. Вот влияние операции браузер хром.

Согласовать кеш

Когда срок действия контроля кеша клиента истекает, нужно ли мне запрашивать ресурсы с сервера?
Конечно, разработчики HTTP не настолько глупы, в этот раз будет использоваться кеш согласования.

Last-Modified

Когда сервер возвращает ресурс в первый раз, если он приносит параметр last-modified, это значит сообщить клиенту, что я обновил ресурс в это время.В следующий раз вы не забудьте принести его мне, и я проверьте это здесь.Будет ли он обновлен по прошествии времени, если нет, то верните 304, ваш клиент может напрямую взять локальный кеш, если есть обновление, он вернет 200 и прикрепит последнее последнее измененное значение.

Alt text
Alt text

Etag

Есть проблема с Last-Modified, например, я несколько раз обновлял второй ресурс, потом этот ресурс кэшируется до тех пор, пока первый, время обновления 1 секунда, а затем повторный запрос все равно вернет 304. Более того, некоторые файлы будут касаться по времени, на этот раз содержимое документа может не измениться, а будет возвращаться 200. Чтобы решить вышеуказанные проблемы, был Etag, при первом ответе сервер вернет Etag, вычисляется общий хэш файла Etag, если содержимое файла не изменилось в соответствии с Etag также уникальным, поэтому что клиент несколько раз при запросе принести последний Etag, возвращенный сервером, на проверку сервера, если дважды, сервер вернет 304.

Alt text
Alt text

encoding

Alt text
Alt text

Через поле Accept-Encoding клиент сообщает серверу, какие алгоритмы сжатия он поддерживает, после чего сервер выбирает оптимальный алгоритм сжатия данных, после чего возвращает его клиенту через Content-Encoding, сообщая клиенту вызвать соответствующий алгоритм распаковки.

Отслеживание статуса пользователя, как правило, при просмотре веб-сайта веб-сайт внедряет идентификатор сеанса в наш файл cookie с помощью set-cookie для идентификации пользователя. Поскольку файлы cookie будут автоматически присоединяться к запросам с того же домена или поддомена, через файлы cookie рекламная сеть может встроить страницу iframe на любой сайт и разместить рекламу.Для поиска информации, конечно, мы можем включить режим конфиденциальности браузер, чтобы избежать кражи информации и злоупотреблений.

HTTPS

Зачем переходить на HTTPS?

До появления Интернета, если два человека, которые находились далеко, хотели общаться, они могли только написать письмо. Давайте посмотрим, как А в Китае посылает письмо Б в США.
A->Почта Китая->Почтальон A.....->Почтальон Z->Почта США->B
Видно, что посередине много ссылок, и каждую ссылку можно произвольно подсмотреть или даже подделать, тогда буква, скорее всего, не буква А, когда дойдет до Б.
Также в процессе HTTP-передачи мы можем поставитьоператорАналогия с почтой.маршрутизацияАналогия с почтальоном, потому что HTTP передается в сети в открытом виде и может быть изменен любым вуайеристом, таким образом осуществляется типичный захват оператора связи.
Чтобы заглянуть в проблему, А и Б заранее договорились о методе. А дал В кодовую книгу, и каждая буква слова была представлена ​​соответствующим паролем. Каждый раз, когда А писал письмо в соответствии с кодовой книгой, В получал его и передал кодовую книгу.Расшифровка, так что пока пароль не попадет в руки другим в процессе передачи, другие не смогут понять букву.Это симметричное шифрование. Это выглядит хорошо, но есть очень серьезная проблема: как передать кодовую книгу А Б? Если ее все же отправить по почте, кодовая книга будет скопирована, и все последующее шифрование будет напрасным.
Чтобы решить эту проблему, B выпустил общедоступную кодовую книгу, заявив, что каждый, кто общается со мной, шифрует ее в соответствии с этой кодовой книгой, но поскольку это не взаимно однозначное отношение отображения, поэтому после того, как A зашифрован, даже сам A Ни один из них не может его расшифровать, но у Б есть свой ключ, с помощью которого можно расшифровать письмо.
Это вроде бы решило проблему подглядывания, но однажды Б получил письмо от Ифэна и обнаружил, что не может понять содержание письма после его расшифровки своим ключом.Пообщавшись с А, он обнаружил, что письмо было был подделан.
Чтобы решить эту проблему, время A отправит письмо каждому по отпечатку пальца, B после получения письма сначала определит, что отпечаток пальца не является A, а затем решит, следует ли расшифровать, так что проблема почти решена.

Принцип HTTPS

Alt text
Alt text

Недостатки HTTPS

  • Медленно, SSL-соединение устанавливается впервые, алгоритм сложный, потребляются ресурсы
  • Дорого, нужно каждый год платить определенную комиссию центру сертификации