Протокол установления сеансов мультимедийной связи SIP

Ответы на запросы

      После приема и интерпретации запроса, адресат (прокси-сервер) передает ответ на этот запрос. Содержание ответов бывает разным: подтверждение установления соединения, передача запрошенной информации, сведения о неисправностях и т.д. Структуру ответов и их виды протокол SIP унаследовал от протокола HTTP.

      Определено шесть типов ответов, несущих разную функциональную нагрузку. Тип ответа кодируется трехзначным числом. Самой важной является первая цифра, которая определяет класс ответа, остальные две цифры лишь дополняют первую. В некоторых случаях оборудование даже может не знать все коды ответов, но оно обязательно должно интерпретировать первую цифру ответа.

      Все ответы делятся на две группы: информационные и финальные. Информационные ответы показывают, что запрос находится в стадии обработки. Они кодируются трехзначным числом, начинающимся с единицы, - 1хх. Некоторые информационные ответы, например, 100 Trying, предназначены для установки на нуль таймеров, которые запускаются в оборудовании, передавшем запрос. Если к моменту срабатывания таймера ответ на запрос не получен, то считается, что этот запрос потерян и может (по усмотрению производителя) быть передан повторно. Один из распространенных ответов -180 Ringing; по назначению он идентичен сигналу «Контроль посылки вызова» в ТфОП и означает, что вызываемый пользователь получает сигнал о входящем вызове.

      Финальные ответы кодируются трехзначными числами, начинающимися с цифр 2, 3, 4, 5 и 6. Они означают завершение обработки запроса и содержат, когда это нужно, результат обработки запроса. Назначение финальных ответов каждого типа рассматривается ниже.

      Ответы 2хх означают, что запрос был успешно обработан. В настоящее время из всех ответов типа 2хх определен лишь один -200 ОК. Его значение зависит от того, на какой запрос он отвечает:
      • ответ 200 OK на запрос INVITE означает, что вызываемое оборудование согласно на участие в сеансе связи; в теле ответа указываются функциональные возможности этого оборудования;
      • ответ 200 OK на запрос BYE означает завершение сеанса связи, в теле ответа никакой информации не содержится;
      • ответ 200 OK на запрос CANCEL означает отмену поиска, в теле ответа никакой информации не содержится;
      • ответ 200 OK на запрос REGISTER означает, что регистрация прошла успешно;
      • ответ 200 OK на запрос OPTION служит для передачи сведений о функциональных возможностях оборудования, эти сведения содержатся в теле ответа.

      Ответы Зхх информируют оборудование вызывающего пользователя о новом местоположении вызываемого пользователя или переносят другую информацию, которая может быть использована для нового вызова:
      • в ответе 300 Multiple Choices указывается несколько SIP-адресов, по которым можно найти вызываемого пользователя, и вызывающему пользователю предлагается выбрать один из них;
      • ответ 301 Moved Permanently означает, что вызываемый пользователь больше не находится по адресу, указанному в запросе, и направлять запросы нужно на адрес, указанный в поле Contact;
      • ответ 302 Moved Temporary означает, что пользователь временно (промежуток времени может быть указан в поле Expires) находится по другому адресу, который указывается в поле Contact.

      Ответы 4хх информируют о том, что в запросе обнаружена ошибка. После получения такого ответа пользователь не должен передавать тот же самый запрос без его модификации:
      • ответ 400 Bad Request означает, что запрос не понят из-за наличия в нем синтаксических ошибок;
      • ответ 401 Unauthorized означает, что запрос требует проведения процедуры аутентификации пользователя. Существуют разные варианты аутентификации, и в ответе может быть указано, какой из них использовать в данном случае;
      • ответ 403 Forbidden означает, что сервер понял запрос, но отказался его обслуживать. Повторный запрос посылать не следует. Причины могут быть разными, например, запросы с этого адреса не обслуживаются и т.д.;
      • ответ 485 Ambiguous означает, что адрес в запросе не определяет вызываемого пользователя однозначно;
      • ответ 486 Busy Here означает, что вызываемый пользователь в настоящий момент не может принять входящий вызов по данному адресу. Ответ не исключает возможности связаться с пользователем по другому адресу или, к примеру, оставить сообщение в речевом почтовом ящике.

      Ответы 5хх информируют о том, что запрос не может быть обработан из-за отказа сервера:
      • ответ 500 Server Internal Error означает, что сервер не имеет возможности обслужить запрос из-за внутренней ошибки. Клиент может попытаться повторно послать запрос через некоторое время;
      • ответ 501 Not Implemented означает, что в сервере не реализованы функции, необходимые для обслуживания этого запроса. Ответ передается, например в том случае, когда сервер не может распознать тип запроса;
      • ответ 502 Bad Gateway информирует о том, что сервер, функционирующий в качестве шлюза или прокси-сервера, принял некорректный ответ от сервера, к которому он направил запрос;
      • ответ 503 Service Unavailable говорит от том, что сервер не может в данный момент обслужить вызов вследствие перегрузки или проведения технического обслуживания.

      Ответы бхх информируют о том, что соединение с вызываемым пользователем установить невозможно:
      • ответ 600 Busy Everywhere сообщает, что вызываемый пользователь занят и не может принять вызов в данный момент ни по одному из имеющихся у него адресов. Ответ может указывать время, подходящее для вызова пользователя;
      • ответ 603 Decline означает, что вызываемый пользователь не может или не желает принять входящий вызов. В ответе может быть указано подходящее для вызова время;
      • ответ 604 Does Not Exist Anywhere означает, что вызываемого пользователя не существует.

      Запросы и ответы на них образуют SIP-транзакцию. Она осуществляется между клиентом и сервером и включает в себя все сообщения, начиная с первого запроса и заканчивая финальным ответом. При использовании в качестве транспорта протокола TCP все запросы и ответы, относящиеся к одной транзакции, передаются по одному TCP-соединению.

      На рисунке 9 представлен пример ответа на запрос INVITE

SIP/2.0 200 OK
Via: SIP/2.0/UDP kton.bell-tel.соm
From: A. Bell <sip:a.g.bell@bell-tel.com>
To: <sip:watson@bell-tel .com>;
Call-ID: 3298420296@kfcon.bell-fcel.com Cseq: 1 INVITE
Content-Type: application/sdp Content-Length: ...
v=0
o=watson 4858949 4858949 IN IP4 192.1.2.3
t=3149329600 0
c=IN IP4 bostcon.bell-tel.com
m=audio 5004 RTP/AVP 0 3
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
Рис. 9 Пример SIP-ответа 200 OK


      В этом примере приведен ответ пользователя Watson на приглашение принять участие в сеансе связи, полученное от пользователя Bell. Наиболее вероятный формат приглашения рассмотрен нами ранее (рис. 8). Вызываемая сторона информирует вызывающую о том, что она может принимать в порту 5004 речевую информацию, закодированную в соответствии с алгоритмами кодирования PCMU, GSM. Поля From, To, Via, Call-ID взяты из запроса, показанного на рисунке 8. Из примера видно, что это ответ на запрос INVITE с полем CSeq:1.
      После того, как мы рассмотрели запросы и ответы на них, можно отметить, что протокол SIP предусматривает разные алгоритмы установления соединения. При этом стоит обратить внимание, что одни и те же ответы можно интерпретировать по-разному в зависимости от конкретной ситуации. В таблицу 4 сведены все ответы на запросы, определенные протоколом SIP.

Код ответа

Пояснение

Назначение

100

Trying

Запрос обрабатывается, например, сервер обращается к базам данных, но местоположение вызываемого пользователя в настоящий момент не определено

180

Ringing

Местоположение вызываемого пользователя определено. Ему дается сигнал о входящем вызове

181

Call Is Being Forwarded

Прокси-сервер переадресует вызов к другому пользователю

182

Queued

Вызываемый пользователь временно не доступен, но входящий вызов поставлен в очередь. Когда вызываемый пользователь станет доступным, он передаст финальный ответ

200

OK

Команда успешно выполнена

300

Multiple Choices

Вызываемый пользователь доступен по нескольким адресам. Вызывающий пользователь может выбрать любой из них

301

Moved Permanently

Пользователь изменил свое местоположение, его новый адрес указан в поле Contact

302

Moved Temporarily

Пользователь временно изменил свое местоположение, его новый адрес указан в поле Contact

305

Use Proxy

Вызываемая сторона может принять входящий вызов только в том случае, когда он проходит через прокси-сервер. Вызывающей стороне рекомендуется обратиться к прокси-серверу, адрес которого указан в поле Contact. Ответ передается только терминальным оборудованием (UAS)

380

Alternative Service

Вызов не достиг адресата, но существует альтернативный вариант обслуживания, который указан в теле ответа. Например, вызов может быть переадресован к речевому почтовому ящику

400

Bad Bequest

В запросе обнаружена синтаксическая ошибка

401

Unauthorised

Требуется проведение процедуры авторизации пользователя

402

Payment Required

Требуется предварительная оплата услуг

403

Forbidden

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

404

Not Found

Сервер не обнаружил вызываемого пользователя в домене, указанном в поле Request-URI

405

Method Not Allowed

Не разрешается передавать запрос этого типа на адрес, указанный в поле Request-URI. В поле Allow ответа указываются разрешенные типы запросов

406

Not Acceptable

Ответы, генерируемые вызываемой стороной, не будут поняты вызывающей стороной

407

Proxy Authentication Required

Клиент должен подтвердить свое право доступа к прокси-серверу

408

Request Timeout

Сервер не может передать ответ, например, указать местоположение вызываемого пользователя, в течение промежутка времени, специфицированного в поле Expires запроса. Вызывающий пользователь может повторно передать запрос через некоторое время

409

Conflict

Обработка запроса REGISTER не может быть завершена из-за конфликта между действием, определенным в параметре action запроса, и текущим состоянием ресурсов

410

Gone

Сервер больше не имеет доступа к запрашиваемому ресурсу и не знает, куда переадресовать запрос

411

Length Required

Требуется указать длину тела сообщения в поле Content-Length

413

Request Entity Too Large

Размер запроса слишком велик для обработки

414

Request-URI Too Large

Адрес, указанный в поле Request-URI, оказался слишком большим, поэтому его интерпретация невозможна

415

Unsupported Media Type

Запрос содержит не поддерживаемый формат тела сообщения

420

Bad Extension

Сервер не понял расширение протокола, специфицированное в поле Require

480

Temporarily not available

Вызываемый пользователь временно недоступен

481

Call Beg/Transaction Does Not Exist

Посылается в ответ на получение запроса ВYЕ, не относящегося к текущим соединениям, или запроса CANCEL, не относящегося к текущим запросам

482

Loop Detected

Сервер обнаружил, что принятый им запрос передается по замкнутому маршруту (в поле Via уже имеется адрес этого сервера)

483

Too Many Hops

Сервер обнаружил в поле Via, что принятый им запрос прошел через большее количество прокси-сервером, чем разрешено в поле Max-Forwards

484

Address Incomplete

Сервер принял запрос с неполным адресом в поле То или Request-URI. Требуется дополнительная адресная информация

485

Ambiguous

Адрес вызываемого пользователя неоднозначен. В заголовке Contact ответа может содержаться список адресов, по которым этот запрос можно передать

486

Busy Here

В настоящий момент вызываемый пользователь не желает или не может принять вызов на этот адрес. Ответ не исключает возможности связаться с пользователем по другому адресу

500

Internal Server Error

Внутренняя ошибка сервера

501

Not Implemented

В сервере не реализованы функции, необходимые для обслуживания запроса. Ответ передается в том случае, когда сервер не может распознать тип полученного им запроса

502

Bad Gateway

Сервер, функционирующий в качестве шлюза или прокси-сервера, принимает некорректный ответ от сервера, к которому он направил запрос

503

Service Unavailable

Сервер не может в данный момент обслужить вызов вследствие перегрузки или проведения технического обслуживания

504

Gateway Timeout

Сервер, функционирующий в качестве шлюза или прокси-сервера, в течение установленного интервала времени не получил ответ от сервера (например, от сервера определения местоположения), к которому он обратился для завершения обработки запроса

505

SIP Version not supported

Сервер не поддерживает данную версию протокола SIP

600

Busy Everywhere

Вызываемый пользователь занят и не желает принимать вызов в данный момент. Ответ может указывать подходящее для вызова время

603

Decline

Вызываемый пользователь не может или не желает принимать входящие вызовы. В ответе может быть указано подходящее для вызова время

604

Does not exist anywhere

Вызываемого пользователя не существует

606

Not Acceptable

Вызываемый пользователь не может принять входящий вызов из-за того, что вид информации, указанный в описании сеанса связи в формате SDP, полоса пропускания и т.д. неприемлемы


<
Cодержание
>