Кратко об основах SIP-протокола
10.01.2019 - vvuri - Reading time ~4 Minutes
SIP (Session Initiation Protocol)- протоколом обмена сигналами IP-телефонии, используемый для установки телефонных вызовов.
Основы протокола SDP
Протокол SDP (Session Description Protocol)
Перед тем как состоится голосовой или видео вызов, двум IP устройствам, использующим протокол SIP, необходимо договорится о таких параметрах вызова, как транспортные адреса, аудио/видео кодеки, порты и другие данные. Для этого и используется протокол SDP.
SDP- это не аудио/видео поток или медиа данные. Протокол предназначен для широкого использования в различных приложениях и протоколах связи, может использовать любые транспортные протоколы, например SIP или HTTP.
Протокол SDP можно разделить на три части. Первая часть, дает описания деталям сессии и называется «Session description» (Описание сессии), вторая часть называется «Time description» (Описание времени) и описывает временные параметры сессии. Третья часть называется «Media description» (Описание медиа параметров), описывает медиа данные, которые будут использоваться в будущем соединении. Ниже представлен синтаксис протокола SDP.
Session Description- Описание сессии
v= (protocol version) – информация о версии протокола
o= (owner/creator and session identification) – информация о создателе сессии и её ID
s= (session name) – название сессии
i= (session information)* – информация о сессии
u= (URI of description)* – URL адрес описания
e= (email address – contact detail)* – контактный email
p= (phone number – contact detail)* – контактный телефон
c= (connection information)* – информация о подключении, не обязательна если включена в media description
b= (session bandwidth information)* – информация о полосе пропускания
z= (time zone adjustments)* – корректировка часового пояса
k= (encryption key)* – ключ шифрования
a= (zero or more session attribute lines)* – дополнительные поля
Time description- Описание времени
t= (time the session is active) – время активности сессии
r= (repeat times)* – число повторений
Media description- Описание медиа параметров
m= (media description/ transport address) – описание медиа сессии и транспортный адрес
i= (media title)* – медиа заголовок
c= (connection information)* – информация о подключении, не обязательна если включена в session description
b= (bandwidth information)* – информация о пропускной способности
k= (encryption key)* – ключ шифрования
a= (zero or more media attribute lines)* – дополнительные поля
Поля отмеченные * – необязательные
Описание каждого поля:
Session Description
v=
– указывает версию Session Description Protocol. В RFC 4566 указана пока только одна версия 0.o=
Информация об организаторе сессии и её ID- Имя пользователя. Поле должно не содержать пробелов
- Числовая строка – уникальный идентификатор сессии
- Числовая строка – номер версии
- Текстовая строка – тип сетевого соединения. IN – интернет
- Текстовая строка – адрес организатора сессии. IP4 или IP6
- Адрес, устройства, организатора сессии. Может быть доменным именем или IP адресом
s=
Имя сессии, должно быть уникальным в рамках одной сессии. Данное поле должно быть заполненоi=
Может быть указано только одно описание сессии, с уровнем “i”. Поле “i” может быть указано в разделе Session Description или Media Description.
Поле предназначено для маркировки медиа потоков
u=
URI (Uniform Resource Identifier) указывается в поле “u”, дополнительные данные для описания сессииe=
Поле определяет контактную информацию для лица, ответственного за конференциюp=
Поле определяет контактную информацию для лица, ответственного за конференциюc=
Информация о соединении, может быть описана в Session description или Media Description- Текстовая строка, описывающая тип сетевого соединения. IN – интернет
- Текстовая строка, указывающая на тип IP адреса, указанного как адреса подключения. IP4 или IP6.
- Мультикастовый адрес с TTL. 224.2.36.42⁄127
b=:
Ширина полосы пропускания может быть указана для всей сессии. Так может указываться для отдельной медиа сессии- Два типа: CT – полоса пропускания для конференции; AS – полоса пропускания приложения
- указывает полосу пропускания в Кбит/с
z=
в этом поле указывается смещение времениk=:
Если канал зашифрованный и доверительный, то SDP может переносить ключи шифрования. Ключ может быть указан для всей сессии или для каждой медиа сессии отдельно- В этом поле указывается метод шифрования или механизм получения ключей из внешних источников
- Ключ шифрования
a=:
Атрибуты сессии могут быть указаны как для уровня сессии, так и для уровня медиа данных. Атрибуты, указанные для уровня сессии, применяются, например, для создания конференции
Time Description
t=:
Данное поле указывает начальное и конечное время для сессии.Specifies the start and stop times for a sessionr=
Если сессию необходимо повторить через некоторое время, то используется поле “r”. По умолчанию, значение для данного поля указывается в секундах, но для компактности записи можно использовать такие параметры, как день, час, минута, например, r=6d 2h 14m
Media Description
m= /
Это поле используется для описания медиа данных, таких как: поток данных, порт для передачи данных, протокол для потоковой передачи или кодек.- Данное поле определяет медиа поток: аудио, видео, текст и т.д.
- Данное поле определяет порт, на который будет передаваться медиа поток. Может быть указано несколько портов
- Данное поле определяет протокол передачи медиа данных, например, RTP (real time protocol)
- Данное поле определяет формат медиа данных, в каком кодеке будут передаваться данные, например, PCMU, GSM и т.д.