SIP (Session Initiation Protocol, RFC 3261) — это текстовый протокол сигнализации запрос/ответ, который устанавливает, изменяет и завершает медиасессии в реальном времени, такие как голосовые и видеозвонки. Он определяет user agent, прокси, registrar и серверы перенаправления и несёт описание сессии (SDP), согласующее медиа, которыми будут обмениваться конечные точки.
Что такое SIP
SIP — это управляющий протокол прикладного уровня для создания и сопровождения мультимедийных сессий поверх IP — чаще всего голоса (VoIP), видео и обмена сообщениями. Он не несёт сами медиа; он согласует и управляет сессиями, а затем медиа текут отдельно поверх RTP. Его дизайн намеренно похож на HTTP: человекочитаемые текстовые сообщения, методы запросов и трёхзначные коды ответов и адресация на основе URI (sip:alice@example.com). Эта привычность и независимость от нижележащих медиа сделали SIP стандартным протоколом сигнализации для VoIP, SIP-транкинга и VoLTE/IMS.
Сущности SIP
SIP определяет небольшой набор логических ролей. User Agent — это конечная точка: он выступает как User Agent Client (UAC), когда отправляет запрос, и как User Agent Server (UAS), когда отвечает. Прокси маршрутизируют запросы к назначению и могут разветвлять их на несколько целей. Registrar записывает, где сейчас достижим пользователь (его Contact), через REGISTER. Сервер перенаправления возвращает альтернативное расположение, а не пересылает. Back-to-Back User Agent (B2BUA) завершает и заново инициирует вызов, находясь посередине как сигнализации, так и часто медиа — модель, используемая пограничными контроллерами сессий и УАТС.
| Сущность | Роль |
|---|---|
| UAC | User Agent Client — инициирует запрос |
| UAS | User Agent Server — отвечает на запрос |
| Прокси | Маршрутизирует/пересылает запросы, может разветвлять (fork) на несколько адресатов |
| Регистратор | Записывает текущий Contact пользователя (через REGISTER) |
| Сервер перенаправления | Возвращает альтернативное местоположение (3xx) вместо пересылки |
| B2BUA | Терминирует и заново инициирует вызов (SBC, PBX) |
Транзакции и диалоги
У SIP два уровня состояния. Транзакция — это один запрос и его ответы (например, INVITE и вызванные им 100/180/200), идентифицируемая параметром branch в Via. Диалог — это более долгое отношение точка-точка, которое представляет вызов, идентифицируемое сочетанием Call-ID, тега From и тега To. INVITE создаёт диалог; последующие внутридиалоговые запросы (re-INVITE, BYE) ссылаются на него. Понимание этого разделения важно для чтения потока SIP, потому что ответы и повторные передачи сопоставляются на уровне транзакции, тогда как вызов живёт на уровне диалога.
Транспорт и порты
SIP работает поверх UDP, TCP или TLS и (реже) SCTP или WebSocket для WebRTC. Порт IANA по умолчанию — 5060 для UDP и TCP и 5061 для SIP поверх TLS (сигнализируется URI sips:). UDP распространён из-за низких накладных расходов, но большие сообщения, превышающие MTU пути, должны использовать TCP, а любое развёртывание, пересекающее недоверенные сети, должно использовать TLS для сигнализации и SRTP для медиа. Транспорт выбирается на каждом переходе и может меняться вдоль пути.
| Транспорт | Порт по умолчанию | Примечания |
|---|---|---|
| UDP | 5060 | Низкие накладные расходы; переход на TCP при превышении MTU |
| TCP | 5060 | Для передачи больших сообщений и обеспечения надежной доставки |
| TLS (sips:) | 5061 | Зашифрованная сигнализация |
| WSS (WebSocket) | — | SIP через защищенный WebSocket для WebRTC |
Часто задаваемые вопросы
Для чего используется SIP?
SIP устанавливает, изменяет и завершает медиасессии в реальном времени поверх IP — голосовые и видеозвонки, SIP-транкинг между телефонными системами и операторами и управление вызовами VoLTE/IMS. Он обрабатывает сигнализацию; сам звук или видео идёт отдельно поверх RTP.
Похож ли SIP на HTTP?
По замыслу да. SIP заимствует у HTTP модель запрос/ответ, текстовые сообщения, синтаксис заголовков, трёхзначные коды статуса и адресацию URI. Семантика отличается — SIP управляет сессиями с сохранением состояния через прокси, и обе конечные точки могут инициировать запросы — но поверхность будет знакома любому, кто знает HTTP.
В чём разница между транзакцией и диалогом SIP?
Транзакция — это один запрос плюс его ответы, сопоставляемые по branch в Via. Диалог — это продолжающееся отношение вызова, идентифицируемое Call-ID плюс тегами From и To. Один диалог (вызов) содержит несколько транзакций — INVITE, а затем позже BYE.
Какой порт использует SIP?
Значение IANA по умолчанию — 5060 для SIP поверх UDP и TCP и 5061 для SIP поверх TLS. Медиа (RTP) используют отдельный, динамически согласуемый диапазон UDP-портов, описанный в SDP, а не сигнальный порт SIP.
Несёт ли SIP голос?
Нет. SIP несёт только сигнализацию — он согласует сессию и параметры медиа через SDP. Сам звук или видео идёт поверх RTP (или SRTP при шифровании) напрямую между конечными точками или через медиарелей, на портах, отдельных от сообщений SIP.
Технические характеристики источника
На этой странице представлены опубликованные стандарты, на которых они основаны. (Открывается в новой вкладке)