Відмінності між версіями «Відповіді на запити»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Створена сторінка: <div style="background: #33ccff"> '''Технологія VoIP''' >> '''[[Розділ_7._Протокол_ініціювання_сеансів_зв'язк...)
 
 
(не показані 3 проміжні версії цього учасника)
Рядок 9: Рядок 9:
 
</center>
 
</center>
 
</div>
 
</div>
 
+
'''7.5.4 Відповіді на запити'''<br>
 +
Після прийому та інтерпретації запиту, адресат (проксі-сервер) передає відповідь на цей запит. Зміст відповідей буває різним:
 +
підтвердження встановлення з'єднання, передача запитаної інформації, відомості про несправності і т.д. Структуру відповідей та їх види протокол SIP успадкував від протоколу HTTP.<br>
 +
Визначено шість типів відповідей, які несуть різне функціональне навантаження. Тип відповіді кодується тризначним числом. Найважливішою є перша цифра, яка визначає клас відповіді, інші дві цифри лише доповнюють першу. У деяких випадках обладнання навіть може не знати всі коди відповідей, але воно обов'язково має інтерпретувати першу цифру відповіді.<br>
 +
Усі відповіді діляться на дві групи: інформаційні та фінальні. Інформаційні відповіді показують, що запит знаходиться в стадії обробки. Вони кодуються тризначним числом, що починається з одиниці, - 1хх. Деякі інформаційні відповіді, наприклад, 100 Trying, призначені для установки на нуль таймерів, які запускаються в обладнанні, яка передала запит. Якщо до моменту спрацьовування таймера відповідь на запит не отримано, то вважається, що цей запит втрачений і може (на розсуд виробника) бути переданий повторно. Один з поширених відповідей -180 Ringing; за призначенням він ідентичний сигналом «Контроль посилки виклику» в ТФОП і означає, що користувач, що викликається отримує сигнал про вхідний дзвінок.<br>
 +
Фінальні відповіді кодуються тризначними числами, що починаються з цифр 2, 3, 4, 5 і 6. Вони означають завершення обробки запиту і містять, коли це потрібно, результат обробки запиту. Призначення фінальних відповідей кожного типу розглядається нижче.<br>
 +
Відповіді 2хх означають, що запит було успішно оброблено. В даний час з усіх відповідей типу 2хх визначено лише один -200 ОК. Його значення залежить від того, на який запит він відповідає:<br>
 +
* відповідь 200 OK на запит INVITE означає, що викликається обладнання згідно на участь у сеансі зв'язку; в тілі відповіді вказуються функціональні можливості цього обладнання;<br>
 +
* відповідь 200 OK на запит BYE означає завершення сеансу зв'язку, в тілі відповіді ніякої інформації не міститься;<br>
 +
* відповідь 200 OK на запит CANCEL означає скасування пошуку, в тілі відповіді ніякої інформації не міститься;<br>
 +
* відповідь 200 OK на запит REGISTER означає, що реєстрація пройшла успішно;<br>
 +
* відповідь 200 OK на запит OPTION служить для передачі відомостей про функціональні можливості обладнання, ці відомості містяться в тілі відповіді.<br>
 +
Відповіді Зхх інформують обладнання викликає користувача про новий місцезнаходження викликається користувача або переносять іншу інформацію, яка може бути використана для нового виклику:<br>
 +
* у відповіді 300 Multiple Choices вказується кілька SIP-адрес, за якими можна знайти викликається користувача, і викликає користувачеві пропонується вибрати один з них;<br>
 +
* відповідь 301 Moved Permanently означає, що користувач, що викликається більше не знаходиться за адресою, вказаною у запиті, і направляти запити потрібно на адресу, вказану в полі Contact;<br>
 +
* відповідь 302 Moved Temporary означає, що користувач тимчасово (проміжок часу може бути вказана в полі Expires) знаходиться за іншою адресою, що зазначається в полі Contact.<br>
 +
Відповіді 4хх інформують про те, що в запиті виявлена помилка. Після отримання такої відповіді користувач не повинен передавати той же самий запит без його модифікації:<br>
 +
* відповідь 400 Bad Request означає, що запит не зрозумілий через наявність у ньому синтаксичних помилок;<br>
 +
* відповідь 401 Unauthorized означає, що запит вимагає проведення процедури аутентифікації користувача. Існують різні варіанти аутентифікації, і у відповіді може бути вказано, який з них використовувати в даному випадку;<br>
 +
* відповідь 403 Forbidden означає, що сервер зрозумів запит, але відмовився його обслуговувати. Повторний запит посилати не слід. Причини можуть бути різними, наприклад, запити з цієї адреси не обслуговуються і т.д.;<br>
 +
* відповідь 485 Ambiguous означає, що адреса в запиті не визначає викликається користувача однозначно;<br>
 +
* відповідь 486 Busy Here означає, що користувач, що викликається в даний момент не може прийняти вхідний виклик за даною адресою.<br> Відповідь не виключає можливості зв'язатися з користувачем за іншою адресою або, наприклад, залишити повідомлення в мовному поштовій скриньці.<br>
 +
Відповіді 5хх інформують про те, що запит не може бути оброблений із-за відмови сервера:<br>
 +
* відповідь 500 Server Internal Error означає, що сервер не має можливості обслужити запит через внутрішню помилку. Клієнт може спробувати повторно надіслати запит через деякий час;<br>
 +
* відповідь 501 Not Implemented означає, що в сервері не реалізовані функції, необхідні для обслуговування цього запиту. Відповідь передається, наприклад в тому випадку, коли сервер не може розпізнати тип запиту;<br>
 +
* відповідь 502 Bad Gateway інформує про те, що сервер, що функціонує в якості шлюзу або проксі-сервера, прийняв некоректний відповідь від сервера, до якого він направив запит;<br>
 +
* відповідь 503 Service Unavailable говорить від тому, що сервер не може в даний момент обслужити виклик внаслідок перевантаження або проведення технічного обслуговування.<br>
 +
Відповіді Бхх інформують про те, що з'єднання з викликуваним користувачем встановити неможливо:<br>
 +
* відповідь 600 Busy Everywhere повідомляє, що користувач, що викликається зайнятий і не може прийняти виклик в даний момент по жодному з наявних у нього адрес. Відповідь може вказувати час, відповідне для виклику користувача;<br>
 +
* відповідь 603 Decline означає, що користувач, що викликається не може або не бажає прийняти вхідний дзвінок. У відповіді може бути зазначено відповідне для виклику час;<br>
 +
* відповідь 604 Does Not Exist Anywhere означає, що викликається користувача не існує.<br>
 +
Нагадаємо, що запити та відповіді на них утворюють SIP-транзакцію. Вона здійснюється між клієнтом і сервером і включає в себе всі повідомлення, починаючи з першого запиту і закінчуючи фінальним відповіддю. При використанні в якості транспорту протоколу TCP всі запити і відповіді, які стосуються однієї транзакції, передаються по одному TCP-з'єднання.<br>
 +
На малюнку 7.8 представлений приклад відповіді на запит<br>
 +
'''INVITE'''.<br>
 +
SIP/2.0 200 OK<br>
 +
'''Via''': SIP/2.0/UDP ''kton.bell-tel.соm''<br>
 +
From: A. Bell <'''sip''':''[email protected]''><br>
 +
'''To''': <'''sip''':''watson@bell-tel .com''>;<br>
 +
'''Call-ID''': ''[email protected]'' <br>
 +
'''Cseq:''' 1 <br>
 +
'''INVITE'''<br>
 +
'''Content-Type''': application / sdp Content-Length: ...<br>
 +
'''v''' = 0<br>
 +
'''o''' = watson 4858949 4858949 IN IP4 192.1.2.3<br>
 +
'''t''' = 3149329600 0<br>
 +
'''c''' = IN IP4 bostcon.bell-tel.com<br>
 +
'''m''' = audio 5004 RTP / AVP 0 3<br>
 +
'''a''' = rtpmap: 0 PCMU/8000<br>
 +
'''a''' = rtpmap: 3 GSM/8000<br>
 +
У цьому прикладі наведено відповідь користувача Watson на запрошення взяти участь у сеансі зв'язку, отримане від користувача Bell. Найбільш ймовірний формат запрошення розглянуто нами раніше (рис. 7.7). Викликається сторона інформує викликає про те, що вона може приймати в порту 5004 мовну інформацію, закодовану у відповідності з алгоритмами кодування PCMU, GSM. Поля From, To, Via, Call-ID взяті з запиту, показаного на малюнку 7.7. З прикладу видно, що це відповідь на запит INVITE з полем CSeq: 1.<br>
 +
Після того, як ми розглянули запити і відповіді на них, можна відзначити, що протокол SIP передбачає різні алгоритми встановлення з'єднання. При цьому варто звернути увагу, що одні й ті ж відповіді можна інтерпретувати по-різному в залежності від конкретної ситуації. У таблицю 7.5 зведені всі відповіді на запити, певні SIP.<br>
 +
'''Таблиця 7.5''' Відповіді SIP<br>
  
 
<div style="background: #33ccff">  
 
<div style="background: #33ccff">  

Поточна версія на 10:54, 30 листопада 2010

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)