Может ли кто-нибудь дать мне краткий обзор различий между HTTP 1.0 и HTTP 1.1? Я провел некоторое время с обоими RFC, но не смог вытащить большую разницу между ними. Википедия говорит это:
HTTP / 1.1 (1997-1999)
Текущая версия; постоянные соединения включены по умолчанию и хорошо работают с прокси. Также поддерживает конвейерную обработку запросов, позволяя отправлять несколько запросов одновременно, позволяя серверу подготовиться к рабочей нагрузке и, возможно, быстрее передать запрошенные ресурсы клиенту.
Но это не много значит для меня. Я понимаю, что это довольно сложный вопрос, поэтому я не ожидаю полного ответа, но может ли кто-нибудь дать мне краткий обзор различий на более низком уровне?
Под этим я подразумеваю, что я ищу информацию, которую мне нужно знать для реализации HTTP-сервера или приложения. Я в основном ищу толчок в правильном направлении, чтобы я мог понять это самостоятельно.
Ответы:
Поддержка прокси и поле Host:
HTTP 1.1 имеет требуемый заголовок хоста по спецификации.
HTTP 1.0 официально не требует заголовка хоста, но добавить его не мешает, и многие приложения (прокси) ожидают увидеть заголовок хоста независимо от версии протокола.
Пример:
Этот заголовок полезен, потому что он позволяет вам маршрутизировать сообщение через прокси-серверы, а также потому, что ваш веб-сервер может различать разные сайты на одном сервере.
Так что это означает, что если у вас blahblahlbah.com и helohelohelo.com оба указывают на один и тот же IP. Ваш веб-сервер может использовать поле «Хост», чтобы определить, какой сайт хочет клиентский компьютер.
Постоянные связи:
HTTP 1.1 также позволяет вам иметь постоянные соединения, что означает, что вы можете иметь более одного запроса / ответа на одно и то же соединение HTTP.
В HTTP 1.0 вам приходилось открывать новое соединение для каждой пары запрос / ответ. И после каждого ответа соединение будет закрыто. Это приводит к большим проблемам с эффективностью из-за медленного запуска TCP .
ВАРИАНТЫ МЕТОДА:
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 продолжить, продолжайте с тела.
Гораздо более:
источник
HTTP 1.0 (1994)
HTTP 1.1 (1996–2015 годы)
HTTP 1.1 является улучшением HTTP 1.0. Ниже перечислены четыре основных улучшения:
Эффективное использование IP-адресов, позволяя обслуживать несколько доменов с одного IP-адреса.
Более быстрый отклик, позволяя веб-браузеру отправлять несколько запросов через одно постоянное соединение.
источник
Для тривиальных приложений (например, время от времени извлекающих значение температуры из веб-термометра) HTTP 1.0 подходит как для клиента, так и для сервера. Вы можете написать простой HTTP-клиент или сервер HTTP 1.0 на основе примерно 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 - это последняя версия протокола передачи гипертекста, протокола приложений World Wide Web, который работает поверх набора протоколов TCP / IP в Интернете. По сравнению с HTTP 1.0, HTTP 1.1 обеспечивает более быструю доставку веб-страниц, чем исходный HTTP, и снижает веб-трафик.
Пример веб-трафика: например, если вы обращаетесь к серверу. В то же время так много пользователей обращаются к серверу за данными, тогда есть шанс повесить сервер. Это веб-трафик.
источник
HTTP 1.1 поставляется с заголовком узла в своей спецификации, в то время как HTTP 1.0 официально не имеет заголовка узла, но он не отказывается добавить его.
Заголовок хоста полезен, потому что он позволяет клиенту направлять сообщение через прокси-сервер, и основное различие между версиями HTTP 1.0 и 1.1:
источник
По сравнению с 1.0, 1.1 уменьшает веб-трафик
источник