HTTP 1.0 vs 1.1

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

HTTP/1.1 (1997-1999)

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

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

Ответ 1

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

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

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 Slow Start.

Метод OPTIONS:

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

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

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 Continue. Это делается для того, чтобы клиент не отправлял большой запрос, когда этот клиент даже не уверен, может ли сервер обработать запрос или уполномочен обрабатывать запрос. В этом случае клиент отправляет только заголовки, а сервер будет сообщать клиенту 100 "Продолжить", продолжить работу с телом.

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 6

 HTTP 1.0 (1994)

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

 HTTP 1.1 (1996-2015)

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

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

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

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

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

Ответ 7

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

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

Ответ 8

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