HTTP 1.0 против 1.1 - PullRequest
       73

HTTP 1.0 против 1.1

240 голосов
/ 29 октября 2008

Может ли кто-нибудь дать мне краткий обзор различий между HTTP 1.0 и HTTP 1.1? Я провел некоторое время с обоими RFC, но не смог вытащить большую разницу между ними. Википедия говорит это:

HTTP / 1.1 (1997-1999)

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

Но это не много значит для меня. Я понимаю, что это довольно сложный вопрос, поэтому я не ожидаю полного ответа, но может ли кто-нибудь дать мне краткий обзор различий на более низком уровне?
Под этим я подразумеваю, что я ищу информацию, которую мне нужно знать для реализации HTTP-сервера или приложения. Я в основном ищу толчок в правильном направлении, чтобы я мог понять это самостоятельно.

Ответы [ 7 ]

335 голосов
/ 29 октября 2008

Поддержка прокси и поле Host:

HTTP 1.1 имеет требуемый заголовок хоста по спецификации.

HTTP 1.0 официально не требует заголовка хоста, но добавить его не мешает, и многие приложения (прокси) ожидают увидеть заголовок хоста независимо от версии протокола.

Пример:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

Этот заголовок полезен, поскольку он позволяет вам маршрутизировать сообщение через прокси-серверы, а также потому, что ваш веб-сервер может различать разные сайты на одном сервере.

Так что это означает, что если у вас blahblahlbah.com и helohelohelo.com оба указывают на один и тот же IP. Ваш веб-сервер может использовать поле Host, чтобы определить, какой сайт хочет клиентский компьютер.

Постоянные соединения:

HTTP 1.1 также позволяет вам иметь постоянные соединения, что означает, что вы можете иметь более одного запроса / ответа на одно и то же соединение HTTP.

В HTTP 1.0 вам приходилось открывать новое соединение для каждой пары запрос / ответ. И после каждого ответа соединение будет закрыто. Это приводит к большим проблемам с эффективностью из-за TCP Slow Start .

ОПЦИИ метод:

HTTP / 1.1 представляет метод OPTIONS. HTTP-клиент может использовать этот метод для определения возможностей HTTP-сервера. В основном он используется для перекрестного общего доступа к ресурсам в веб-приложениях.

Кэширование:

HTTP 1.0 поддерживает кэширование через заголовок: If-Modified-Since.

HTTP 1.1 значительно расширяет поддержку кэширования, используя так называемый «тег сущности». Если 2 ресурса одинаковы, они будут иметь одинаковые теги сущностей.

HTTP 1.1 также добавляет условные заголовки If-Unmodified-Since, If-Match, If-None-Match.

Есть и другие дополнения, связанные с кэшированием, такие как заголовок Cache-Control.

100 Продолжить статус:

В HTTP / 1.1 100 добавлен новый код возврата. Продолжить. Это сделано для предотвращения отправки клиентом большого запроса, когда этот клиент даже не уверен, может ли сервер обработать запрос или авторизован для обработки запроса. В этом случае клиент отправляет только заголовки, а сервер сообщит клиенту 100 продолжить, продолжайте с тела.

Гораздо больше:

  • Дайджест-аутентификация и прокси-аутентификация
  • Дополнительные новые коды статуса
  • Кодировка передачи по частям
  • Заголовок подключения
  • Расширенная поддержка сжатия
  • Гораздо больше.
12 голосов
/ 30 октября 2015

 HTTP 1.0 (1994)

  • Он все еще используется
  • Может использоваться клиентом, который не может справиться с чанкингом (или сжатые) ответы сервера

 HTTP 1.1 (1996–2015)

  • Формализует множество расширений до версии 1.0
  • Поддерживает постоянные и конвейерные соединения
  • Поддерживает частичные передачи, сжатие / декомпрессию
  • Поддерживает виртуальный хостинг (сервер с одним IP-адресом, на котором размещено несколько доменов)
  • Поддерживает несколько языков
  • Поддерживает передачи в байтовом диапазоне; полезно для возобновления прерванных данных переводы

HTTP 1.1 - это расширение HTTP 1.0. Ниже перечислены четыре основных улучшения:

  1. Эффективное использование IP-адресов, позволяя нескольким доменам быть обслуживается с одного IP-адреса.

  2. Более быстрый отклик, позволяя веб-браузеру отправлять несколько запросы по одному постоянному соединению.

  3. Более быстрый отклик для динамически генерируемых страниц благодаря поддержке кодирование по частям, которое позволяет отправить ответ до его общая длина известна.
  4. Более быстрый отклик и значительная экономия полосы пропускания за счет добавления кеш поддержка.
8 голосов
/ 29 октября 2008

Для простых приложений (например, время от времени извлекающих значение температуры из веб-термометра) HTTP 1.0 подходит как для клиента, так и для сервера. Вы можете написать простой HTTP-клиент или сервер HTTP 1.0 на основе примерно 20 строк кода.

Для более сложных сценариев HTTP 1.1 - это путь. Ожидайте увеличения размера кода в 3-5 раз, чтобы справиться со сложностями более сложного протокола HTTP 1.1. Сложность в основном возникает, потому что в HTTP 1.1 вам нужно будет создавать, анализировать и отвечать на различные заголовки. Вы можете защитить свое приложение от этой сложности, если клиент использует библиотеку HTTP или сервер использует сервер веб-приложений.

7 голосов
/ 29 октября 2008

Ключевой проблемой совместимости является поддержка постоянных подключений . Недавно я работал на сервере, который «поддерживал» HTTP / 1.1, но не смог закрыть соединение, когда клиент отправил запрос HTTP / 1.0. При написании сервера, поддерживающего HTTP / 1.1, убедитесь, что он также хорошо работает с клиентами, использующими только HTTP / 1.0.

5 голосов
/ 29 октября 2008

Одно из первых отличий, которое я могу вспомнить, это несколько доменов, работающих на одном сервере, частичное извлечение ресурсов, это позволяет вам извлекать и ускорять загрузку ресурса (это то, что почти каждый ускоритель загрузки) делает).

Если вы хотите разработать приложение, такое как веб-сайт или подобное, вам не нужно слишком беспокоиться о различиях, но вы должны знать разницу между глаголами GET и POST в как минимум.

Теперь, если вы хотите разработать браузер, тогда да, вам нужно будет знать полный протокол, а также, если вы пытаетесь разработать HTTP-сервер.

Если вас интересует только знание протокола HTTP, я бы порекомендовал вам начать с HTTP / 1.1 вместо 1.0.

2 голосов
/ 02 марта 2017

HTTP 1.1 - это последняя версия протокола передачи гипертекста, протокола для приложений всемирной паутины, который работает поверх набора протоколов TCP / IP в Интернете. По сравнению с HTTP 1.0, HTTP 1.1 обеспечивает более быструю доставку веб-страниц, чем исходный HTTP, и уменьшает веб-трафик.

Интернет-трафик Пример: например, если вы обращаетесь к серверу. В то же время так много пользователей обращаются к серверу за данными, тогда есть шанс повесить сервер. Это веб-трафик.

0 голосов
/ 05 марта 2017

По сравнению с 1,0, 1,1 снижает веб-трафик

...