Примечание: это заметки надёрганные с разных источников и будет периодически корректироваться.
При организации IP-телефонии применяется SIP-протокол. Через него осуществляется передача информации, необходимой для установления соединения (сеанса связи) между абонентами (конечными точками), его поддержания, внесения изменений, завершения и так далее.
SIP — это порты для IP телефонии, через которые осуществляется прием и передача информации, касающейся сеанса связи/соединения. Т.е. сами мультимедиа данные (речь, видео, картинки и пр.) через эти порты не передаются. Через SIP-ports циркулируют информационные запросы и ответы, необходимые для создания простейшего вызова по IP-сети и его поддержания.
Существует несколько типов запросов:
- инициирование вызова (INVITE),
- подтверждение установления сеанса связи (ACK) от конечной точки, получившей INVITE,
- отмена запросов, которые стали неактуальными (Cancel),
- завершение текущего соединения/сеанса (BYE),
- регистрация места расположения конечной точки (Register),
- запрос данных о функциональных возможностях конечной точки (OPTIONS), который отправляется.
Типы кодов ошибок (ответов) SIP
Ответы, проходящие через порты для SIP, описывают состояние соединения. Они имеют вид трехзначного индекса, первая цифра которого определяет тип ответа. Первая цифра кода определяет класс ответа. Последние две цифры не имеют определенной роли в классификации. В соответвии с SIP/2.0 определяется шесть значений для первой цифры:
- 1xx - информационные ответы (Informational) – запрос получен, запрос обрабатывается (это единственный тип ответа, который не завершает запрос. Отправка всех остальных означает завершение запроса).
- 2xx - успех выполнения запроса (Success) – запрос был получен, понят, принят в обработку (ответ передается при успешном окончании полученного ранее запроса);
- 3xx - переадресация (Redirection) – для завершения запроса необходимо, выполнить следующие действия (передается в случае изменения местоположения конечной точки в ходе сеанса);
- 4xx - ошибка клиента (Client Error) – запрос имеет некорректный синтаксис(информацию) или запрос не может быть выполнен на данном сервере;
- 5xx - ошибка сервера (Server Error) – сервер не в состоянии выполнить корректный запрос;
- 6xx - глобальная ошибка (Global Failure) – запрос не может быть выполнен на любом сервере (Такой ответ формируется SIP-сервером, если установление сеанса с вызываемой конечной точкой невозможно. Причины этого могут быть разными: пользователь занят (уже участвует в другом созвоне), недоступен или вообще не зарегистрирован (неверный номер).
Коды ошибок 1xx
100 - (Trying) запрос обрабатывается, может обозначаться как SIP/2.0 100 Trying;
180 - (Ringing) вызываемый пользователь определен. Идет сигнал о входящем вызове, может обозначаться как SIP/2.0 180 Ringing;
181 - (Call Is Being Forwarded) вызов переадресовывается к другому пользователю (прокси – сервер переадресует вызов другому пользователю), может обозначаться как SIP/2.0 181 Call is Being Forwarded;
182 - (Queued) вызываемый абонент недоступен, вызов поставлен в очередь (SIP/2.0 182 Call is );
183 - (Session Progress) данный ответ используется для передачи описания медианных SDP, чтобы получить описание сеанса информационного обмена от серверов и шлюзов на пути к вызываемому пользователю (SIP/2.0 183 Session Progress);
Коды ошибок 2xx
200 - (OK) успешное выполнение запроса (SIP/2.0 200 OK);
202 - (Accepted) запрос принят в обработку . Используется для справки о состоянии обработки;
Коды ошибок 3xx
300 - (Multiple Choices) в ответе указаны несколько SIP адресов, где можно найти вызываемого пользователя;
301 - (Moved Permanently) вызываемый абонент больше не находится по адресу, указанному в запросе;
302 - (Moved Temporarily) вызываемый абонент временно не находится по адресу, указанному в запросе или пользователь временно сменил местоположение;
305 - (Use Proxy) вызываемый пользователь не доступен непосредственно, входящий вызов должен пройти через прокси-сервер;
380 - (Alternative Service) запрошенная услуга недоступна, но есть альтернативные варианты;
Коды ошибок 4xx
400 - (Bad Request) некорректный запрос, запрос не понятен серверу, запрос не понят из-за синтаксических ошибок в нем, ошибка в сигнализации, скорее всего что-то с настройками оборудования$
401 - (Unauthorized) ответ, что пользователь еще не авторизован на сервере, после этого ответа, посылается повторный запрос RIGISTER с логином и паролем, нормальный ответ сервера о том, что пользователь еще не авторизировался; обычно после этого абонентское оборудование отправляет на сервер новый запрос, содержащий логин и пароль;
401 - (Expired Authorization) время регистрации истекло;
402 - (Payment Required) требуется оплата;
403 - (Forbidden) абонент не зарегистрирован, не существует;
403 - (No Such User) нет такого пользователя, ошибка в номере, логине или пароле;
403 - (User Disabled) пользователь отключен;
403 - (Wrong Guess) ошибка в пароле;
403 - (Conflict) такой SIP-номер уже используется;
403 - (Empty Route Set) нет ни одного шлюза в роутинге;
403 - (Caller Not Registered) нет такого пользователя;
403 - (Out of Look-Ahead Retries) перебор узлов закончен;
403 - (Invalid Phone Number) нет такого направления;
403 - (No Money Left on RFC Account) на счету нет денег для совершения звонка;
404 - (Not Found) вызываемы абонент не найден на сервере;
404 - (Undefined Reason) неопределенное направление;
404 - (Unknown user account) логин и пароль не найдены;
404 - (Out of Order) в заявке на маршрутизацию по этому направлению нет ни одного шлюза, проверьте настройку маршрутизации по этому направлению;
405 - (Method Not Allowed) метод не поддерживается сервером;
406 - (Not Acceptable) пользователь недоступен;
406 - (No codecs match) — неправильная конфигурация кодеков
407 - (Proxy Authentication Required) – необходима аутентификация на сервере
408 - (Request Timeout – время обработки запроса истекло и Абонента не удалось найти за отведенное время
408 - (Login timed out) — за отведенное время не получен ответ от сервера на запрос авторизации
409 - (Conflict) запрос не может быть выполнен из-за конфликта с текущим состоянием сервера/клиента;
410 - (Gone) запрошенный пользователь больше не доступен на сервере и нет адреса для перевода вызова;
411- (Request Entity Too Large) сервер отказывается обслуживать запрос, т.к. размер запроса слишком велик;
414 - (Request-URI Too Large) сервер отказывается обслуживать запрос, потому что запрашиваемый URI больше, чем сервер может обработать.
415 - (Unsupported Media Type) сервер отказывается обработать запрос, потому что тело сообщения запроса находится в формате, который сервер не поддерживает. Сервер должен вернуть список допустимых форматов, используя Accept, Accept-Encoding и Accept-Language в поле заголовка;
420 - (Bad Extension) сервер не понял расширение протокола SIP;
480 - (Temporarily not available) направление временно недоступно;
480 - (Invalid Phone Number) неправильный номер телефона, не соответствует к-во цифр или неправильный код страны или города;
480 - (Wrong DB Response) проблемы с центральной базой сети;
480 - (Codec Mismatch) несоответствие кодеков;
480 - (Temporarily Unavailable) временно недоступное направление попробуйте позвонить позже;
481 - (Call Leg/Transaction Does Not Exist) этот ответ будет возвращен в двух случаях: сервер получил запрос BYE, который не соответствует любому существующему вызову или сервер получил запрос CANCEL, что не соответствует существующим транзакция;
482 - (Loop Detected) обнаружен замкнутый маршрут передачи запроса;
483 - (Too Many Hops) превышено число прохода прокси-серверов, чем указано в поле Max-Forwards;
484 - (Address Incomplete) в запросе не полный адрес;
485 - (Ambiguous) адрес вызываемого пользователя не однозначен;
486 - (Busy Here) абонент занят;
487 - (Request Terminated) запрос отменен, обычно приходит при отмене вызова;
488 - (Codec Mismatch) нет шлюзов с поддержкой заказанного кодека;
488 - (Private IP Address) адрес RTP media из сетей RFC1918;
491 - (Request Pending) запрос поступил в то время, когда сервер еще не закончил обработку другого запроса, относящегося к тому же диалогу;
493 - (Undeciperable) сервер не в состоянии подобрать ключ дешифрования: невозможно декодировать тело S/MIME сообщения;
499 - (Codec Mismatch) отсутствует кодек.
Ошибка Сервера:
500 - (Internal Server Error) внутренняя ошибка сервера;
501 - (Not Implemented) сервер не поддерживает функциональные возможности, необходимые для выполнения запроса;
502 - (Bad Gateway) сервер, действуя в качестве шлюза или прокси-сервера, получил недопустимый ответ от подчиненного сервера, к которому он обратился для выполнения запроса.
503 - (Service Unavailable) сервер в настоящее время не в состоянии обработать запрос из-за временной перегрузки или технического обслуживания сервера$
504 - (Gateway Time-out) сервер, действуя в качестве шлюза, не получил своевременного ответа от сервера (например, сервер определения местоположения) к которому он обратился для выполнения запроса$
505 - (SIP Version not supported) сервер не поддерживает или отказывается поддерживать, версию протокола SIP, который был использован в сообщении запроса.
Глобальная Ошибка:
600 - (Busy Everywhere) вызов дошел до вызываемого абонента, но вызываемый абонент занят и не желает принять вызов в настоящее время;
603 - (Decline) вызов дошел до вызываемого абонента, но вызываемый абонент занят и не желает принять вызов, не указывая причину отказа;
604 - (Does not exist anywhere) сервер имеет точную информацию о том, что пользователя, указанного в поле To не существует нигде. Поиск пользователя в другом месте не даст никаких результатов;
606 - (Not Acceptable) сервер установил соединение с абонентом, но отдельные параметры, такие как тип запрашиваемой информации, полоса пропускания, вид адресации не доступны.
Для передачи информации для установления соединения между абонентами и его поддержания (т.е. данных, циркулирующих через SIP-протокол) обычно используется 2 порта (они же — SIP ports) 5060 и 5061. Между ними есть некоторые различия.
Порт 5060 имеет следующие отличительные особенности:
- Он используется в случае, когда в ходе сеансов связи осуществляется передача незашифрованного трафика,
- При работе по нему используются TCP и UDP-соединения, что обеспечивает должный уровень защиты данных,
- Этот порт используется в большинстве случаев при совершении VoIP-звонков.
Порт 5061, применяется в случае, когда речь идет об обмене зашифрованным трафиком. При этом применяется только TCP-соединение.
Внутри сети все работает с использованием порта 5061. А вот при организации связи с помощью IP-телефонии, чтобы для вашей инфраструктуры была обеспечена возможность «общения» с конечными точками извне, необходим проброс портов:
- Для исходящего и входящего SIP-трафика для IP-телефонов (софтфонов, обычных телефонов, подключенных к сети через SIP-адаптер и т.д.). Исходящий и входящий SIP-трафик передается с/на порт 5060 на/с портов 1024-65535.
- Для исходящего и входящего RTP-трафика для указанных выше абонентских устройств. Для этого задействуются порты из диапазона1024-65535.
- Для исходящего и входящего трафика с IP-телефона. Передача осуществляется с/на порта 69 на/с порты 1024-65535.
5060 и 5061 можно назвать «традиционными» SIP-портами, но для целей безопасности возможно использование другие номер портов.