SIP
SIP (Session Initiation Protocol) je takzvaným signalizačním protokolem, který se používá pro navázání spojení v moderních síťových technologiích. Použití může nalézt všude, kde je potřeba v reálném čase navazovat spojení přes Internet (respektive jakoukoli síť), například video konference, hlasový přenos, přenos textových zpráv, atd. Aplikační protokoly odpovědné za tyto činnosti spolupracují s protokolem SIP, který jim poskytuje způsob vytvoření infrastruktury pro komunikaci mezi koncovými body na Internetu (tzv. User Agents).
Nejznámější aplikací protokolu SIP je IP telefonie. Obecně přenos hlasových služeb přes datovou strukturu se nazývá Void over Data (VoD), jelikož ale naprostá většina takových služeb je implementována nad protokolem IP, vžívá se celkově pro telefonii vedenou přes datovou infrastrukturu pojem Voice over IP (VoIP).
SIP je sice aplikační protokol, ale není žádným způsobem vertikálně orientován, proto musí spolupracovat s dalšími protokoly, jako například s Real-time Transport Protocol (RTP) který se používá k přenosu samotných dat v reálném čase a zajišťuje specifikovanou míru spolehlivosti (QoS - Quality of Service), nebo s Media Gateway Control Protocol (MEGACO) umožňující ovládat tzv. brány mezi datovou infrastrukturou a infrastrukturou klasických telefonních linek (Public Switched Telephone Network - PSTN).
Contents
Funkce SIP
SIP umožňuje vytvoření, modifikaci a ukončení spojení mezi různými User Agents (UA) na Internetu. Hlavní výhodou je, že tyto UA nemusí být stále na stejném místě, ale třeba být pokaždé připojeny jinde i jiným způsobem připojení a tedy i s jinou IP adresou, ale SIP tyto změny monitoruje.
Protokol podporuje 5 různých aspektů tvorby, spravování a ukončování spojení:
- Lokace uživatele - potřeba určit konečný bod spoje (tj. kde se uživatel nachází v daném okamžiku)
- Dostupnost uživatele - určení, zda volaná strana je dostupná, jinak také, zda je ochotna přijmout spojení
- Podporované vlastnosti - určení, přes jaké médium se bude spojení uskutečňovat
- Nastavení spojení - nastavení parametrů pro spojení
- Údržba spojení - zahrnuje přesměrování či ukončení spojení, či volání služeb
Architektura SIP
Zařízení jsou v protokolu SIP rozdělena do následujících kategorií:
- SIP User Agents (koncová zařízení uživatelů)
- User Agent Client - zařízení, které inicializuje spojení
- User Agent Server - zařízení, které spojení přijímá
Poznámka: Díky této architektuře je možné používat architekturu klient/server.
- SIP network Server
Hlavní funkcí SIP serveru je překládání SIP adres a tím lokalizace uživatelů na síti. Servery mohou fungovat v tzv. stavovém a bezstavovém modu. Ve stavovém modu si server ukládá odkud přišly jednotlivé požadavky stejně tak jako kam posílá odpovědi či kam přeposílá tyto požadavky. Proto při opakovém požadavku dokáže tento požadavek vyřídit rychleji. Bezstavový server si neuchovává žádné informace a proto je pro něj každý požadavek jako nový a unikátní. Z tohoto důvodu se bezstavové servery používají spíše na páteřní síti, kdežto stavové servery se používají spíše blíže k jednotlivým uživatelům. Další funkcí SIP serverů je rozdvojování příchozího hovoru, což umožňuje volání nejen jednoho, ale více uživatelů najednou.
Základy protokolu
SIP Adresace
Protokol SIP používá tzv. Uniform Resource Identifier (URI) pro adresaci. Prefixem pro takové URI je sip nebo sips při použití zabezpečeného spojení přes TLS. Příkladem adresovaných objektů jsou:
- uživatel online služby
- emailová schránka
- brána do PSTN sítě
- skupina v organizaci
Formát URI je specifikován v [|RFC 2396]. Obecně má tuto podobu:
sip:uzivatel:heslo@host:port;uri-parametry?hlavicky
Povinné jsou ale pouze specifikace protokolu (sip) a dále uživatel a host. Význam částí uzivatel a heslo jsou zřejmé. Část host je obvykle zadána ve formátu jména domény, ke které konkrétní uživatel spadá, ale je možné použít i adresu IP verze 4 i verze 6. Port identifikuje port na který má být požadavek odeslán (obvykle pak na tomto portu běží služba obsluhující SIP requesty). URI parametry jsou zadávány pomocí "jmeno_parametru=hodnota_paramatru", v případě mnohonásobných parametrů, každá dvojice je oddělena středníkem. Hlavičky jsou řešené stejně jako paramatry, akorát jsou od parametrů odděleny otazníkem. Navíc existuje speciální hlavička body, která umožňuje definovat i tělo zprávy. Celý tento mechanismus zajišťuje snadný mechanismus posílání celých zpráv i s hlavičkami.
Příklady
- sip:john@doe.com;maddr=239.255.255.1;ttl=15
- sip:letec@czech.com
- sips:Bob@okounel.com?subject=project%20x&priority=urgent
- sip:emil:emilpass@zizkov.com;transport=tcp
Požadavky
To, že protokol SIP funguje na principu komunikace klient/server vlastně znamená, že je komunikace probíhá stylem - požadavek a odpověď na požadavek. Požadavek obsahuje především typ požadavku (metoda) a dále sip URI adresáta požadavku a verzi protokolu. Rozlišují se hlavně následující typy požadavků:
- INVITE - k přizvání uživatele do spojení, tělo samotné zprávy pak obsahuje popis spojení
- ACK - potvrzení přijetí INVITE požadavku
- BYE - oznámení ostatním účastníkům spojení o vůli k ukončení spojení
- CANCEL - zrušení předchozího požadavku. Takto je možné zrušit pouze požadavky, které jsou dosud nevyřízené. Požadavek se stává vyřízeným odesláním odpovědi s kódem např. 200 (viz níže v sekci Odpovědi.
- REGISTER - používá se k registraci aktuální adresy klienta u svého SIP serveru