Повідомлення протоколу SIP
Повідомлення протоколу SIP (запити і відповіді), являють собою послідовності текстових рядків, закодованих у відповідності з документом RFC 2279. Структура і синтаксис повідомлень SIP ідентичні використовуваним в протоколі HTTP. Структура повідомлень протоколу SIP:
· Стартовий рядок - початкова рядок будь-якого SIP-повідомлення. Якщо повідомлення є запитом, в ній вказується тип запиту, адресат та номер версії протоколу. Якщо повідомлення є відповіддю на запит, в ній вказується номер версії протоколу, тип відповіді і його коротка розшифровка. · Заголовки повідомлень містять інформацію, необхідну для обробки повідомлення (інформація про відправника, адресата, шляху проходження і пр.) · Тіло повідомлення містить опис сеансів зв'язку. Не всі запити містять тіло повідомлення (наприклад запит BYE). Усі відповіді можуть містити тіло повідомлення, але вміст тіла в них буває різним.
Приклад запиту INVITE
INVITE sip:nikolia@example.ru SIP/2.0 Record-Route: <sip:nikolia@10.0.0.10;lr> Via: SIP/2.0/UDP 10.0.0.10;branch=z9hG4bK3af7.0a6e92f4.0 Via: SIP/2.0/UDP 192.168.0.2:5060;branch=z9hG4bK12ee92cb;rport=5060 From: "78128210000" <sip:78128210000@neutral.ru>;tag=as149b2d97 To: <sip:nikolia@example.ru> Contact: <sip:78128210000@neutral.ru> Call-ID: 3cbf958e6f43d91905c3fa964a373dcb@example.ru CSeq: 103 INVITE Max-Forwards: 16 Date: Wed, 10 Jan 2001 13:16:23 GMT Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: 394
v=0 o=root 3303 3304 IN IP4 10.0.0.10 s=session c=IN IP4 10.0.0.10 t=0 0 m=audio 40358 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=silenceSupp:off - - - - a=sendrecv
Запити У початковій версії протоколу SIP (RFC 3261) було визначено шість типів запитів. За допомогою запитів клієнт повідомляє про поточне місцезнаходження, запрошує користувачів взяти участь у сеансах зв'язку, модифікує вже встановлені сеанси, завершує їх і т. д. Тип запиту вказується в стартовій рядку.
1. INVITE - Запрошує користувача до сеансу зв'язку. Зазвичай містить SDP-опис сеансу. 2. АСК - Підтверджує прийом відповіді на запит INVITE. 3. BYE - Завершує сеанс зв'язку. Може бути переданий будь зі сторін, що беруть участь у сеансі. 4. CANCEL - Скасовує обробку раніше переданих запитів, але не впливає на запити, які вже закінчили оброблятися. 5. REGISTER - Переносить адресну інформацію для реєстрації користувача на сервері визначення місцеположення. 6. OPTIONS - Запитує інформацію про функціональні можливості сервера 7. Але в процесі розвитку, в протокол було додано ще кілька типів запитів, які доповнили його функціональність:
1. PRACK - тимчасове підтвердження (RFC 3262) 2. SUBSCRIBE - підписка на отримання повідомлень про подію (RFC 3265) 3. NOTIFY - повідомлення передплатника про подію (RFC 3265) 4. PUBLISH - публікація події на сервері (RFC 3903) 5. INFO - передача інформації, яка не змінює стан сесії (RFC 2976) 6. REFER - запит одержувача про передачу запиту SIP (RFC 3515) 7. MESSAGE - передача миттєвих повідомлень засобами SIP (RFC 3428) 8. UPDATE - модифікація стану сесії без зміни стану діалогу (RFC 3311)
|