Відповіді на запити
Технологія VoIP >> Розділ 7. Протокол ініціювання сеансів зв'язку - SIP
[ << 7.5.3 Запити ] [ 7.6 Алгоритми встановлення з'єднання >> ]
7.5.4 Відповіді на запити
Після прийому та інтерпретації запиту, адресат (проксі-сервер) передає відповідь на цей запит. Зміст відповідей буває різним:
підтвердження встановлення з'єднання, передача запитаної інформації, відомості про несправності і т.д. Структуру відповідей та їх види протокол 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-з'єднання.
На малюнку 7.8 представлений приклад відповіді на запит
INVITE.
SIP/2.0 200 OK
Via: SIP/2.0/UDP kton.bell-tel.соm
From: A. Bell <sip:[email protected]>
To: <sip:watson@bell-tel .com>;
Call-ID: [email protected]
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
У цьому прикладі наведено відповідь користувача Watson на запрошення взяти участь у сеансі зв'язку, отримане від користувача Bell. Найбільш ймовірний формат запрошення розглянуто нами раніше (рис. 7.7). Викликається сторона інформує викликає про те, що вона може приймати в порту 5004 мовну інформацію, закодовану у відповідності з алгоритмами кодування PCMU, GSM. Поля From, To, Via, Call-ID взяті з запиту, показаного на малюнку 7.7. З прикладу видно, що це відповідь на запит INVITE з полем CSeq: 1.
Після того, як ми розглянули запити і відповіді на них, можна відзначити, що протокол SIP передбачає різні алгоритми встановлення з'єднання. При цьому варто звернути увагу, що одні й ті ж відповіді можна інтерпретувати по-різному в залежності від конкретної ситуації. У таблицю 7.5 зведені всі відповіді на запити, певні SIP.
Таблиця 7.5 Відповіді SIP
--Козінцев Олексій 36 гр. 16:43, 29 листопада 2010 (EET)