SIP ( — протокол встановлення сесії) — протокол прикладного рівня, розроблений IETF MMUSIC Working Group, і пропонований стандарт на спосіб установки, зміни і завершення користувацького сеансу, що включає мультимедійні елементи, такі як відео або голос, миттєві повідомлення, он-лайн ігри та віртуальну реальність.
Протокол почав розроблятися в 1996 році Геннінгом Шульцрінне (Henning Schulzrinne, Колумбійський університет) і Марком Гендлі (UCL). У листопаді 2000 року SIP був затверджений як сигнальний протокол проекту 3GPP і постійний елемент архітектури IMS. SIP — один з протоколів, що лежать в основі Voice over IP.
Проєкт протоколу Клієнти SIP традиційно використовують порт 5060 TCP і UDP для з'єднання серверів та інших елементів SIP. В основному SIP використовується для встановлення і роз'єднання голосових і відеодзвінків. При цьому він може використовуватися і в будь-яких інших застосуваннях, де потрібна установка з'єднання, таких як Event Subscription and Notification, Terminal mobility і так далі. Існує велика кількість RFC, що відносяться до SIP і визначають поведінку таких застосувань. Для передачі самих голосових і відеоданих використовують інші прикладні протоколи, найчастіше Real-time Transport Protocol (RTP).
Головним завданням розробки SIP було створення сигнального протоколу і протоколу встановлення з'єднань для IP комунікацій, який може підтримувати розширений набір функцій обробки виклику і послуг, представлених в існуючій ТфЗК. Сам протокол SIP не визначає цих функцій, а зосереджений тільки на процедурах встановлення дзвінка та сигналізації. При цьому він був спроектований забезпечувати створення таких функцій елементів мережі, як Проксі-сервер (Proxy Servers) та користувацькі агенти (User Agents). За допомогою цих елементів можна підтримувати базові телефонні операції: набір номера, дзвінок телефонного апарату, можливість після набору почути довгі або короткі гудки. У світі SIP реалізація цих функцій і використовувана термінологія інші, ніж в традиційній телефонії, але для кінцевого користувача поведінка залишається такою ж.
Телефонні мережі на основі SIP можуть підтримувати і сучасніші послуги, що зазвичай надаються Signalling System 7 (SS7), не зважаючи на значну відмінність цих двох протоколів. SS7 характеризується складною, централізованою інтелектуальною мережею і простими, неінтелектуальними, терміналами (традиційні телефонні апарати). SIP є протоколом типу точка-точка. Як протоколи такого класу він вимагає тільки дуже просту (і, відповідно, добре масштабовану) мережу з інтелектом, вбудованим в крайові елементи на периферії (термінали, побудовані як фізичні пристрої або програми). Іншими словами, функції SIP реалізовані в термінальних пристроях (тобто на межі мережі), на відміну від традиційних можливостей SS7, які підтримуються самою мережею.
Хоча існує багато інших сигнальних протоколів VoIP, SIP характеризується його прихильниками як належний співтовариству IP, а не до телекомунікаційної індустрії. SIP стандартизований і контролюється головним чином IETF, тоді як протокол H.323 сімейства VoIP був традиційно тісніше пов'язаний з ITU. Проте ці дві організації так чи інакше схвалили обидва протоколи.
SIP використовується разом з декількома іншими протоколами і бере участь тільки в сигнальній частині сесії зв'язку. SIP виконує роль носія для SDP, який описує media дані в рамках сесії, наприклад які порти IP повинні бути використані, який використовувати кодек. У типовому застосуванні «сесії» SIP — це просто потоки пакетів RTP. RTP є безпосереднім носієм голосових і відеоданих.
Перша запропонована версія стандарту (SIP 2.0) була визначена у RFC 2543. Протокол був додатково уточнений у RFC 3261, хоча багато реалізацій як і раніше засновано на проміжних версіях стандарту. Зверніть увагу, що номер версії залишився 2.0.
SIP схожий на HTTP і розділяє з ним загальні принципи проектування: він придатний для читання людиною і структурований відносно запитів та відповідей. Прихильники SIP також заявляють про нього як про більш простий, у порівнянні з H.323. Проте дехто схильний вважати, що в момент, коли метою SIP була простота, у своєму сьогоднішньому вигляді він став такий же складний, як і H.323. Інші вважають, що SIP — протокол без станів, який тим самим дає легко реалізувати відновлення при відмові і інші можливості, які утруднені в протоколах із станами, таких як H.323. Цей аргумент набув релігійного характеру, але, судячи з усього, SIP виграв битву, якщо не війну протоколів. SIP розділяє з HTTP багато кодів станів, таких як відомий '404 not found'. SIP та H.323 не обмежені голосовим зв'язком, вони можуть обслуговувати будь-який сеанс зв'язку, від голосового до відеосеансу або майбутні види зв'язку.
Опис
Протокол ініціювання сеансів — Session Initiation Protocol — є протоколом прикладного рівня і призначається для організації, модифікації і завершення сеансів зв'язку: мультимедійних конференцій, телефонних з'єднань і розподілу мультимедійної інформації.
Протокол SIP розроблений комітетом IETF, а специфікації протоколу представлені в документі RFC 3261. В основу протоколу закладені наступні принципи:
Персональна мобільність користувачів. Користувачі можуть переміщатися без обмежень в межах мережі, тому послуги зв'язку повинні надаватися їм у будь-якому місці цієї мережі. Користувачеві надається унікальний ідентифікатор, а мережа надає йому послуги зв'язку незалежно від того, де він знаходиться. Для цього користувач за допомогою спеціального повідомлення інформує мережу про свої переміщення.
Масштабованість мережі характеризується, в першу чергу, можливістю збільшення кількості елементів мережі при її розширенні. Серверна структура мережі, побудованої на базі протоколу SIP, повністю відповідає цій вимозі.
Розширюваність протоколу характеризується можливістю доповнення протоколу новими функціями при введенні нових послуг та його адаптації до роботи з різними додатками. Розширення функцій протоколу SIP може бути здійснена за рахунок введення нових заголовків і типів повідомлень.
Інтеграція в стек існуючих протоколів Інтернет, розроблених IETF. Протокол SIP є частиною складної архітектури, розробленої комітетом IETF. Ця архітектура містить у собі також протокол резервування ресурсів (Resource Reservation Protocol, RSVP; RFC 2205), транспортний протокол реального часу (Real-Time Transport Protocol, RTP; RFC 1889), протокол передачі потоків у реальному часі (Real-Time Streaming Protocol, RTSP; RFC 2326), протокол опису параметрів зв'язку (Session Description Protocol, SDP; RFC 2327) та інші. Однак функції протоколу SIP не залежать ні від одного з цих протоколів.
Взаємодія з іншими протоколами сигналізації. Протокол SIP може бути використаний спільно з протоколом Н.323. Можливо також взаємодія протоколу SIP з системами сигналізації ТМЗК — EDSS1 і СКС (Спільно канальна сигналізація) № 7. Для спрощення такої взаємодії сигнальні повідомлення протоколу SIP можуть переносити не тільки SIP-адресу, але й телефонний номер формату Е.164 або будь-якого іншого формату. Крім того, протокол SIP, нарівні з протоколами H.323 і ISUP, може застосовуватися для забезпечення функціонування пристроїв управління шлюзами, в цьому випадку він повинен взаємодіяти з протоколом MGCP або MEGACO. Важливою особливістю протоколу SIP є його незалежність від транспортних технологій. Як транспорт можна використовувати протоколи Х.25, Frame Relay, AAL5, IPX і ін Структура повідомлень SIP не залежить від обраної транспортної технології.
Сигнальні повідомлення SIP можуть переноситися не тільки протоколом транспортного рівня UDP, але і протоколом ТСР. Протокол UDP дозволяє швидше, ніж TCP, доставляти сигнальну інформацію (навіть з урахуванням повторної передачі непідтверджених повідомлень), а також вести паралельний пошук місця розташування користувачів і передавати запрошення до участі в сеансі зв'язку в режимі під LGPL. У свою чергу, протокол ТСР спрощує роботу з міжмережевими екранами, а також гарантує надійну доставку даних. При використанні протоколу ТСР різні повідомлення, що відносяться до одного виклику, або можуть передаватися по одному TCP-з'єднанні, або для кожного запиту і відповіді на нього може відкриватися окреме TCP-з'єднання. На малюнку 1.1 показано місце, займане протоколом SIP у стеку протоколів TCP / IP.
Адресація в мережах sip Для організації взаємодії з існуючими додатками IP-мереж і для забезпечення мобільності користувачів протокол SIP використовує адресу, схожу на адресу електронної пошти. Як адреси робочих станцій використовуються спеціальні універсальні покажчики ресурсів — URL (Universal Resource Locators), так звані SIP URL.
SIP-адреси бувають чотирьох типів:
q ім'я @ домен,
q ім'я @ хост,
q ім'я @ IP-адресу,
q № телефону @ шлюз.
Таким чином, адреса складається з двох частин. Перша частина — це ім'я користувача, зареєстрованого в домені або на робочій станції. Якщо друга частина адреси ідентифікує будь-якої шлюз, то в першій вказується номер телефону абонента.
У другій частині адреси вказується ім'я домену, робочої станції або шлюзу. Для визначення IP-адреси пристрою необхідно звернутися до служби доменних імен — Domain Name Service (DNS). Якщо ж у другій частині SIP-адреси розміщується IP-адресу, то з робочою станцією можна зв'язатися безпосередньо.
На початку SIP адреси ставиться слово 'sip:', яке вказує, що це саме SIP-адресу, тому що бувають і інші (наприклад, 'tel:'). Нижче наводяться приклади SIP-адрес:
sip: [email protected].
sip: [email protected]
sip: [email protected] Структура протоколу SIP
SIP є багаторівневим протоколом. Його функціонування описується комплексом слабко пов'язаних незалежних етапів обробки. Якщо елемент мережі SIP містить деякий рівень, це означає, що він підтримує групу правил, визначених для даного рівня. Проте не кожен елемент, що працює по протоколу SIP, містить всі рівні. Крім того, елементи, специфіковані для роботи в SIP, є логічними, а не фізичними. У дійсності фізичний елемент SIP може виконувати функції різних логічних елементів залежно від покладених на нього обов'язків.
Нижній рівень SIP відповідає за синтаксис і кодування. Кодування визначено з використанням розширеної граматики Backus-Naur Form (BNF). Повне BNF-опис для SIP міститься в RFC 3261, структура повідомлень SIP буде розглянута в розділі.
Другий рівень програмної реалізації протоколу є транспортним. Він визначає, як клієнт посилає запити і приймає відповіді і як сервер отримує запити і посилає відповіді по мережі. Транспортний рівень протоколу описаний в розділі.
Третій рівень - це рівень транзакцій. Транзакція - це запит, відісланий клієнтської стороною з використанням транспортного рівня SIP серверній стороні, разом з усіма відповідями на цей запит, відіслані серверної стороною клієнта. Рівень транзакцій здійснює повторну передачу повідомлень прикладного рівня, визначає відповідність відповідей запиту і повідомляє верхній рівень проткокола у разі таймауту. Будь-яка операція, яку виконує клієнт агента користувача (UAC), реалізується за допомогою серії транзакцій. Опис роботи рівня транзакцій наведено в параграфі. Агенти користувача (UA) та проксі-сервери з збереженням станів транзакцій (stateful проксі-сервери) містять рівень транзакцій. На противагу їм проксі-сервер без збереження станів (stateless проксі-сервер) не включає рівня транзакцій. Рівень транзакцій має клієнтську частину, звану клієнтської транзакцією і серверну частину, звану серверної транзакцією. Кожна з них представлена кінцевим автоматом (state machine), пов'язаних з обробкою певного типу запиту.