Алгоритми встановлення з'єднання
Технологія VoIP >> Розділ 7. Протокол ініціювання сеансів зв'язку - SIP
[ << 7.5.4 Відповіді на запити ] [ 7.8 Порівняльний аналіз протоколів Н.323 і SIP >> ]
7.6 Алгоритми встановлення з'єднання
Протоколом SIP передбачені 3 основних сценарію встановлення з'єднання: за участю проксі-сервера, за участю сервера переадресації і безпосередньо між користувачами. Різниця між перерахованими сценаріями полягає в тому, що по-різному здійснюється пошук і запрошення викликається користувача. У першому випадку ці функції покладає на себе проксі-сервер, а зухвалому користувачеві необхідно знати тільки постійний SIP-адресу викликається користувача. У другому випадку викликає сторона самостійно встановлює з'єднання, а сервер переадресації лише реалізує перетворення постійної адреси абонента, що викликається в його поточну адресу. І, нарешті, у третьому випадку зухвалому користувачеві для встановлення з'єднання необхідно знати поточну адресу викликається користувача.
Перераховані сценарії є найпростішими. Адже перш ніж виклик досягне адресата, він може пройти через кілька проксі-серверів, або спочатку направляється до сервера переадресації, а потім проходить через один або кілька проксі-серверів. Крім того, проксі-сервери можуть розмножувати запити і передавати їх по різних напрямках і т.д. Але, все ж, як уже було вже зазначено на початку параграфа, ці три сценарії є основними. Тут ми розглянемо докладно два перші сценарію; третій сценарій в цьому розділі розглядатися не буде.
З'єднання з участю сервера переадресації
У цьому параграфі описаний алгоритм встановлення з'єднання з участю сервера переадресації викликів. Адміністратор мережі повідомляє користувачам адресу сервера переадресації. Зухвалий користувач передає запит INVITE (1) на відомий йому адресу сервера переадресації і порт 5060, який використовується за умовчанням (Малюнок 7.9). У запиті викликає користувач вказує адресу викликається користувача. Сервер переадресації запитує поточний адресу потрібного користувача у сервера визначення місця розташування (2), який йому повідомляє цю адресу (3). Сервер переадресації у відповіді 302 Moved temporarily передає викликає стороні поточний адресу викликається користувача (4), або він може повідомити список зареєстрованих адрес викликається користувача та запропонувати зухвалому користувачеві самому вибрати один з них. Зухвала сторона підтверджує прийом відповіді 302 посилкою повідомлення АСК (5).
Рис. 7.9. Сценарій встановлення з'єднання через сервер переадресації
Тепер викликає сторона може зв'язатися безпосередньо з спричиненої стороною. Для цього вона передає новий запит INVITE (6) з тим же ідентифікатором Call-ID, але іншим номером CSeq. У тілі повідомлення INVITE вказуються дані про функціональні можливості зухвалої сторони у форматі протоколу SDP. Викликається сторона приймає запит INVITE і починає його обробку, про що повідомляє відповіддю 100 Trying (7) зустрічному встаткування для перезапуску його таймерів. Після завершення опрацювання надходження запиту обладнання викликається боку повідомляє своєму користувачеві про вхідний дзвінок, а зустрічній стороні передає відповідь 180 Ringing (8). Після прийому викликуваним користувачем вхідний дзвінок віддаленої сторони передається повідомлення 200 OK (9), в якому містяться дані про функціональні можливості викликається терміналу у форматі протоколу SDP. Термінал викликає користувача підтверджує прийом відповіді запитом АСК (10). На цьому фаза встановлення з'єднання закінчена і починається розмовна фаза.
По завершенні розмовної фази якої із сторін передається запит BYE (11), що підтверджується відповіддю 200 OK (12).
Встановлення з'єднання з участю проксі-сервера
У цьому параграфі описаний алгоритм встановлення з'єднання з участю проксі-сервера. Адміністратор мережі повідомляє адресу
цього сервера користувачам. Зухвалий користувач передає запит INVITE (1) на адресу проксі-сервера і порт 5060, який використовується за умовчанням (Малюнок 7.10). У запиті користувач вказує відомий йому адресу викликається користувача. Проксі-сервер запитує поточний адресу викликається користувача у сервера визначення місця розташування (2), який і повідомляє йому цю адресу (3). Далі проксі-сервер передає запит INVITE безпосередньо викликає обладнання (4). Знову в запиті містяться дані про функціональні можливості викликає терміналу, але при цьому до запиту додається полі Via з адресою проксі-сервера для того, щоб відповіді на зворотному шляху йшли через нього. Після прийому і обробки запиту викликається обладнання повідомляє своєму користувачеві про вхідний дзвінок, а зустрічній стороні передає відповідь 180 Ringing (5), копіюючи в нього із запиту поля Те, From, Call-ID, CSeq і Via. Після прийому виклику користувачем зустрічній стороні передається повідомлення 200 OK (6), що містить дані про функціональні можливості викликається терміналу у форматі протоколу SDP. Термінал викликає користувача підтверджує прийом відповіді запитом АСК (7). На цьому фаза встановлення з'єднання закінчена і починається розмовна фаза.
По завершенні розмовної фази однієї зі сторін передається запит BYE (8), який підтверджується відповіддю 200 OK (9).
Всі повідомлення проходять через проксі-сервер, який може модифікувати в них деякі поля.
Рис. 7.10. Сценарій встановлення з'єднання через проксі-сервер
Реалізація додаткових послуг на базі протоколу SIP
У цьому параграфі розглядаються приклади реалізація додаткових послуг на базі протоколу SIP.
Додаткова послуга «Переключення зв'язку» дозволяє користувачеві переключити встановлений з'єднання до третьої сторони. На малюнку 7.11 наведено приклад реалізації цієї послуги. Користувач У встановлює зв'язок з користувачем А, який, переговоривши з В, перемикає цей зв'язок до користувача С, а сам вимикається.
Додаткова послуга «Переадресація виклику» дозволяє користувачеві призначити адресу, на який, за певних умов, слід направляти входять до нього виклики. Такими умовами можуть бути зайнятість користувача, відсутність його відповіді протягом заданого часу або і те, і інше, можлива також безумовна переадресація. Обладнання користувача, замовив цю послугу, отримавши повідомлення INVITE В, перевіряє умови, в яких воно отримано, і якщо умови вимагають переадресації, передає повідомлення INVITE із заголовком Also, вказуючи в ньому адресу користувача, до якого слід направити виклик. Термінал викликає користувача, отримавши повідомлення INVITE з таким заголовком, ініціює новий виклик за адресою, вказаною в поле Also. У нашому випадку користувач А викликає користувача В, а термінал останнього переадресує виклик до користувача С (Малюнок 7.12).
Додаткова послуга «Повідомлення про явку під час зв'язку» дозволяє користувачеві, що бере участь у телефонній розмові, отримати повідомлення про те, що до нього надійшов дзвінок (Малюнок 7.13).
Рис. 7.13. Додаткова послуга "Повідомлення про виклик під час зв'язку"
Послуга реалізується за допомогою заголовка Call-Disposition, в якому міститься інструкція з обслуговування виклику. Зухвалий користувач передає запит INVITE із заголовком Call-Disposition: Queue, який інтерпретується наступним чином: викликає користувач хоче, щоб виклик був поставлений в чергу, якщо користувач, що викликається буде зайнятий. Викликається сторона підтверджує виконання запиту відповіддю 182 Queued, який може передаватися неодноразово протягом періоду очікування. Викликаний користувач одержує повідомлення про вхідний виклик, а коли він звільняється, викликає стороні передається фінальний відповідь 200 ОК.
--Козінцев Олексій 36 гр. 16:45, 29 листопада 2010 (EET)