Протокол HTTP 1.0 против 1.1
может кто-нибудь дать мне краткий обзор различий между HTTP 1.0 и HTTP 1.1? Я провел некоторое время с обоими RFC, но не смог вытащить большую разницу между ними. Википедия говорит так:
HTTP / 1.1 (1997-1999)
текущая версия; постоянные соединения включены по умолчанию и хорошо работают с прокси. Также поддерживает конвейеризацию запросов, позволяя отправлять несколько запросов одновременно время, позволяющее серверу подготовиться к рабочей нагрузке и потенциально быстрее передать запрошенные ресурсы клиенту.
но для меня это ничего не значит. Я понимаю, что это несколько сложная тема, поэтому я не ожидаю полного ответа, но может ли кто-нибудь дать мне краткий обзор различий на немного более низком уровне?
Под этим я подразумеваю, что я ищу информацию, которую мне нужно было бы знать для реализации HTTP-сервера или приложения. Я в основном ища толчок в правильном направлении, чтобы я мог разобраться в этом самостоятельно.
8 ответов
поддержка прокси и поле Host:
HTTP 1.1 имеет обязательный заголовок Хоста по спецификации.
HTTP 1.0 официально не требует заголовка хоста, но не мешает добавить его, и многие приложения (прокси) ожидают увидеть заголовок Хоста независимо от версии протокола.
пример:
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-сервера. Он в основном используется для совместного использования ресурсов Cross Origin в интернете приложения.
кэширование:
HTTP 1.0 поддерживал кэширование через заголовок: If-Modified-Since.
HTTP 1.1 расширяет поддержку кэширования, используя что-то под названием "тег сущности". Если 2 ресурса одинаковы, то они будут иметь одинаковые теги сущностей.
протокол HTTP 1.1 и добавляет Если-без изменений-так, если матч, если-нет-матч с условными заголовками.
есть также дополнительные дополнения, связанные с кэшированием, такие как кэш-контроль заголовка.
100 ПРОДОЛЖИТЬ статус:
в HTTP/1.1 100 Continue есть новый код возврата. Это делается для предотвращения отправки клиентом большого запроса, когда клиент даже не уверен, может ли сервер обработать запрос или авторизован для обработки запроса. В этом случае клиент отправляет только заголовки, и сервер сообщит клиенту 100 дальше, идти вперед с телом.
много еще:
- дайджест-аутентификация и прокси-аутентификация
- дополнительные новые коды статуса
- Поблочного кодирования
- заголовке соединение
- расширенная поддержка сжатия
- многое другое.
HTTP HTTP 1.0 (1994)
- Он все еще используется
- может использоваться клиентом, который не может иметь дело с chunked (или сжатый) сервер отвечает
HTTP HTTP 1.1 (1996 - 2015)
- формализует многие расширения до версии 1.0
- поддерживает постоянные и конвейерные подключения
- поддерживает фрагментированные передачи, сжатие / декомпрессию
- поддерживает виртуальный хостинг (сервер с одним IP-адресом хостинг нескольких доменов)
- поддержка нескольких языков
- передачи байт-диапазона поддержек; полезный для возобновлять прерванные данные переводы
HTTP 1.1 является усовершенствованием HTTP 1.0. Ниже перечислены четыре основных улучшения:
эффективное использование IP-адресов, позволяя нескольким доменам быть подается с одного IP-адреса.
более быстрый ответ, позволяя веб-браузеру отправлять множественный запросы через одно постоянное соединение.
- более быстрый ответ для динамически-произведенных страниц, поддержкой для фрагментированное кодирование, которое позволяет отправлять ответ до его общая длина известна.
- более быстрый ответ и большие сбережения ширины полосы частот, путем добавление кэша поддержка.
для тривиальных приложений (например, спорадически извлекая значение температуры из термометра с веб-поддержкой) HTTP 1.0 подходит как для клиента, так и для сервера. Вы можете написать клиент или сервер 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-это последняя версия протокола передачи гипертекста, протокола Всемирного веб-приложения, который работает поверх набора протоколов TCP/IP в Интернете. по сравнению с HTTP 1.0, HTTP 1.1 обеспечивает более быструю доставку веб-страниц, чем исходный HTTP, и уменьшает веб-трафик.
пример веб-трафика: например, если вы обращаетесь к серверу. В то же время так много пользователей обращаются к серверу за данными, тогда есть шанс повесить сервер. Это Веб-трафик.