Некоторые детали SIP
В первоначальной версии протокола SIP (RFC 3261) было определено шесть типов запросов. С помощью запросов клиент сообщает о текущем местоположении, приглашает пользователей принять участие в сеансах связи, модифицирует уже установленные сеансы, завершает их и т. д. Тип запроса указывается в стартовой строке.
INVITE — Приглашает пользователя к сеансу связи. Обычно содержит SDP-описание сеанса.
АСК — Подтверждает приём ответа на запрос INVITE.
BYE — Завершает сеанс связи. Может быть передан любой из сторон, участвующих в сеансе.
CANCEL — Отменяет обработку ранее переданных запросов, но не влияет на запросы, которые уже закончили обрабатываться.
REGISTER — Переносит адресную информацию для регистрации пользователя на сервере определения местоположения.
OPTIONS — Запрашивает информацию о функциональных возможностях сервера.
В процессе развития, в протокол было добавлено еще несколько типов запросов, которые дополнили его функциональность:
PRACK — временное подтверждение (RFC 3262)
SUBSCRIBE — подписка на получение уведомлений о событии (RFC 3265)
NOTIFY — уведомление подписчика о событии (RFC 3265)
PUBLISH — публикация события на сервере (RFC 3903)
INFO — передача информации, которая не изменяет состояние сессии (RFC 2976)
REFER — запрос получателя о передаче запроса SIP (RFC 3515)
MESSAGE — передача мгновенных сообщений средствами SIP (RFC 3428)
UPDATE — модификация состояния сессии без изменения состояния диалога (RFC 3311)
Ответы на запросы сообщают о результате обработки запроса либо передают запрошенную информацию. Структуру ответов и их виды протокол SIP унаследовал от протокола HTTP. Определено шесть типов ответов, несущих разную функциональную нагрузку. Тип ответа кодируется трёхзначным числом, самой важной является первая цифра, которая определяет класс ответа:
1ХХ — Информационные ответы; показывают, что запрос находится в стадии обработки. Наиболее распространённые ответы данного типа — 100 Trying, 180 Ringing, 183 Session Progress.
100 Trying. Зарос обрабатывается. Проверка возможности установки соединения.
180 Ringing. Абонент вызывается, вызывающему воспроизводятся длинные гудки.
183 Session Progress. Абонент вызывается/вызов транслируется, медиа канал организован и вызывающему можно и следует начать воспроизводить в сценарии звуковые файлы. Тарификация еще не производится.
2ХХ — Финальные ответы, означающие, что запрос был успешно обработан. В настоящее время в данном типе определены только два ответа — 200 OK и 202 Accepted.
3ХХ — Финальные ответы, информирующие оборудование вызывающего пользователя о новом местоположении вызываемого пользователя, например, ответ 302 Moved Temporary.
4ХХ — Финальные ответы, информирующие об ошибке при обработке или выполнении запроса, например, 403 Forbidden или классический для протокола HTTP ответ 404 Not Found.
5ХХ — Финальные ответы, информирующие о том, что запрос не может быть обработан из-за отказа сервера, 500 Server Internal Error.
6ХХ — Финальные ответы, информирующие о том, что соединение с вызываемым пользователем установить невозможно, например, ответ 603 Decline означает, что вызываемый пользователь отклонил входящий вызов.
Алгоритмы установления соединения. Протокол SIP является управляющим протоколом для установления, модификации и разрыва соединения, ориентированного на передачу потоковых данных. Параметры передачи медиа-потоков описываются в протоколе SIP посредством SDP (протокол описания сессии). Потоковые медиа-данные могут передаваться различными средствами, среди которых наиболее популярны транспортные протоколы RTP и RTCP. Протокол SIP определяет 3 основных сценария установления соединения: с участием прокси-сервера, с участием сервера переадресации и непосредственно между пользователями. Сценарии отличаются по тому, как осуществляется поиск и приглашение вызываемого пользователя. Основные алгоритмы установления соединения описаны в RFC 3665.
Пример сценария установления соединения:
Сервер Прокси
Алиса Перенаправления сервер 3 Борис
| | | |
| INVITE F1 | | |
|--------------->| | |
| 302 F2 | | |
|<---------------| | |
| ACK F3 | | |
|--------------->| | |
| INVITE F4 | |
|-------------------------------->| INVITE F5 |
| 100 F6 |--------------->|
|<--------------------------------| 180 F7 |
| 180 F8 |<---------------|
|<--------------------------------| |
| | 200 F9 |
| 200 F10 |<---------------|
|<--------------------------------| |
| ACK F11 | |
|-------------------------------->| ACK F12 |
| |--------------->|
| Двусторонняя передача RTP Media |
|<================================================>|
| | BYE F13 |
| BYE F14 |<---------------|
|<--------------------------------| |
| 200 F15 | |
|-------------------------------->| 200 F16 |
| |--------------->|
| | |
Документация разработана компанией Интелтелеком при поддержке Сахабутдинова А.Ж. 2012.