Коды ответов SIP и их значение - Asterisk и FreePBX: От GUI к Глубокому Администрированию и Оптимизации - Qpel.AI

В прошлых уроках мы разобрали структуру 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. Возможные причины:

  1. Экстеншен 101 не существует в диалплане.
  2. Экстеншен 101 существует, но не зарегистрирован.
  3. Ошибка в маршрутизации, которая не позволяет дойти до 101.

Или, если вы видите:

<--- Transmitting (no NAT) to 192.168.1.100:5060 --->
SIP/2.0 401 Unauthorized
...

Это почти всегда означает проблему с аутентификацией: неверный логин/пароль или неправильные настройки безопасности.

Понимание этих кодов — ваш первый шаг к эффективной диагностике. Дальше мы углубимся в то, как кодеки влияют на качество связи и пропускную способность. Это тоже ключевой аспект работы с VoIP.