====== SIP ====== Aspekty sestavování spojení: * User location - určení koncového zař. pro komunikaci * User availability - rozpoznání "ochoty" zař. komunikovat * User capabilities - určení parametrů přenášeného media * Session setup - "ringigng", nastavení parametrů session na obou koncích * Session management - transfer,termination, invoking services, modify session params Sip neposkytuje služby, poskytuje pouze základ pro implementaci služeb (jinými protokoly). atlanta.com . . . biloxi.com . proxy proxy . . . Alice's . . . . . . . . . . . . . . . . . . . . Bob's softphone SIP Phone | | | | | INVITE F1 | | | |--------------->| INVITE F2 | | | 100 Trying F3 |--------------->| INVITE F4 | |<---------------| 100 Trying F5 |--------------->| | |<-------------- | 180 Ringing F6 | | | 180 Ringing F7 |<---------------| | 180 Ringing F8 |<---------------| 200 OK F9 | |<---------------| 200 OK F10 |<---------------| | 200 OK F11 |<---------------| | |<---------------| | | | ACK F12 | |------------------------------------------------->| | Media Session | |<================================================>| | BYE F13 | |<-------------------------------------------------| | 200 OK F14 | |------------------------------------------------->| | | INVITE sip:bob@biloxi.com SIP/2.0 Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds Max-Forwards: 70 To: Bob From: Alice ;tag=1928301774 Call-ID: a84b4c76e66710@pc33.atlanta.com CSeq: 314159 INVITE Contact: Content-Type: application/sdp Content-Length: 142 (Alice's SDP not shown) SIP/2.0 200 OK Via: SIP/2.0/UDP server10.biloxi.com ;branch=z9hG4bKnashds8;received=192.0.2.3 Via: SIP/2.0/UDP bigbox3.site3.atlanta.com ;branch=z9hG4bK77ef4c2312983.1;received=192.0.2.2 Via: SIP/2.0/UDP pc33.atlanta.com ;branch=z9hG4bK776asdhds ;received=192.0.2.1 To: Bob ;tag=a6c85cf From: Alice ;tag=1928301774 Call-ID: a84b4c76e66710@pc33.atlanta.com CSeq: 314159 INVITE Contact: Content-Type: application/sdp Content-Length: 131 (Bob's SDP not shown) Hlavička sip: Via - každý proxy server, přes který sig.projde se přidá do Via Record-Route - sip proxy na sebe může stáhnout veškerou signalizaci (bye, některé ack - totiž defaultně jdou napřímo mezi telefony) Registrace * UA(client) v pravidelných intervalech dává vědět serveru (reistrar) o svém umístění pomocí zpráv REGISTER. * Registrar si informace ukládá do db zvané "Location Service". * Registrace slouží pro potřeby routingu NEslouží k autorizaci hovorů Location Service * Klient není v registraci omezen na jedno zařízení, může se registrovat z více míst(zařízení najednou) * Údaje o všech umístěních URI klenta se ukládají v Location Service na proxy serveru Struktura SIP protokolu: * kódování BNF * transportní vrstva (stateless proxies) * transakční vrstva (stateful proxies) * TU transaction user SIP elements: * UAC * UAS * stateless Proxy * stateful Proxy * Registrar Dialog = peer-to-peer přímá komunikace mezi UA * Address-of-Record (AOR) = SIP URI, které odkazuje na doménu s loc.serv., která mapuje URI na jiné URI (obdoba NAT) za kterým je user dostupný, AOR=také zvané "veřejná adresa uživatele" * Back-to-Back User Agent (B2BUA) = logická entita, která zpracovává poždvky jako UAS a posílá dál jako UAC. Narozdíl od proxy, udržuje stav dialogu a musí se účastnit všech jeho requestů. * Call Leg = Dialog. * Final response: vše 2xx,3xx,4xx,5xx,6xx * Provisional response: vše 1xx * Proxy: Zajišťuje routing, policing. Interpretuje, případně přepisuje části requestů před tím než je pošle dál. * Redirect Server: pomocí zpráv 3xx odkazuje klienty na alternativní URI * Registrar Server: akceptuje REGISTER požadavky a ukládá je do loc.service * Regular Trancaction: všechny transakce kromě INVITE,ACK,CANCEL * Ringback: informace že protistrana vyzvánění (vyzv.tón ve sluchátku) * Stateful Proxy - udržuje transakce UAC a UAS * Stateless Proxy - pouze forwarduje požadavky 7. SIP Zprávy: * SIP je textově orientovaný protokol, používá kódování UTF-8 Struktura zprávy: generic-message = start-line *message-header CRLF [ message-body ] start-line = Request-Line / Status-Line CLRF = carriage-return line-feed sequence