Параметры протокола. Версия HTTP — КиберПедия 

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Параметры протокола. Версия HTTP

2017-11-27 198
Параметры протокола. Версия HTTP 0.00 из 5.00 0 оценок
Заказать работу

HTTP использует схему нумерации "<major>.<minor>" для отображения версии протокола. Политика присвоения версии протоколу ориентирована на то, чтобы позволить отправителю указать формат сообщения и его емкость. Номер версии не меняется при добавлении компонент сообщения, которые не влияют на характер обмена.

Число <minor> увеличивается, когда в протокол внесены изменения, которые не изменили общий алгоритм разбора сообщений, но изменили семантику сообщений и добавили новые возможности отправителю. Число <major> увеличивается в случае, когда изменен формат протокольного сообщения.

Версия HTTP-сообщения указывается в поле HTTP-Version в первой строке сообщения.

HTTP Version = "http" "/" 1*DIGIT "." 1*DIGIT

Заметьте, что числа major и minor должны рассматриваться как независимые целые, так что каждое из них может быть увеличено за пределы одной цифры. Таким образом, HTTP/2.4 является более низкой версией, чем HTTP/2.13, которая, в свою очередь, ниже, чем HTTP/12.3. Начальные нули должны игнорироваться и не пересылаться.

Приложения, посылающие запросы или отклики так, как это определено в спецификации, должны включать HTTP-Version "HTTP/1.1". Использование этого номера версии указывает, что посылающее приложение совместимо с этой спецификацией.

Версия HTTP приложения является верхней, совместимость с которой гарантируется. Приложения проксисерверов и сетевых портов должны проявлять осторожность при переадресации сообщений с протокольной версией, отличной от поддерживаемой ими. Так как версия протокола указывает на возможности отправителя, прокси никогда не должны пересылать сообщения с версией больше, чем их собственная; если получено сообщение более высокой версии, прокси/порт должен либо понизить версию запроса, либо послать отклик об ошибке или переключиться в режим туннеля. Запросы с версией ниже, чем у прокси/порта, могут быть повышены при переадресации, при этом major часть версии сервера и запроса должны совпадать.

Преобразование между версиями может включать модификацию полей заголовка.

Универсальные идентификаторы ресурсов (URI)

URI известен под многими именами: WWW адрес, универсальный идентификатор документа (Universal Document Identifier), универсальный идентификатор ресурса (Universal Resource Identifier) и, наконец, универсальный локатор ресурса URL (Uniform Resource Locator) и универсальное имя ресурса (URN). Тождество URI и URL сомнительно, так как URL является частным случаем URI. Что касается HTTP, универсальный идентификатор ресурса представляет собой форматированную строку символов, которая идентифицирует имя, положение или какие-­то еще характеристики ресурса.

Общий синтаксис

URI в HTTP может быть представлен в абсолютной или относительной форме по отношению к некоторому известному базовому URI, в зависимости от контекста его использования. Эти две формы отличаются тем, что абсолютный URI всегда начинается с имени схемы, за которым следует двоеточие (например, HTTP: или FTP:).

URI = (absoluteURI | relativeURI) [ "#" фрагмент ]
AbsoluteURI = схема ":" *(uchar | reserved)
RelativeURI = net_path | abs_path | rel_path
net_path = "//" net_loc [ abs_path ]
abs_path = "/" rel_path
rel_path = [ проход ] [ ";" params ] [ "?" query ]
path = fsegment *("/" сегмент)
fsegment = 1*pchar
segment = *pchar
params = param *(";" param)
param = *(pchar | "/")
scheme = 1*(ALPHA | DIGIT | "+" | "" | ".")
net_loc = *(pchar | ";" | "?")
query = *(uchar | reserved)
fragment = *(uchar | reserved)
pchar = uchar | ":" | "@" | "&" | "=" | "+"
uchar = unreserved | escape
unreserved = ALPHA | DIGIT | safe | extra | national
escape = "%" HEX HEX
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+"
extra = "!" | "*" | "'" | "(" | ")" | ","
safe = "$" | "" | "_" | "."
unsafe = CTL | SP | <"> | "#" | "%" | "<" | ">"
national = <любой OCTET, исключая ALPHA, DIGIT,
зарезервированный, extra, safe и unsafe>

Более детальную информацию о синтаксисе и семантике URL можно найти в RFC-1738 [7.4] и [7.11]. Приведенные выше BNF включают в себя национальные символы, недопустимые в URL, как это специфицировано в RFC- 1738, так как серверам HTTP не запрещено использование любых наборов символов, допустимых в rel_path частях адресов; HTTPпрокси могут получить запросы URI, не определенные в рамках RFC-1738.

Протокол HTTP не устанавливает каких-­либо ограничений на длину URI. Серверы должны быть способны обрабатывать URI любых ресурсов, имеющих любую длину. Сервер должен выдать отклик 414 (Request-URI Too Long — URI запроса слишком длинен), если URI длиннее, чем может обработать сервер.

Серверы должны избегать использования URI длиннее 255 байт, так как некоторые старые клиенты или проксиприложения не могут корректно работать с такими длинами.

HTTP URL

Схема HTTP используется для локализации сетевых ресурсов с помощью протокола HTTP. Далее определены синтаксис и семантика HTTP URL, зависящие от схемы.

http_URL = "http:" "//" host [ ":" port ] [ abs_path ]
Host = <Легальное имя ЭВМ в Интернет или IP-адрес (в точечно­цифровой форме),
как это определено в разделе 2.1 RFC-1123>
Port = *DIGIT

Если номер порта не указан, предполагается порт 80. Семантика устроена так, что идентифицированный ресурс размещается на сервере, который ожидает TCP-соединения через порт данной ЭВМ, а Request-URI для ресурса находится в abs_path. Использование IP адресов в URL следует избегать всюду, где это возможно (см. RFC-1900 [7.24]). Если abs_path в URL отсутствует, он должен считаться равным "/", в случае, если он используется в качестве Request-URI для ресурса.

Сравнение URI

При сравнении двух URI с целью проверки их идентичности клиент должен использовать пооктетное сравнение с учетом регистра, в котором напечатаны символы. Допускаются следующие исключения:

номер порта не указан, тогда для данного URI берется значение по умолчанию;

сравнение имен ЭВМ и схем не должно быть чувствительным к строчным/прописным буквам;

Пустой abs_path эквивалентен abs_path "/".

Символы, отличные от типов reserved и unsafe, устанавливаются равными их эквивалентам в кодировке ""%" HEX HEX". Например, следующие три записи URI являются эквивалентными:

http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7Esmith/home.html


Поделиться с друзьями:

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.