Вопрос

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

HTTP/1.1 (1997–1999)

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

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

Это было полезно?

Решение

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

HTTP 1.1 имеет обязательный заголовок Host по спецификации.

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

Пример:

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

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

Это означает, что у вас есть blahblahlbah.com и helohelohelo.com, указывающие на один и тот же IP-адрес.Ваш веб-сервер может использовать поле «Хост», чтобы определить, какой сайт нужен клиентскому компьютеру.

Постоянные связи:

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

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

ОПЦИИ метода:

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

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

HTTP 1.0 поддерживал кэширование через заголовок:Если-Изменено-С тех пор.

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

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

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

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

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

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

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

Другие советы

 HTTP 1.0 (1994 г.)

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

 HTTP 1.1 (1996–2015 гг.)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

По сравнению с 1.0, 1.1 уменьшает веб-трафик

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top