Прошлое и настоящее HTTP: понять HTTP, HTTPS, SPDY, HTTP2 сразу

внешний интерфейс сервер HTTPS HTTP
Прошлое и настоящее HTTP: понять HTTP, HTTPS, SPDY, HTTP2 сразу

Будучи ветераном протокола интернет-коммуникации, протокол HTTP претерпел три изменения версии.Теперь последней версией является HTTP 2.0, с которой, я думаю, все знакомы. Сегодня я познакомлю вас с прошлым и настоящим HTTP.

HTTP/0.9

Самая ранняя версия HTTP родилась в 1991. Эта самая ранняя версия чрезвычайно проста по сравнению с настоящей. В ней нет HTTP-заголовка, кода состояния и даже номера версии. другие версии HTTP. HTTP/0.9 поддерживает только один метод — Get, а запрос состоит только из одной строки.

GET /hello.html

Ответ также очень прост и содержит только сам html-документ.

<HTML>
Hello world
</HTML>

После установления TCP-соединения сервер возвращает клиенту строку в формате HTML. После отправки TCP-соединение закрывается. Поскольку кодов состояния и кодов ошибок нет, при возникновении ошибки при обработке сервер вернет только специальный HTML-файл, содержащий описание проблемы. Это самая ранняя версия HTTP/0.9.

HTTP/1.0

В 1996 году была выпущена версия HTTP/1.0, которая значительно обогатила содержимое передачи HTTP.В дополнение к тексту также можно отправлять изображения и видео, что заложило основу для развития Интернета. По сравнению с HTTP/0.9, HTTP/1.0 в основном имеет следующие особенности:

  • Запросы и ответы поддерживают заголовки HTTP, добавляют коды состояния, а начало объекта ответа представляет собой строку состояния ответа.
  • Информация о версии протокола должна быть отправлена ​​с запросом, поддерживаются методы HEAD, POST
  • Поддержка передачи содержимого, отличного от файлов HTML. Типичный запрос HTTP/1.0 выглядит так:
GET /hello.html HTTP/1.0
User-Agent:NCSA_Mosaic/2.0(Windows3.1)

200 OK
Date: Tue, 15 Nov 1996 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html

<HTML>
一个包含图片的页面
<IMGSRC="/smile.gif">
</HTML>

HTTP/1.1

HTTP/1.1 был выпущен через несколько месяцев после выпуска HTTP/1.0. HTTP/1.1 является более совершенным HTTP/1.0.В HTTP1.1 в основном есть следующие улучшения:

  • Соединения можно использовать повторно
  • Добавить конвейер: HTTP-конвейер — это технология, которая отправляет несколько HTTP-запросов пакетами, не дожидаясь ответа сервера в процессе передачи. Механизм конвейера должен осуществляться через постоянное соединение. Браузеры, отправляющие HTTP-запросы пакетами, могут значительно сократить время загрузки страницы, особенно если транспортная задержка (задержка/задержка) высока. Следует отметить, что только идемпотентные запросы могут использовать конвейер, например методы GET, HEAD.
  • Передача фрагментированного кодирования: это кодирование передает объект фрагментами и указывает длину каждого фрагмента до тех пор, пока длина 0 блоков не укажет на конец передачи, что особенно полезно, когда длина объекта неизвестна (например, данные, динамически генерируемые база данных)
  • Внедрить больше механизмов управления кешем: например, etag, cache-control
  • Введите механизм согласования контента, включая язык, кодирование, тип и т. Д., И разрешить клиенту и серверу договориться о наиболее подходящем контент, который будет обмениваться
  • И сообщение-запрос, и ответное сообщение поддерживают поле заголовка Host: в HTTP 1.0 считается, что каждый сервер привязан к уникальному IP-адресу, поэтому URL-адрес в сообщении-запросе не передает имя хоста (имя хоста). Но с развитием технологии виртуальных хостов на физическом сервере может быть несколько виртуальных хостов (многосетевых веб-серверов), и они имеют общий IP-адрес. Поэтому введение заголовка Host необходимо.
  • Добавлены методы OPTIONS,PUT, DELETE, TRACE, CONNECT Хотя HTTP/1.1 был оптимизирован во многих отношениях, как наиболее широко используемая версия протокола, он может удовлетворить многие сетевые требования.Однако по мере того, как веб-страницы становятся все более и более сложными и даже превращаются в независимые приложения, HTTP/1.1 постепенно раскрывается. Что-то пошло не так:
  • При передаче данных соединение необходимо каждый раз переустанавливать, что особенно недружественно для мобильных терминалов.
  • Содержимое передачи представляет собой открытый текст, что недостаточно безопасно.
  • Содержимое заголовка слишком велико, и заголовок мало меняется для каждого запроса, что приводит к ненужным затратам.
  • keep-alive снижает производительность сервера Чтобы решить эти проблемы, появились HTTPS и SPDY.

HTTPS

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

HTTPS
Основные функции протокола HTTPS можно разделить на два типа: одна — установление канала защиты информации для обеспечения безопасности передачи данных, другая — подтверждение подлинности веб-сайта. Основные различия между HTTPS и HTTP заключаются в следующем:

  • Протокол HTTPS использует ca для подачи заявки на сертификат, так как бесплатных сертификатов меньше, требуется определенная плата.
  • HTTP — это передача открытого текста, а HTTPS — безопасный протокол передачи с шифрованием SSL.
  • HTTP и HTTPS используют совершенно разные методы подключения и используют разные порты: первый — 80, а второй — 443.

SPDY

На самом деле SPDY — это не новый протокол, а сеансовый уровень перед HTTP.

SPDY
С 2010 по 2015 год Google продемонстрировал альтернативный способ обмена данными между клиентом и сервером, используя экспериментальный протокол SPDY. Он собирает фокус разработчиков браузера и серверной части, уточняя увеличение количества ответов и решая сложные передачи данных. Цели по умолчанию при запуске проекта SPDY:

  • 50% сокращение времени загрузки страницы (PLT).
  • Авторам веб-сайтов не нужно ничего изменять.
  • Минимизируйте сложность развертывания, не требуя изменений в сетевой инфраструктуре.
  • Сотрудничайте с сообществом открытого исходного кода для разработки этого нового протокола.
  • Соберите реальные данные о производительности, чтобы убедиться, что этот экспериментальный протокол работает. Чтобы достичь цели по сокращению времени загрузки страницы, SPDY вводит новый уровень данных двоичного кадрирования для достижения разнонаправленного запроса и ответа, определения приоритетов, минимизации и устранения ненужных сетевых задержек, чтобы более эффективно использовать базовое TCP-соединение.

HTTP/2.0

Время пришло в 2015 году и вышел HTTP/2.0. Давайте сначала представим характеристики HTTP/2.0:

  • Используйте уровень двоичного кадрирования: добавьте уровень двоичного кадрирования между уровнем приложения и транспортным уровнем, чтобы добиться прорыва в HTTP1.1 без изменения семантики HTTP, метода HTTP, кода состояния, URI и полей заголовка. Регулирование производительности для повышения производительности. производительность передачи для низкой задержки и высокой пропускной способности. На уровне двоичного кадрирования HTTP2.0 разделит всю передаваемую информацию на более мелкие сообщения и кадры и закодирует их в двоичном формате, в котором информация заголовка HTTP1.x будет инкапсулирована в кадр заголовков, а тело запроса инкапсулируется во фрейм данных.
    二进制分帧
  • Мультиплексирование: для HTTP/1.x, даже если включено длинное соединение, запрос отправляется последовательно. Когда пропускная способность достаточна, использование пропускной способности недостаточно. HTTP/2.0 принимает мультиплексирование. Таким образом, несколько запросов могут быть отправлены параллельно для улучшения использования полосы пропускания.
    多路复用
  • Приоритет потока данных: поскольку запросы могут отправляться одновременно, что, если сервер сосредоточен на отправке ресурсов изображения, в то время как браузер ожидает ключевых файлов CSS или JS для завершения рендеринга страницы? HTTP/2.0 может установить значение приоритета для потока данных.Это значение приоритета определяет, что клиент и сервер используют разные политики приоритета для обработки разных потоков.
  • Нажатие на стороне сервера: в HTTP/2.0 сервер может отправлять контент, отличный от запроса, к клиенту. Например, когда запрашивается страница, сервер напрямую передает логотип, CSS и другие файлы, связанные со страницей, на сервер. клиент, не дожидаясь запроса. Отправьте его, когда он придет, потому что сервер думает, что клиент будет использовать эти вещи. Это эквивалентно сборке всех ресурсов в одном HTML-документе.
  • Сжатие заголовков: используйте таблицу заголовков для отслеживания и хранения пар ключ-значение, отправленных ранее, для одного и того же содержимого оно не будет отправляться каждый раз, когда вы запрашиваете и отвечаете.
    头部压缩
    Видно, что новые функции HTTP/2.0 очень похожи на SPDY, ведь изначально HTTP/2.0 был разработан на основе SPDY, который можно назвать обновленной версией SPDY. Но HTTP/2.0 все еще отличается от SPDY, в основном, в следующих двух моментах:
  • HTTP2.0 поддерживает транспорт HTTP в виде открытого текста, тогда как SPDY обеспечивает использование HTTPS.
  • Алгоритм сжатия заголовка сообщения HTTP2.0 использует HPACK вместо DEFLATE, принятого SPDY.

Текст / XSS

редактировать /флуоресценция

Если вы заинтересованы в происхождении HTTP и хотите увидеть более подробное введение, пожалуйста, прочитайте наши предыдущие статьи:

Из прошлого в будущее: исследование HTTP2

Кроме того, мы проводим ограниченный по времени опрос читателей, поэтому, пожалуйста, примите участие в:

[Опрос читателей] Интерфейс Chuangyu с нетерпением ждет вашего голоса


Автор разрешил опубликовать эту статью, и авторские права принадлежат Chuangyu Frontend. Пожалуйста, укажите источник для перепечатки этой статьи. Ссылка на эту статью:известный Sec-Fed.com/2018-09-11-…

Если вы хотите подписаться на другие сообщения с передовой линии KnownsecFED, выполните поиск и подпишитесь на нашу общедоступную учетную запись WeChat: KnownsecFED. Добро пожаловать, чтобы оставить сообщение для обсуждения, мы ответим как можно скорее.

Спасибо за прочтение.