HTTP учебник
Начало работы с HTTP
Поиск…
замечания
Протокол передачи гипертекста (HTTP) использует модель клиент-запрос / сервер-ответ. HTTP - это протокол без учета состояния, что означает, что сервер не требует сохранения информации или статуса каждого пользователя в течение нескольких запросов. Однако по соображениям производительности и для предотвращения проблем с задержкой соединения TCP могут использоваться такие методы, как постоянные, параллельные или конвейерные соединения.
Версии
Версия | Заметки) | Предполагаемая дата выпуска |
---|---|---|
HTTP / 0.9 | «Как реализовано» | 1991-01-01 |
HTTP / 1.0 | Первая версия HTTP / 1.0, последняя версия, которая не попала в RFC | 1992-01-01 |
HTTP / 1.0 r1 | Первый официальный RFC для HTTP | 1996-05-01 |
HTTP / 1.1 | Усовершенствования в обработке подключений, поддержка виртуальных хостов на основе имен | 1997-01-01 |
HTTP / 1.1 r1 | Исправлено использование двуязычного ключевого слова, устранены возможные проблемы с кадрированием сообщений | 1999-06-01 |
HTTP / 1.1 r2 | Капитальный ремонт | 2014-06-01 |
HTTP / 2 | Первая спецификация для HTTP / 2 | 2015-05-01 |
HTTP-запросы и ответы
HTTP описывает, как HTTP-клиент, такой как веб-браузер, отправляет HTTP-запрос через сеть на HTTP-сервер, который затем отправляет HTTP-ответ клиенту.
HTTP-запрос обычно представляет собой запрос на онлайн-ресурс, такой как веб-страница или изображение, но может также содержать дополнительную информацию, такую как данные, введенные в форме. Ответ HTTP обычно представляет собой представление онлайн-ресурса, например веб-страницы или изображения.
HTTP / 1.0
HTTP / 1.0 был описан в RFC 1945 .
HTTP / 1.0 не имеет некоторых функций, которые сегодня де-факто требуются в Интернете, например заголовка Host
для виртуальных хостов.
Тем не менее, HTTP-клиенты и серверы по-прежнему заявляют, что они используют HTTP / 1.0, если они имеют неполную реализацию протокола HTTP / 1.1 (например, без кодированной передачи или конвейерной обработки), или совместимость считается более важной, чем производительность (например, при подключении к локальному прокси-серверу серверы).
GET / HTTP/1.0
User-Agent: example/1
HTTP/1.0 200 OK
Content-Type: text/plain
Hello
HTTP / 1.1
HTTP / 1.1 изначально был указан в 1999 году в RFC 2616 (протокол) и RFC 2617 (аутентификация), но эти документы устарели и не должны использоваться в качестве ссылки:
Не используйте RFC2616. Удалите его с жестких дисков, закладок и запишите (или ответственно переработайте) все распечатанные копии.
Современная спецификация HTTP / 1.1, которая соответствует тому, как HTTP реализуется сегодня, находится в новых RFC 723x:
- RFC 7230: Синтаксис сообщений и маршрутизация
- RFC 7231: семантика и контент
- RFC 7232: условные запросы
- RFC 7233: Запросы диапазона
- RFC 7234: Кэширование
- RFC 7235: аутентификация
HTTP / 1.1 добавил, среди прочих возможностей:
- chunked transfer encoding, что позволяет серверам надежно отправлять ответы неизвестного размера,
- постоянные соединения TCP / IP (которые были нестандартными расширениями в HTTP / 1.0),
- запросы диапазона, используемые для возобновления загрузки,
- кеш-контроль.
HTTP / 1.1 попытался ввести конвейерную обработку, что позволило HTTP-клиентам сократить время ожидания запроса-ответа, отправив сразу несколько запросов, не дожидаясь ответов. К сожалению, эта функция никогда не была правильно реализована в некоторых прокси-серверах, в результате чего конвейерные соединения удаляли или переупорядочивали ответы.
GET / HTTP/1.0
User-Agent: example/1
Host: example.com
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 6
Connection: close
Hello
HTTP / 2
HTTP / 2 ( RFC 7540 ) изменил проводной формат HTTP с простого текстового запроса и заголовков ответов на двоичный формат данных, отправленный в фреймах. HTTP / 2 поддерживает сжатие заголовков ( HPACK ).
Это уменьшило накладные расходы на запросы и позволило одновременно получать несколько ответов по одному соединению TCP / IP.
Несмотря на значительные изменения в формате данных, HTTP / 2 по-прежнему использует HTTP-заголовки, а запросы и ответы могут быть точно переведены между HTTP / 1.1 и 2.
HTTP / 0.9
Первая версия HTTP, которая появилась, составляет 0,9, которую часто называют « HTTP as Implemented ». Общим описанием 0.9 является «подсекция полного протокола HTTP [т.е. 1.0]». Однако это не позволяет проиллюстрировать несоответствие возможностей между 0.9 и 1.0.
Ни в запросах, ни в ответах в 0,9 заголовках функций. Запросы состоят из одной линии GET
завершенным CRLF, за которой следует пробел, за которым следует запрошенный URL ресурса. Ожидается, что ответы будут единым HTML-документом. Конец указанного документа отмечен удалением серверной части соединения. Нет никаких возможностей указывать на успех или неудачу операции. Единственное интерактивное свойство - это строка поиска, которая тесно связана с <isindex>
HTML.
Использование HTTP / 0.9 в настоящее время исключительно редко. Это время от времени видно на встроенных системах в качестве альтернативы tftp .