Коды ответов SIP и их значение
В прошлых уроках мы разобрали структуру SIP-сообщений и жизненный цикл вызова. Теперь, когда вы понимаете, как сообщения формируются и передаются, пора узнать, что означают ответы SIP-серверов и клиентов. Коды ответов SIP — это ваш главный инструмент для диагностики и понимания работы АТС.
Классификация SIP-ответов
SIP-ответы, как и HTTP-ответы, делятся на классы. Каждый класс указывает на тип реакции на запрос. Зная их, вы быстро определите, где проблема или почему всё прошло успешно.
Все SIP-ответы — это трёхзначные числа.
1xx: Информационные ответы (Informational)
Запрос получен и обрабатывается, но окончательное решение ещё не принято. Эти ответы не завершают транзакцию, а лишь информируют о её промежуточном состоянии.
- 100 Trying (Попытка): Сервер получил
INVITEи ищет вызываемого абонента. Вызов в процессе. - 180 Ringing (Звонок): Вызываемый абонент найден, его устройство звонит. Вызов дошёл до конечной точки.
- 183 Session Progress (Прогресс сессии): Передаёт информацию о прогрессе вызова. Например, воспроизводит гудки или объявления до ответа абонента. Часто содержит SDP для раннего медиа.
2xx: Успешные ответы (Success)
Запрос успешно получен, понят и принят к исполнению.
- 200 OK (Успешно): Самый частый успешный ответ. Запрос обработан. Для
INVITEподтверждает установление вызова, дляREGISTER— успешную регистрацию. - 202 Accepted (Принято): Запрос принят, но обработка ещё не завершена. Используется редко.
3xx: Ответы перенаправления (Redirection)
Для завершения запроса нужно дальнейшее действие клиента, обычно перенаправление на другой URI.
- 302 Moved Temporarily (Временно перемещён): Вызываемый абонент временно перемещён. Его текущее местоположение указано в заголовке
Contact. Клиент должен повторить запрос по новому адресу.
4xx: Ошибки клиента (Client Error)
Запрос не может быть выполнен из-за ошибки клиента.
- 401 Unauthorized (Не авторизован): Запрос требует аутентификации. Сервер запрашивает учётные данные.
- 403 Forbidden (Запрещено): Сервер понял запрос, но отказывается его выполнять. Причины: права доступа, политики безопасности или настройки диалплана.
- 404 Not Found (Не найдено): Вызываемый абонент или ресурс не найден на сервере. Частая ошибка при неправильном наборе номера или отсутствии регистрации.
- 408 Request Timeout (Таймаут запроса): Сервер не получил ответ от пользователя за отведённое время. Часто возникает, если телефон не зарегистрирован или вне сети.
- 486 Busy Here (Занято): Вызываемый абонент занят и не может принять вызов.
- 487 Request Terminated (Запрос завершён): Запрос завершён по инициативе клиента (например, абонент повесил трубку до ответа).
5xx: Ошибки сервера (Server Error)
Сервер не смог выполнить запрос, хотя запрос был корректным.
- 500 Server Internal Error (Внутренняя ошибка сервера): Общая ошибка сервера, указывающая на проблему в работе самого SIP-сервера (например, Asterisk).
- 503 Service Unavailable (Сервис недоступен): Сервер временно не может обрабатывать запросы. Возможно, из-за перегрузки или обслуживания.
6xx: Глобальные ошибки (Global Failure)
Запрос не может быть выполнен ни на одном сервере.
- 603 Decline (Отклонено): Вызываемый абонент не хочет принимать вызов, и нет альтернативных адресов для перенаправления.
Коды ответов в Asterisk: практическое применение
В Asterisk вы часто будете видеть эти коды в логах и при использовании команд sip show peers или pjsip show endpoints.
Совет: Когда видите ошибку, первым делом смотрите на код ответа. Он даст 80% информации о том, где искать проблему: на стороне клиента (4xx), сервера (5xx) или в маршрутизации (3xx, 404).
Пример: Представьте, что в логах Asterisk вы видите:
<--- SIP read from UDP:192.168.1.100:5060 --->
INVITE sip:101@192.168.1.10;transport=UDP SIP/2.0
...
<--- Transmitting (no NAT) to 192.168.1.100:5060 --->
SIP/2.0 404 Not Found
...
Это сразу говорит, что Asterisk не нашёл внутренний номер 101. Возможные причины:
- Экстеншен
101не существует в диалплане. - Экстеншен
101существует, но не зарегистрирован. - Ошибка в маршрутизации, которая не позволяет дойти до
101.
Или, если вы видите:
<--- Transmitting (no NAT) to 192.168.1.100:5060 --->
SIP/2.0 401 Unauthorized
...
Это почти всегда означает проблему с аутентификацией: неверный логин/пароль или неправильные настройки безопасности.
Понимание этих кодов — ваш первый шаг к эффективной диагностике. Дальше мы углубимся в то, как кодеки влияют на качество связи и пропускную способность. Это тоже ключевой аспект работы с VoIP.