Протокол передачи гипертекста HTTP/1.1
перевод: Orel Sokolov (aka vk.com/orelsokolov)
Статус этой заметки
Этот документ указывает стандарты track-простокола Интернета для интернет-сообщества, и требует дискуссий и предложений по улучшению. Пожалуйста, обратитесь к текущему изданию “Internet Official Protocol Standards” (STD 1) для стандартизации состояния и статуса протокола. На распространение этого документа нет ограничений.
Краткое содержание
Протокол передачи гипертекста (HTTP) является протоколом прикладного уровня для распределенных, совмещеных, гипермедиа информационных систем. Это общий, ничего точно не определяющий, протокол, который может быть использован для множества задач далеко не похожих на использование для гипертекста, таких как имена серверов и для распределенных систем управления объектами, через расширение методов запросов, коды ошибок и заголовки [47]. Чертой HTTP является типизация и согласование представления данных, позволяя системам быть построенными независимо от передаваемых данных.
HTTP используется по глобальной инициативе World-Wide Web начиная с 1990. Эта спецификация определяет протокол, названный “HTTP/1.1”, и это обновление для RFC 2068.
1
Введение
1.1
Назначение
Протокол передачи гипертекста (HTTP) является протоколом прикладного уровня для распределеных, совмещенных, гипермедиа информационных систем. HTTP используется по глобальной инициативе W3 с 1990. Первая версия протокола HTTP, названная как HTTP/0.9, была простым протоколом для необработанной передачи данных через интернет. HTTP/1.0, определенный RFC 1945 [6], улучшил протокол, позволив сообщениям быть в формате MIME-подобных сообщений, содержать метаинформацию о передаваемых данных и имел модифиированную семантику вопросов-ответов. Однако HTTP/1.0 не достаточно учитывает эффекты иерархии прокси, кэширование, потребность в устойчивом соединении, или виртуальных хостов. В дополнение, распространение частично-реализованных приложений на протоколе HTTP/1.0 потребовало сменить версию протокола, чтобы два взаимодействующих приложения могли определить реальные способности каждого.
Спецификация определяет протокол, названный как "HTTP/1.1”. Этот протокол включает больше строгих требований, чем HTTP/1.0 для того, чтобы гарантировать надежную реализацию его характеристик.
На практие информационные системы требуют больше функциональности, чем простое извлечение информации, включая поиск, обновление интерфейса, и составление примечаний. HTTP допускает неограниченные набор методов и заголовков, которые раскрывают назначение запроса [47].
Он основывается на порядке ссылок предоставляемых уникальным индентификатором ресурса (URI) [3], расположением (URL)[4], или именем (URN)[20], для индикации ресурса, к которому метод применен. Сообщения передаются в формате похожем на тот, который используется интернетовской почтой [9], как это определено Multipurpose Internet Mail Extensions (MIME) [7].
HTTP также используется как основной протокол для связи между user-агентами и прокси/шлюзами в другие интернет системы, включая поддержку тех с помощью протоколов SMTP [16], NNTP[13], FTP[18], Gopher[2], и WAIS[10]. В этом случае, HTTP разрешает базовый гипермедия доступ к ресурсам, доступным из разных приложений.
1.2
Требования
Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", и "OPTIONAL" в этом документе дожны интерпретироваться как описано в
RFC 2119 [34].
Реализация не является совместимой, если она не удовлетворяет одному или более MUST или REQUIRED уровням требований для реализуемого протокола. Реализация, которая удовлетворяет всем MUST или REQUIRED уровням и всем SHOULD уровням требований для этого протокола называется “безусловно совместимой”; та, что удовлетворяет всем MUST уровням требований, но не всем SHOULD уровням требований для этого протокола, называется “условно совместимой”.
1.3
Terminology