Формат заголовка |
|
Поля заголовков SIP-сообщений похожи на поля заголовков HTTP-сообщений по синтаксису и семантике. В частности, поля заголовков SIP соответствуют описаниям синтаксиса НТТР/1.1 для заголовков сообщений и правилам для расширения полей заголовков на несколько строк. Каждое поле заголовка состоит из имени поля, символа «двоеточие» и значения поля: Имя поля: значение поля Формальная грамматика полей заголовков позволяет использовать любое количество пробелов (SP) для отделения двоеточия. Однако на деле стараются избегать пробелов между названием поля и двоеточием и ограничиваются одним пробелом для отделения двоеточия от значения. В следующих примерах все четыре строки равнозначны, но последняя является общепринятой: Subject: уведомление Subject : уведомление Subject :уведомление Subject: уведомление Поля заголовков могут быть расширены на несколько строк, тогда каждая следующая строка отделяется пробелом (SP) или символом горизонтальной табуляции (НТ). Обрыв строки (line break) и пустое пространство (whitespase) расцениваются как один символ пробела SP. Следующие ниже поля эквивалентны. Subject: Я знаю, что ты здесь, подними трубку! Subject: Я знаю, что ты здесь, подними трубку! Порядок следования заголовков не имеет значения. Однако рекомендуется размещать поля заголовков, которые требуются для обработки прокси-серверу (Via, Route, Record-Route, Proxy-Require, Max-Forwards, Proxy-Authorization и другие), вначале сообщения, чтобы ускорить анализ и обработку. Важным является порядок следования ряда заголовков с одинаковыми именами полей, Последовательности полей заголовков с одинаковыми именами могут содержаться в сообщении только в том случае, если содержимое поля представляет собой список значений, разделенных запятой. Возможно объединить такие заголовки в одну пару «имя поля: значение поля» не изменяя семантики сообщения, а путем добавления каждого следующего значения к первому значению поля заголовка; при этом все значения должны быть отделены друг от друга запятой. Исключение составляют лишь заголовки WWW-Authenticate, Authorization, Proxy-Authenticate и Proxy-Authorization. Последовательности заголовков с такими именами тоже могут присутствовать в сообщении, но объединить их невозможно, поскольку грамматика этих заголовков не подчиняется общим для SIP-заголовков правилам. Программные реализации SIP должны быть способны обработать последовательности заголовков с одинаковым именами и со значениями, которые представлены как в форме последовательности, разделенной запятыми, так и в виде «одно значение на строку». Примеры последовательностей заголовков, приведеные ниже, правомерны и эквивалентны: Route: Subj ect: Уведомление Route: Route: Route: Route: Subject: Уведомление Route: Следующие же последовательности заголовков правомерны, но не равнозначны: Route: |
Route: Route: Формат значения заголовка зависит от имени заголовка. Это всегда будет последовательность текстовых октетов в кодировке UTF-8 или комбинация символьных фраз (tokens), пустого пространства (whitespace), разделительных знаков и строк, заключенных в кавычки. В большинстве существующих полей заголовков исполняется общий формат, который основан на последовательности пар имя параметра - значение параметра, разделенных знаком «точка с запятой»: Имя поля: значение поля; имя параметра-.яначение параметра; имя параметра=значение параметра Несмотря на то, что заголовок может содержать неограниченное число параметров, одно и то же имя параметра не может использоваться более одного раза. Для имен полей заголовков не имеет значения, в каком регистре они написаны. Значения полей, имена параметров и значения параметров также регист-ронезависимы, если это не определено по-иному в описании заголовка. Если не определено иначе, значения, заключенные в кавычки, являются зависимыми от регистра.
Contact: Warning:370 bamlex.com «Требуется большая пропускная способность» Warning:370 bamlex.com «ТРЕБУЕТСЯ БОЛЬШАЯ ПРОПУСКНАЯ СПОСОБНОСТЬ» Некоторые заголовки имеют смысл только в запросах или только в ответах. Они называются заголовками запроса и заголовками ответа, соответственно. Если заголовок появляется в сообщении не своей категории (например, заголовок запроса в ответе), то он игнорируется. При передаче сообщений протокола SIP, упакованных в сигнальные сообщения протокола UDP, существует вероятность того, что размер запроса или ответа превысит максимально допустимый для данной сети размер, что приведет к фрагментации пакета. Во избежание этого используется сжатый формат имен основных заголовков, подобно тому, как это делается в протоколе SDP. Ниже (табл. 3.1) приведен список таких заголовков. Сжатые имена заголовков
| |||||||||||||||||||||||||||||

