VoIP
January 8
Протокол SIP
SIP (Session Initiation Protocol) - это протокол, используемый для установления, изменения и завершения мультимедийных сеансов, таких как VoIP-звонки, видеоконференции и обмен сообщениями. В SIP определено несколько типов сообщений, которые делятся на запросы и ответы.
1. Запросы SIP
Запросы (или методы) используются для выполнения различных действий, таких как начало, изменение или завершение сеансов.
Основные методы SIP:
INVITE
- Инициализация сеанса. Используется для начала вызова или установления соединения.
Пример: приглашение абонента на голосовой или видеозвонок.ACK
- Подтверждение успешного получения ответа наINVITE
.
Пример: завершение трехсторонней handshake-процедуры для установки соединения.BYE
- Завершение сеанса. Используется для окончания вызова.
Пример: завершение звонка.CANCEL
- Отмена незавершенного запросаINVITE
. Используется для прекращения вызова до его принятия.
Пример: отмена вызова до того, как он был принят абонентом.OPTIONS
- Запрос информации о возможностях конечного устройства или сервера (например, поддерживаемые кодеки).
Пример: определение возможностей устройства перед вызовом.REGISTER
- Регистрация устройства пользователя на SIP-сервере.
Пример: устройство сообщает серверу о своем IP-адресе и порте для приема вызовов.INFO
- Передача дополнительной информации во время активного сеанса, не изменяя его состояние.
Пример: передача DTMF-тонов или сигналов.PRACK
(Provisional Acknowledgment) - Подтверждение временного (1xx) ответа. Это опциональный метод.
Пример: надежная доставка 1xx сообщений.SUBSCRIBE
- Запрос подписки на изменения состояния ресурса.
Пример: подписка на уведомления о статусе пользователя (онлайн/офлайн).NOTIFY
- Уведомление об изменении состояния ресурса, на который подписан пользователь.
Пример: уведомление об изменении статуса собеседника.PUBLISH
- Публикация информации о состоянии ресурса.
Пример: устройство сообщает свой текущий статус (доступен/недоступен).REFER
- Направление получателя для выполнения действия, например, перенаправления вызова.
Пример: переадресация звонка на другой номер.MESSAGE
- Отправка текстовых сообщений между участниками.
Пример: обмен короткими текстовыми сообщениями через SIP.UPDATE
- Изменение параметров сеанса во время его активного состояния.
Пример: изменение кодека во время звонка.PING
- Проверка доступности устройства или сервера.
Пример: проверка активности удаленного SIP-устройства.
2. Ответы SIP
Ответы в SIP делятся на 6 классов (по коду состояния, аналогично HTTP). Каждый ответ содержит код и текстовое описание.
Классы ответов:
- 1xx: Informational (Информационные)
Уведомляют об обработке запроса. 100 Trying
— запрос обрабатывается.180 Ringing
— вызываемое устройство звонит.183 Session Progress
— передача прогресса установления соединения (например, плейбэк звука ожидания).- 2xx: Success (Успех)
Запрос выполнен успешно. - 3xx: Redirection (Перенаправление)
Требуется дальнейшее действие. 301 Moved Permanently
— конечный узел переехал на другой адрес.302 Moved Temporarily
— временный новый адрес.- 4xx: Client Error (Ошибка клиента)
Проблема с запросом со стороны клиента. 400 Bad Request
— некорректный запрос.401 Unauthorized
— требуется аутентификация.403 Forbidden
— доступ запрещен.404 Not Found
— пользователь не найден.408 Request Timeout
— запрос истек.- 5xx: Server Error (Ошибка сервера)
Проблема на стороне сервера. - 6xx: Global Failure (Глобальная ошибка)
Запрос отклонен глобально.
Пример SIP-сообщения
Запрос INVITE
:
INVITE sip:user@example.com SIP/2.0 Via: SIP/2.0/UDP 192.168.1.2:5060 From: "Caller" <sip:caller@domain.com>;tag=12345 To: <sip:user@example.com> Call-ID: 1122334455@domain.com CSeq: 1 INVITE Contact: <sip:caller@192.168.1.2> Content-Type: application/sdp Content-Length: 129 v=0 o=- 1122334455 1122334455 IN IP4 192.168.1.2 s=Session SDP c=IN IP4 192.168.1.2 t=0 0 m=audio 49170 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000
Ответ 200 OK
:
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.1.2:5060 From: "Caller" <sip:caller@domain.com>;tag=12345 To: <sip:user@example.com>;tag=67890 Call-ID: 1122334455@domain.com CSeq: 1 INVITE Contact: <sip:user@192.168.1.3> Content-Type: application/sdp Content-Length: 129 v=0 o=- 1122334455 1122334455 IN IP4 192.168.1.3 s=Session SDP c=IN IP4 192.168.1.3 t=0 0 m=audio 49170 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000
Этот список покрывает основные типы сообщений и примеры их использования в SIP.