Протокол HTTP 1.1

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ЗАЧЕТНАЯ РАБОТА ПО ДИСЦИПЛИНЕ Информационно-вычислительные сети НА ТЕМУ Протокол HTTP 1.1 Работу выполнил Студент 5-го курса факультета Кибернетики группы ИО-1-97 Фроловичев Сергей Преподаватель Дешко И.П. Оглавление 1. Введение. 1. Назначение 1.3 Терминология. 2. Общее описание. 3. Параметры протокола. 3.1 Версия HTTP. 3.2 Универсальный Идентификатор Ресурса URI . 2.1 Общий синтаксис. 2.2 HTTP URL. 2.3 Сравнение UR3.3 Форматы даты времени. 3.1 Полная дата. 3.2 Разность секунд delta seconds . 3.4 Кодовые таблицы character sets . 3.5 Кодирования содержимого content codings . 3.6 Кодирования передачи Transfer Codings . 3.7 Медиатипы Media Types . 7.1 Канонизация и предопределенные значения типа text. 7.2 Типы Multipart. 3.8 Маркеры продуктов Product Tokens . 3.9 Величины качества Quality Values . 3.10 Метки языков Language Tags . 3.11 Метки объектов Entity Tags . 3.12 Единицы измерения диапазонов Range Units . 4. HTTP сообщение HTTP Message . 4.1 Типы сообщений. 4.2 Заголовки сообщений. 22 4.3 Тело cообщения. 4.4 Длина сообщения. 4.5 Общие поля заголовка. 5. Запрос Request . 5.1 Строка запроса Request-Line . 1.1 Метод Method . 25 5.1.2 URI запроса Request-URI . 5.2 Ресурс, идентифицируемый запросом. 5.3 Поля заголовка запроса. 6 Ответ Response . 6.1 Строка состояния Status-Line . 28 6.1.1 Код состояния и поясняющая фраза. 6.2 Поля заголовка ответа. 7 Объект Entity . 7.1 Поля заголовка объекта. 7.2 Тело объекта. 31 7.2.1 Тип. 2.2 Длина. 8 Соединения Connections . 8.1 Постоянные соединения Persistent Connections . 32 8.1.1 Цель. 1.2 Общее описание. 2.1 Обсуждение Negotiation . 2.2 Конвейерная обработка Pipelining . 1.3 Прокси-сервера Proxy Servers . 1.4 Практические соображения. 8.2 Требования к передаче сообщений. 9 Определения методов. 9.1 Безопасные и идемпотентные методы. 1.1 Безопасные методы. 1.2 Идемпотентные методы. 9.2 OPTIONS. 37 9.3 GET. 38 9.4 HEAD. 38 9.5 POST. 38 9.6 PUT. 9.7 DELETE. 9.8 TRACE. 10 Определение кодов состояния. 41 10.1 1xx - Информационные коды. 100 Продолжать, Continue. 101 Переключение протоколов, Switching Protocols 42 10.2 2xx - Успешные коды. 42 10.2.1 200 OK. 201 Создан, Created. 202 Принято, Accepted. 43 10.2.4 203 Не авторская информация, Non-Authoritative Information. 43 10.2.5 204 Нет содержимого, No Content. 205 Сбросить содержимое, Reset Content. 206 Частичное содержимое, Partial Content. 44 10.3 3xx - Перенаправление. 300 Множественный выбор, Multiple Choices. 301 Постоянно перемещен, Moved Permanently. 302 Временно перемещен, Moved Temporarily. 45 10.3.4 303 Смотреть другой, See Other. 45 10.3.5 304 Не модифицирован, Not Modified. 305 Используйте прокси-сервер, Use Proxy. 46 10.4 4xx - Коды ошибок клиента. 400 Испорченный Запрос, Bad Request. 401 Несанкционированно, Unauthorized. 402 Требуется оплата, Payment Required. 403 Запрещено, Forbidden. 47 10.4.5 404 Не найден, Not Found. 405 Метод не допустим, Method Not Allowed. 48 10.4.7 406 Не приемлем, Not Acceptable. 407 Требуется установление подлинности через прокси-сервер, Proxy Authentication Required. 408 Истекло время ожидания запроса, Request Timeout. 409 Конфликт, Conflict. 410 Удален, Gone. 411 Требуется длина, Length Required. 412 Предусловие неверно, Precondition Failed. 413 Объект запроса слишком большой, Request Entity Too Large. 50 10.4.15 414 URI запроса слишком длинный, Request-URI Too Long. 415 Неподдерживаемый медиатип, Unsupported Media Type. 50 10.5 5xx - Коды ошибок сервера. 500 Internal Server Error. 51 10.5.2 501 Не реализовано, Not Implemented. 502 Ошибка шлюза, Bad Gateway. 51 10.5.4 503 Сервис недоступен, Service Unavailable. 504 Истекло время ожидания от шлюза, Gateway Timeout. 51 10.5.6 505 Не поддерживаемая версия HTTP, HTTP Version Not Supported. 11 Установление подлинности доступа Access Authentication . 11.1 Базовая схема установления подлинности Basic Authentication Scheme . 11.2 Обзорная схема установления подлинности Digest Authentication Scheme 1 . 13 Кэширование в HTTP. 13.1 Общая информация о кэшировании. 1.1 Правильность кэша. 1.2 Предупреждения. 1.3 Механизмы управления кэшем Cache-control Mechanisms . 1.4 Явные предупреждения агента пользователя. 1.5 Исключения из правил и предупреждений. 1.6 Контролируемое клиентом поведение. 13.2 Модель устаревания. 2.1 Устаревание, указанное сервером. 2.2 Эвристическое устаревание. 2.3 Вычисление возраста. 2.4 Вычисление устаревания. 2.5 Устранение противоречий в значениях устаревания. 2.6 Устранение противоречий между несколькими ответами. 13.3 Модель проверки достоверности validation model . 63 Библиографический список 1. Протокол передачи гипертекста HTTP - протокол прикладного уровня для распределенных, совместных, многосредных информационных систем. HTTP используется в World Wide Web WWW начиная с 1990 года. Первой версией HTTP, известной как HTTP 0.9, был простой протокол для передачи необработанных данных через Интернет.

По определению RFC 1945 HTTP 1.0 был улучшением этого протокола, допускал MIME-подобный формат сообщений, содержащий метаинформацию о передаваемых данных и имел модифицированную семантику запросов ответов.

Однако HTTP 1.0 недостаточно учитывал особенности работы с иерархическими прокси-серверами hierarchical proxies, кэшированием, постоянными соединениями, и виртуальными хостами virtual hosts. Кроме того, быстрый рост числа не полностью совместимых с протоколом HTTP 1.0 приложений, потребовал введения новой версии протокола, в которой были бы заложены дополнительные возможности, которые помогли бы привести эти приложения к единому стандарту.

Список RFC относящийся к рассмотренным в данной работе вопросам, приведен в разделе Библиографический список . 1.1. НазначениеПротокол HTTP 1.1 содержит более строгие требования, чем HTTP 1.0, гарантирующие более надежную работу.

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

HTTP предоставляет открытый open-ended набор методов, которые основаны на системе ссылок, которые обеспечиваются URI Универсальными Идентификаторами Ресурсов. URI могут идентифицировать как расположение URL , так и имя URN ресурса, к которому применяется данный метод.

Сообщения передаются в формате, подобному используемому электронной почтой согласно определениям MIME Многоцелевых Расширений Электронной Почты. HTTP также используется как обобщенный протокол связи между агентами пользователей user agents и прокси-серверами шлюзами proxies gateways или другими Интернет-сервисами, включая такие как SMTP, NNTP, FTP, Gopher и WAIS. Таким образом, HTTP определяет основы многосредного доступа к ресурсам для разнообразных приложений. 1.3

Терминология

Информация, передаваемая в качестве полезной нагрузки запроса или отве... Ресурс может иметь одно, или несколько представлений, связанных с ним ... Приложение, которое слушает соединения, принимает запросы на обслужива... Возраст ответа - время, прошедшее с момента отсылки, или успешной пров... Говорят, что кэш ведет себя семантически прозрачным образом в отношени...

Параметры протокола

Параметры протокола. Версия HTTP сообщения обозначается полем HTTP-version в первой строке ... Таким образом, HTTP 2.4 - более низкая версия, чем HTTP 2.13, которая ... Использование этого номера версии указывает, что посылающее приложение... Приложения, реализующие прокси-сервера и шлюзы, должны обрабатывать пр...

Универсальный Идентификатор Ресурса URI

Универсальный Идентификатор Ресурса URI. URI в HTTP могут представляться в абсолютной форме absolute URI или от... Нормальная запись Бекуса-Наура включает национальные символы, недозвол... Серверы должны обрабатывать URI любого ресурса, любой длинны, который ... Http схема используется для доступа к сетевым ресурсам при помощи прот...

Сравнение UR

I.При сравнении двух URI, чтобы решить соответствуют ли они друг другу... Например следующие три URI эквивалентны http abc.com 80 smith home.htm... Сравнение UR.

Полная дата

HTTP приложения исторически допускали три различных формата для предст... Второй формат находится в общем пользовании, но основан на устаревшем ... Прис оздании приложений, желательно, чтобы оно умело воспринимать знач... В первых двух форматах данный факт указывается включением трехсимвольн... Клиентам и серверам не требуется использовать эти форматы для представ...

Разность секунд delta seconds

Разность секунд delta seconds .Некоторые поля HTTP заголовка позволяют указывать значения времени в виде целого числа секунд, представленного в десятичной форме, которые должны пройти с того момента, как сообщение было получено. delta-seconds 1 DIGIT 3.4

Кодовые таблицы character sets

HTTP использует то же самое определение термина кодовая таблица, котор... 3.5 . Однако определение, связанное с именем кодовой таблицы MIME должно пол... В частности использование внешней информации профилирования для опреде... Кодовые таблицы character sets.

Кодирования содержимого content codings

Кодирования содержимого content codings. content-coding token Все значения кодирования содержимого content-codi... Для совместимости с предыдущими реализациями HTTP, приложения должны р... deflate Формат zlib, определенный в 1950, в комбинации с механизмом сж... Новая лексема значения кодирования содержимого content-coding должна б...

Кодирования передачи Transfer Codings

transfer-coding chunked transfer-extension transfer-extension token Вс... 3.7 . Серверу, который получил тело объекта со значением кодирования передач... Значения кодирования передачи используются для указания преобразования... Оно отличается от кодирования содержимого тем, что кодирование передач...

Медиатипы Media Types

HTTP использует МедиаТипы Интернета Internet Media Types в полях загол... parameter attribute value attribute token value token quoted-string Ти... При посылке данных к таким HTTP приложениям реализации должны использо... Значения медиатипов регистрируются Internet Assigned Number Authority ... Процесс регистрации медиатипа определен в RFC 2048.

Канонизация и предопределенные значения типа text

Медиатипы Интернет зарегистрированы в канонической форме. В общем случ... В канонической форме медиаподтипы типа text используют CRLF в качестве... HTTP ослабляет это требование и позволяет передавать текст размеченный... Если тело объекта кодируется при помощи Content-Encoding, то основные ... К сожалению, некоторые старые HTTP 1.0 клиенты не работали правильно с...

Типы Multipart

Вообще говоря, HTTP агенту пользователя належит действовать так же как... Тип multipart form-data был специально определен для передачи данных ф... 3.8 . В HTTP части тела body-parts типа multipart могут содержать поля загол... MIME предусматривает ряд типов multipart - формирующих пакет из одного...

Маркеры продуктов Product Tokens

В соответствии с соглашением, подпрограммы перечисляются в порядке их ... Маркеры продуктов используются, чтобы обеспечить коммуникационным прил... Маркеры продуктов Product Tokens. 3.9 . product token product-version product-version token Примеры User-Agent...

Величины качества Quality Values

3.10 . qvalue 0 . Величины качества Quality Values. HTTP 1.1 приложения не должны генерировать более трех цифр после десят... HTTP использует короткие числа с плавающей точкой для указания относит...

Метки языков Language Tags

Например метки содержат en, en-US, en-cockney, i-cherokee, x-pig-latin... Последние три метки из вышеперечисленных - не зарегистрированные метки... То есть, метка языка состоит из одной или нескольких частей метка перв... Метки языков Language Tags. 3.11 .

Метки объектов Entity Tags

entity- tag weak opaque-tag weak W opaque-tag quoted-string Сильная ме... Метка объекта состоит из непрозрачной строки, заключенной в кавычки op... Слабая метка объекта может использоваться только для слабого сравнения... Метки объектов Entity Tags. 3.12 .

Единицы измерения диапазонов Range Units

Объект может быть разбит на части соответственно различным структурным... HTTP 1.1 позволяет клиенту запрашивать только часть объекта. HTTP 1.1 ... range-unit bytes-unit other-range-unit bytes-unit bytes other-range-un... . Единицы измерения диапазонов Range Units.

HTTP сообщение HTTP Message

HTTP сообщение HTTP Message .4.1

Типы сообщений

generic-message start-line message-header CRLF message-body start-line... HTTP сообщения делятся на запросы клиента серверу и ответы сервера кли... 4.2 . Типы сообщений. Оба типа сообщений выглядят следующим образом сначала идет начальная с...

Заголовки сообщений

4.3 . Должно быть возможно объединить несколько таких полей заголовка в одну... Приложениям следует придерживаться общей формы common form при генерац... Поля заголовков HTTP, которые включают поля общих заголовков general-h... Поля заголовка могут занимать несколько строк. При этом каждая следующ...

Тело cообщения

Тело HTTP сообщения message-body, если оно присутствует, используется ... message-body entity-body entity-body закодированно согласно Transfer-E... Включать или не включать тело сообщения message-body в сообщение ответ... Никакие ответы с информационными кодами состояния 1xx, кодом 204 Нет с... Все остальные ответы содержат тело сообщения, даже если оно имеет нуле...

Длина сообщения

Если поступило сообщение с полем Content-Length и закодированное с при... Request-Line Method SP Request-URI SP HTTP-Version CRLF 5.1.1 . Любое сообщение ответа, которое не должно включать тело сообщения mess... 4.5 Общие поля заголовка. Если поле заголовка Content-Length присутствует, то его значение предс...

Метод Method

Наиболее общая форма Request-URI используется для идентификации ресурс... Правило ничто не перезаписывать предохраняет прокси-сервера от изменен... 2. Если Request-URI - не absoluteURI, а запрос содержит поле заголовка Ho... request-header Accept Accept-Charset Accept-Encoding Accept-Language A...

Код состояния и поясняющая фраза

Элемент код состояния Status-Code - это целочисленный трехразрядный ко... В таких случаях агентам пользователя следует представить пользователю ... 6.2 Поля заголовка ответа. Поля заголовка ответа response-header fields позволяют серверу передав... Сообщения запросов и ответов могут передать объект, если это не запрещ...

Соединения Connections

Соединения Connections .8.1

Постоянные соединения Persistent Connections

Постоянные соединения Persistent Connections. До введения в протокол постоянных соединений для запроса каждого URL у... Конвейерная обработка позволяет клиенту делать несколько запросов не о... 8.1.2 Общее описание. Значительное отличие HTTP 1.1 от ранних версий HTTP состоит в том, что...

Обсуждение Negotiation

В случае, если клиент не хочет поддерживать соединение для последующих... Если клиент или сервер посылает лексему закрытия соединения close в за... HTTP 1.1 клиент долженждать закрытие соединения, но должен держать его... 8.1.2.2 . HTTP 1.1 сервер в праве считать, что HTTP 1.1 клиент не поддерживает п...

Конвейерная обработка Pipelining

Конвейерная обработка Pipelining. 8.1.3 . Если клиент производит такой повтор, он не должен производить конвейер... Сервер должен послать ответы на эти запросы в том же самом порядке, в ... Клиент, который поддерживает постоянные соединения умеет производить к...

Прокси-сервера Proxy Servers

Прокси-сервера Proxy Servers .Очень важно, чтобы прокси-сервера правильно реализовывали свойства полей заголовка Connection.

Прокси-сервер должен сообщать о постоянных соединениях отдельно своим клиентам и отдельно первоначальным серверам или другим прокси-серверам, которые с ним соединены.

Каждое постоянное соединение применяется только к одной транспортной связи. Прокси-сервер не должен устанавливать постоянных соединений с HTTP 1.0 клиентом. 8.1.4

Практические соображения

Как клиентам, так и серверам надлежит постоянно наблюдать за другой ст... 8.2 . Практические соображения. С точки зрения сервера, соединение закрывается, в то время как оно был... Прокси-сервера могут выставлять его значение более высоким, так как, в...

Требования к передаче сообщений

Если тело посылается с использованием кодирования по кускам chunked, т... 4. Инициализировать переменную R примерным временем передачи информации н... Инициировать новое соединение с сервером. 9 .

Определения методов

Определения методов. Множество общих для HTTP 1.1 методов приводится ниже. Хотя это множество может быть расширено, нельзя считать, что дополнительные методы имеют одиннаковую семантику, если они являются расширениями разных клиентов и серверов.

Поле заголовка запроса Host должно сопровождать все HTTP 1.1 запросы. 9.1

Безопасные и идемпотентные методы

Безопасные и идемпотентные методы . 9.1.1

Безопасные методы

Если код состояния ответа - 200, то ответу следует содержать любые пол... Различается также частичный GET partial GET , при котором сообщение за... Если ресурс был создан на первоначальном сервере, ответу следует содер... Если существующий ресурс модифицирован, то для указания успешного заве... Если ресурс не может быть создан или изменен для запрашиваемого URI Re...

Определение кодов состояния

10.3 3xx - Перенаправление. В идеале, объект ответа должен включать достаточно информации для поль... Сервер отказывается обрабатывать запрос, потому что объект запроса бол... Коды состояния, начинающиеся с цифры 5 указывают случаи, в которых сер... 10.5.5 504 Истекло время ожидания от шлюза, Gateway Timeout.

Установление подлинности доступа Access Authentication

Для установления подлинности доступа HTTP предоставляет простой механи... Для этого используется расширяемая, не чувствительная к регистру лексе... challenge auth-scheme 1 SP realm, auth-param realm realm realm-value r... Значение realm - это строка, вообще говоря назначенная первоначальным ... Если сервер не желает принимать рекомендации credentials, посланные в ...

Базовая схема установления подлинности Basic Authentication Scheme

Чтобы получить права доступа, клиент посылает идентификатор пользовате... После получения запроса на URI, находящийся в защищаемой области prote... Значению области realm следует быть непрерывной opaque строкой, котору... basic-credentials Basic SP basic-cookie basic-cookie base64-кодированн... Базовая схема установления подлинности основана на том, что агент поль...

Обзорная схема установления подлинности Digest Authentication Scheme

Обзорная схема установления подлинности Digest Authentication Scheme 1 . 13

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

Протокол HTTP 1.1 включает ряд элементов, предлагаемых как возможная р... Требования эффективности, доступности, и раздельного функционирования ... 2. 3. Возможности протокола, которые позволяют кэшу присоединять к ответам п...

Общая информация о кэшировании

Общая информация о кэшировании .13.1.1

Правильность кэша

4. Если кэш получает ответ либо весь ответ, либо ответ с кодом состояния ... Предупреждения - это предопределенные числа от 0 до 99. Эта спецификация определяет коды, и значения каждого определенного в н... К ответу могут быть присоединены несколько предупреждений как первонач...

Механизмы управления кэшем Cache-control Mechanisms

Механизмы управления кэшем Cache-control Mechanisms. Однако в некоторых случаях директивы управления кэшем Cache-Control яв... Мы используем для этой цели заголовок Cache-Control. Заголовок Cache-C... 13.1.4 . Основные механизмы кэша в HTTP 1.1 указанные сервером время устаревани...

Явные предупреждения агента пользователя

Явные предупреждения агента пользователя. Многие агенты пользователя д... 13.1.5 . Либо агент пользователя мог бы добавлять Cache-Control max-stale 3600 ... Пользователю следует явно запрашивать как непрозрачное поведение, так ... Так как протокол обычно позволяет агенту пользователя определить, прос...

Исключения из правил и предупреждений

Исключения из правил и предупреждений. В некоторых случаях, оператор к... По этой причине, кэшу не следует возвращать просроченный ответ, если к... 13.1.6 . Это решение не должно быть сделано с легкостью, но может быть необходи... Это позволяет программному обеспечению клиента предупреждать пользоват...

Контролируемое клиентом поведение

Клиент может также указать, что он примет ответы, просроченные до неко... Клиенты делают это используя несколько директив заголовка управления к... 13.2 . Это ослабляет ограничения на кэши, и, таким образом, может нарушить ог... Обе этих опции увеличивают ограничения на поведение кэшей, и, таким об...

Модель устаревания

Модель устаревания. HTTP кэширование работает лучше всего тогда, когда кэши могут полность... Это обычно сохраняет семантическую прозрачность, если время устаревани... Механизм устаревания применяется только к ответам, полученным из кэша ... Если первоначальный сервер хочет вынудить любой HTTP 1.1 кэш, независи...

Эвристическое устаревание

Эвристическое устаревание. Так как первоначальные серверы не всегда указывают явное время устарев... 13.2.3 .

Вычисление возраста

Вычисление возраста. Значение заголовка Age является оценкой отправителя количества времени... Возраст ответа может быть вычислен двумя совершенно независимыми спосо... Эта поправка применяется в каждом HTTP 1.1 кэше по пути следования отв... Если запрос, который привел к возвращенному значению Age, должно быть ...

Вычисление устаревания

Вычисление устаревания. Чтобы решить, является ли ответ свежим или просроченным, мы должны сра... Таким образом если в ответе присутствует max-age, то вычисления просты... Если это значение больше 24-х часов, то кэш должен присоединять Warnin... Типичная значение этой части могло бы быть 10 .

Устранение противоречий в значениях устаревания

Устранение противоречий в значениях устаревания. В том случае, когда значения устаревания назначены оптимистично, возмо... Если кэш имеет два свежих ответа на запрос одного и того же представле... 13.2.6 . Если клиент, выполняющий поиск, получает не непосредственный ответ на ...

Устранение противоречий между несколькими ответами

13.3 . Мы хотели бы, чтобы клиент использовал наиболее свежий ответ, даже есл... Когда клиент пытается повторно проверить достоверность вхождения кэша,... Серверы не должны полагаться на то, что клиенты способны выбрать между... Устранение противоречий между несколькими ответами. В силу того, что к...

Модель проверки достоверности validation model

Модель проверки достоверности validation model. Carpenter, Yakov Rekhter February 1996 Informational 1945 Hypertext Tr... Freed, J. Mogul, H. Franks, P.