Битлента
Словарь терминов3 мин чтения·

SIP: как устанавливаются звонки в IP-телефонии

Что такое SIP: роль сигнализации, сообщения INVITE и BYE, регистрация телефона, порты 5060 и 5061, связка с RTP и типичные проблемы с NAT.

Кто кому звонит: задача сигнализации

SIP, Session Initiation Protocol, отвечает не за передачу голоса, а за то, чтобы звонок состоялся. Он находит вызываемого абонента, договаривается о параметрах, сообщает о том, что вызов идёт, принят или отклонён, и завершает соединение. Сам разговор передаётся другим протоколом, RTP, о котором написано отдельно. Такое разделение на сигнализацию и медиа лежит в основе IP-телефонии.

По стилю SIP похож на HTTP: текстовые запросы и ответы с числовыми кодами и заголовками. Адреса вида sip:имя@домен напоминают адрес электронной почты, поэтому работа с ними знакома каждому, кто видел почтовые заголовки.

Регистрация и сообщения вызова

Чтобы принимать звонки, телефон или программа регистрируется на сервере командой REGISTER: сообщает, что пользователь доступен по такому-то адресу, и периодически обновляет запись. Когда вы набираете номер, посылается INVITE с описанием возможностей: какие кодеки поддерживаются, на какой адрес и порт присылать звук. Описание оформляется в формате SDP.

Вызываемый отвечает промежуточным кодом 180 Ringing, когда звонит, и 200 OK при ответе. Инициатор подтверждает получение сообщением ACK, и медиа-потоки начинают идти. Завершение звонка — запрос BYE. Отказ выражается кодами 4xx и 5xx: например, 486 означает «занято», 404 — «не найден», 403 — «запрещено».

В SIP есть и промежуточные узлы: прокси-серверы, которые пересылают запросы дальше, и серверы перенаправления, подсказывающие адрес. Поэтому путь сообщения от вызывающего до вызываемого редко прямой. В заголовках Via перечислены пройденные узлы, по ним легко восстановить маршрут при диагностике проблем на стыке двух операторов.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Порты, транспорт и защита

Классические порты — 5060 для открытой сигнализации и 5061 для защищённой TLS. SIP может работать поверх UDP, TCP и TLS. Раньше преобладал UDP из-за простоты, но при больших сообщениях и необходимости защиты чаще выбирают TCP и TLS.

Шифрование сигнализации скрывает, кто кому звонит. Шифрование самого разговора обеспечивает отдельный вариант, SRTP, и ключи для него обычно передаются в защищённой сигнализации. Без этого голос идёт открыто. Открытые серверы SIP в интернете постоянно сканируются в поисках слабых паролей: злоумышленники совершают платные звонки за чужой счёт, поэтому требуют сложные пароли и ограничения по адресам.

При диагностике удобно помнить порядок этапов: сначала регистрация проходит или нет, затем звонок устанавливается, затем идёт звук. Каждый этап проверяется отдельно, и симптом подсказывает, где искать. Ошибка на регистрации связана с адресом, паролем или закрытым портом сигнализации, а тишина после соединения почти всегда относится к RTP и NAT.

Почему NAT ломает звонки и как это чинят

Внутри SDP и заголовков SIP присутствуют IP-адреса и порты, которые ставит сам телефон, а он часто находится за NAT и видит только внутренний адрес. Собеседник пытается отправить голос на частный адрес, и пакеты не доходят. Типичный симптом: звонок соединяется, но слышно только в одну сторону или тишина.

Для решения используют несколько приёмов. Телефон или сервер определяют внешний адрес с помощью STUN и подставляют его. Иногда провайдер держит пограничный контроллер сессий, который перекладывает медиа-потоки. Периодические регистрации поддерживают открытым проход в NAT. Сложные случаи разбирает механизм ICE, известный и по браузерным звонкам, о чём рассказано на странице про WebRTC. Подробнее о самой трансляции адресов написано на странице про NAT.

Заблуждения и что можно посмотреть

Считается, что SIP — это и есть «IP-телефония». На деле это лишь часть: без RTP не будет звука, а без DNS и настроек NAT иногда и соединения. Другое допущение: если приложение мессенджера звонит, оно использует SIP. Большинство мессенджеров применяют собственные протоколы. Третье: код 200 OK означает, что разговор слышен. Он лишь подтверждает согласование сеанса.

В программе-телефоне (софтфоне) обычно есть журнал, где видны сообщения SIP, и по нему легко отличить проблему регистрации, кода 401 или 403, от проблемы с аудио. Если регистрация проходит, а звука нет, ищите причину в NAT, диапазоне портов RTP или в файрволе.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
sipip-телефонияпротоколы

Часто задаваемые вопросы

Читайте также