====== 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