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

В протоколе SIP определено четыре вида заголовков (Таблица 7.1):

• Общие заголовки, присутствующие в запросах и ответах;

• Заголовки содержания, переносят информацию о размере тела сообщения или об источнике запроса (начинаются со слова «Content»);

• Заголовки запросов, передающие дополнительную информацию о запросе;

• Заголовки ответов, передающие дополнительную информацию об ответе.

Заголовок содержит название, за которым, отделенное двоеточием, следует значение заголовка. В поле значения содержатся передаваемые данные. Следует отметить, что если сервер принимает сообщения, заголовки которых ему не известны, то эти заголовки игнорируются.

Ниже представлены наиболее часто используемые заголовки.

Заголовок Call-ID - уникальный идентификатор сеанса связи или всех регистрации отдельного клиента, он подобен метке соединения (call reference) в сигнализации DSS-1 [7]. Значение идентификатору присваивает сторона, которая инициирует вызов. Заголовок Call-ID состоит из буквенно-числового значения и имени рабочей станции, которая присвоила значение этому идентификатору. Между ними должен стоять символ @, например, 2345call@rts.loniis.ru Возможна следующая ситуация: к одной мультимедийной конференции относятся несколько соединений, тогда все они будут иметь разные идентификаторы Call-ID.

Заголовок То - определяет адресата. Кроме SIP-адреса здесь может стоять параметр «tag» для идентификации конкретного терминала пользователя (например, домашнего, рабочего или сотового телефона) в том случае, когда все его терминалы зарегистрированы под одним адресом SIP URL. Запрос может множиться и достичь разных терминалов пользователя; чтобы их различать, необходимо иметь метку tag. Ее вставляет в заголовок терминальное оборудование вызванного пользователя при ответе на принятый запрос.

Если необходим визуальный вывод имени пользователя, например, на дисплей, то имя пользователя также размещается в поле То.

Заголовок From - идентифицирует отправителя запроса; по структуре аналогичен полю То.

 

Таблица 7.1 Виды заголовков сообщений SIP

 

Общие заголовки Заголовки содержания Заголовки запросов Заголовки ответов
Call-ID (идентификатор сеанса связи) Content-Encoding (кодирование тела сообщения) Accept (принимается) Allow (разрешение)
Contact (контактировать) Content-Length (размер тела сообщения) Accent-Encoding (метод кодирования поддерживается) Proxy-Authenticate (подтверждение подлинности прокси-сервера)
CSeq (последовательность) Content-Type (тип содержимого) Accent-Language (язык поддерживается) Retro-After (повторить через некоторое время)
Date (Дата)   Authorization (авторизация) Server (сервер)
Encryption (шифрование)   Unsupported (не поддерживается)
Expires (срабатывание таймера) Hide (скрыть) Warning (предупреждение)
From (источник запроса) Max-Forwards (максимальное количество переадресаций) VWVW-Authenticate (подтверждение подлинности WWW-сервера)
Record-Route (запись маршрута) Organization (организация)  
Timestamp (метка времени) Priority (приоритет)
То (Адресат) Proxy-Authorization (авторизация прокси-сервера)
Via (через) Proxy-Require (требуется прокси-сервер)
  Route (маршрут)
Require (требуется)
Response-Key (ключ кодирования ответа)
Subject (тема)
User-Agent (агент пользователя)

 

Заголовок CSeq - уникальный идентификатор запроса, относящегося к одному соединению. Он служит для корреляции запроса с ответом на него. Заголовок состоит из двух частей: натурального числа из диапазона от 1 до 232 и типа запроса. Сервер должен проверять значение CSeq в каждом принимаемом запросе и считать запрос новым, если значение CSeq больше предыдущего. Пример заголовка: CSeq: 2 INVITE.

Заголовок Via служит для того, чтобы избежать ситуации, в которых запрос пойдет по замкнутому пути, а также для тех случаев, когда необходимо, чтобы запросы и ответы обязательно проходили по одному и тому же пути (например, в случае использования межсетевого экрана - firewall). Дело в том, что запрос может проходить через несколько прокси-сервером, каждый из которых принимает, обрабатывает и переправляет запрос к следующему прокси-серверу, и так до тех пор, пока запрос не достигнет адресата. Таким образом, в заголовке Via указывается весь путь, пройденный запросом: каждый прокси-сервер добавляет поле со своим адресом. При необходимости (например, чтобы обеспечить секретность) действительный адрес может скрываться.

Например, запрос на своем пути обрабатывался двумя прок си-серверами: сначала сервером loniis.ru, потом sip.telecom.com. Тогда в запросе появятся следующие поля:

Via: SIP/2.0/UDP sip.telecom.com:5060;branch=721 e418c4.1 Via: SIP/2.0/UDP loniis.ru: 5060,

где параметр «branch» означает, что на сервере sip.telecom.com запрос был размножен и направлен одновременно по разным направлениям, и наш запрос был передан по направлению, которое идентифицируется следующим образом: 721е418c4.1.

Содержимое полей Via копируется из запросов в ответы на них, и каждый сервер, через который проходит ответ, удаляет поле Via со своим именем.

В заголовок Record-route прокси-сервер вписывает свой адрес - SIP URL, - если хочет, чтобы последующие запросы прошли через него.

Заголовок Content-Type определяет формат описания сеанса связи. Само описание сеанса, например, в формате протокола SDP, включается в тело сообщения.

Заголовок Content-Length указывает размер тела сообщения.

После того, как мы рассмотрели наиболее часто встречающиеся заголовки сообщений протокола SIP, следует обратить внимание на то, что запросы и ответы на них могут включать в себя лишь определенный набор заголовков (Таблица 7.2). Здесь опять буква «М» означает обязательное присутствие заголовка в сообщении, буква «О» -необязательное присутствие, буква «F» запрещает присутствие заголовка.

 

Таблица 7.2 Связь заголовков с запросами и ответами протокола SIPv2.Q

 

Название заголовка Место использования заголовка АСК BYE CAN INV OPT REG
Accept Заголовок в запросах F F F
Accept Заголовок в ответе 415 F F F
Accent-Encoding Заголовок в запросах F F F
Accent-Encoding Заголовок в ответе 415 F F F
Accent-Language Заголовок в запросах F
Accent-Language Заголовок в ответе 415 F
Allow Заголовок в ответе 200 F F F F М F
Allow Заголовок в ответе 405
Authorization Заголовок в запросах
Call-ID Общий заголовок - копируется из запросов в ответы М М М М М М
Contact Заголовок в запросах F F
Contact Заголовок в ответах 1хх F F F F
Contact Заголовок в ответах 2хх F F F
Contact Заголовок в ответах Зхх F F
Contact Заголовок в ответе 485 F F
Content-Encoding Заголовки содержания F F
Content-Length Заголовки содержания F F
Content-Type Заголовки содержания * F F * * *
Cseq Общий заголовок - копируется из запросов в ответы М М М М М М
Date Заголовок в ответах
Encryption Заголовок в ответах
Expires Заголовок в ответах F F F F
From Общий заголовок - копируется из запросов в ответы М М М М М М
Hide Заголовок в запросах
Max-Forwards Заголовок в запросах
Organization Общий заголовок F F F
Proxy-Authenticate Заголовок в ответе 407
Proxy-Authorization Заголовок в запросах
Proxy-Require Заголовок в запросах
Priority Заголовок в запросах F F F F F
Require Заголовок в запросах
Retry-After Заголовок в запросах F F F P F
Retry-After Заголовок в ответах 404, 480, 486, 503, 600 и 603
Response-Key Заголовок в запросах F
Record-Route Заголовок в запросах
Record-Route Заголовок в ответах 2хх
Route Заголовок в запросах
Server Заголовок в ответах
Subject Заголовок в запросах F F F F F
Timestamp Общий заголовок
To Общий заголовок - копируется из запросов в ответы М М М М М М
Unsupported Заголовок в ответе 420
User-Agent Общий заголовок
Via Общий заголовок - копируется из запросов в ответы М М М М М М
Warning Заголовок в ответах
WWW-Authenticate Заголовок в ответе 401

 

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