Difference between revisions of "SIP"

From NMS
Jump to: navigation, search
(Odpovědi)
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
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).
+
'''SIP''' ('''S'''ession '''I'''nitiation '''P'''rotocol) 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).  
 
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).  
Line 9: Line 9:
  
 
Protokol podporuje 5 různých aspektů tvorby, spravování a ukončování spojení:
 
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)
+
*'''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í
+
*'''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
+
*'''Podporované vlastnosti''' - určení, přes jaké médium se bude spojení uskutečňovat
*Nastavení spojení - nastavení parametrů pro spojení
+
*'''Nastavení spojení''' - nastavení parametrů pro spojení
*Údržba spojení - zahrnuje přesměrování či ukončení spojení, či volání služeb
+
*'''Údržba spojení''' - zahrnuje přesměrování či ukončení spojení, či volání služeb
  
 
=Architektura SIP=
 
=Architektura SIP=
Line 46: Line 46:
 
==Požadavky==
 
==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ů:
 
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í
+
* '''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
+
* '''ACK''' - potvrzení přijetí INVITE požadavku
* BYE - oznámení ostatním účastníkům spojení o vůli k ukončení spojení
+
* '''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 [[SIP#Odpovědi|Odpovědi]].
+
* '''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 [[SIP#Odpovědi|Odpovědi]].
* REGISTER - používá se k registraci aktuální adresy klienta u svého SIP serveru
+
* '''REGISTER''' - používá se k registraci aktuální adresy klienta u svého SIP serveru
  
 
==Odpovědi==
 
==Odpovědi==
 
Odpovědi se dělí do uvedených kategorií podle kódu odpovědi na:
 
Odpovědi se dělí do uvedených kategorií podle kódu odpovědi na:
 
+
* '''1xx''': Prozatímní odpovědi jako požadavek přijat, vyzvání
    *
+
* '''2xx''': Úspěch. Požadavek je přijat, pochopen a akceptován
      1xx: Prozatímní odpovědi jako požadavek přijat, vyzvání
+
* '''3xx''': Přesměrování. Je třeba vytvořit nový upravený požadavek.
    *
+
* '''4xx''': Chyba klienta. Špatná syntaxe požadavku, nebo požadavek nemůže být proveden
      2xx: Úspěch. Požadavek je přijat, pochopen a akceptován
+
* '''5xx''': Chyba serveru. Server není schopen provést platný požadavek
    *
+
* '''6xx''': Globální chyba. Požadavek nelze provést na žádném serveru
      3xx: Přesměrování. Je třeba vytvořit nový upravený požadavek.
+
    *
+
      4xx: Chyba klienta. Špatná syntaxe požadavku, nebo požadavek nemůže být proveden
+
    *
+
      5xx: Chyba serveru. Server není schopen provést platný požadavek
+
    *
+
      6xx: Globální chyba. Požadavek nelze provést na žádném serveru
+
  
 
Odpovědi s kódem 200 a výše jsou konečné, jejich přijetí ukončuje transakci.
 
Odpovědi s kódem 200 a výše jsou konečné, jejich přijetí ukončuje transakci.
 +
 +
'''Copyright''': Tato sekce je převzata doslovně z https://sip.cesnet.cz/doku.php?id=protokoly:sip
  
 
==Hlavičky==
 
==Hlavičky==
 +
Níže uvedené položky jsou tím podstatným výběrem z mnoha možných hlaviček
 +
* '''To''': Adresa volaného
 +
* '''From''': Adresa volajícího klienta
 +
* '''Via''': Adresa klienta, který vysílá požadavek nebo adresa serverů přes něž požadavek prošel a kudy se bude vracet odpověď
 +
* '''Call-Id''': Unikátní identifikace volání
 +
* '''Contact''': Aktuální skutečná adresa klienta
 +
* '''Record-Route''': Seznam adres serverů, kteří chtějí dostávat veškerou komunikaci náležející k hovoru
 +
* '''Route''': Posloupnost adres serverů, přes které je požadavek směrován a klienta, ke kterému má požadavek dorazit.
 +
* '''Request-URI''': Aktuální adresát požadavku. Údaj se vyskytuje v první řádce požadavku za metodou (typem požadavku)
  
==Typy spojení==
+
'''Copyright''': Tato sekce je převzata doslovně z https://sip.cesnet.cz/doku.php?id=protokoly:sip
  
 
=Komunikace=
 
=Komunikace=
 +
Pro komunikaci mezi klienty je nutné, aby znali navzájem svoje umístění (v případě IP telefonie IP adresu, proto nadále budu používat výraz IP adresy). Jelikož je ale celá koncepce IP telefonie dělána tak, aby uživatel mohl používat svůj identifikátor (telefonní číslo) nezávisle na tom, kde se právě nachází, musí být ošetřena možnost přesunu uživatelů. Toho je dosaženo tak, že uživatel se registruje pokaždé, když chce být dostupný (tj. obvykle ve chvíli, kdy je připojen k Internetu), u své lokalizační služby (obvykle poskytovatel SIP služeb). Tento poskytovatel lokalizační služby pak musí zajistit, že v případě dotazu od jiného uživatele na dané uživatelské jméno, vrátí IP adresu takto zaregistrováného uživatele. Lokalizační služba ale funguje i opačným směrem - ve chvíli, kdy zaregistrovaný uživatel chce komunikovat s jiným uživatelem a nezná jeho IP adresu, je potřeba se dotázat lokalizační služby a ta vrací IP adresu hledaného uživatele. Pokud ji sama nezná, ptá se dalších serverů v hierarchii SIP serverů. Celá tato hierarchie funguje na stejném principu jako služba DNS.
  
 
==Registrace==
 
==Registrace==
 +
Registrace začíná odesláním požadavku REGISTER v tomto formátu:
 +
 +
  REGISTER moje_SIP_domena
 +
  From: moje_ID@moje_SIP_domena
 +
  To: moje_ID@moje_SIP_domena
 +
  Contact: moje_IP_adresa
 +
 +
takže příkladem může být podobný požadavek:
 +
 +
  REGISTER voip.com
 +
  From: zbyek@voip.com
 +
  To: zbynek@voip.com
 +
  Contact: 123.123.12.22
 +
 +
* '''REGISTER''' - obsahuje identifikátor domény, v které se nachází uživatelský účet
 +
* '''From''' - SIP adresa subjektu, který je odpovědný za registraci. Bude rozdílná od ''To:'' pouze v případě, že registraci provádí třetí strana.
 +
* '''To:''' - SIP adresa subjektu, který se chce zaregistrovat (tj. SIP adresa uživatele, kterou obdržel od svého poskytovatele SIP služeb)
 +
* '''Contact:''' - IP adresa počítače/zařízení, které je aktuálně používané uživatelem
 +
 +
Registrace musí být potvrzena lokalizační službou (SIP serverem) odpovědí 200. Uživatel nesmí odeslat druhý požadavek na registraci dokud není první požadavek buď v pořádku obsloužen a uživatel tedy obdržel odpověď 200 nebo dokud nevyprší časový limit pro odpověď.
  
 
==Navázání a ukončení spojení==
 
==Navázání a ukončení spojení==
 +
Samotný akt komunikace mezi uživateli tedy začíná tím, že uživatel (iniciátor) spojení zjišťuje IP adresu druhého uživatele (příjemce). Požadavek na spojení se odesílá se SIP adresou příjemce. Pokud tedy iniciátor zná jeho IP adresu, může poslat požadavek na spojení přímo příjemci. Pokud ne, pošle tento požadavek svému SIP serveru a ten pak může pracovat ve dvou módech. Pokud pracuje v módu redirect, zjistí IP adresu podle SIP adresy příjemce a tuto IP adresu pošle zpět iniciátorovi, který pak kontaktuje přímo iniciátora. Pokud pracuje v módu proxy, zjistí IP adresu příjemce a navazuje s ním spojení jako kdyby byl sám iniciátorem. A pro samotného iniciátora naopak server v módu proxy funguje jako kdyby byl příjemcem.
 +
 +
Spojení se iniciuje požadavkem INVITE odeslaným příjemci. Ten, pokud chce spojení přijmout, musí odeslat odpověď 200 s informacemi jako je port, kde bude přijímat data, atd. Iniciátor po přijetí odpovědi zakončí iniciaci odesláním ACK pro opětné potvrzeni. Taková inicializace se nazývá "three ways handshake".
 +
 +
Pro ukončení spojení odešle strana, která chce spojení ukončit požadavek BYE. Ta musí být ještě potvrzena z druhé strany odpovědí 200 a tím je spojení ukončeno.
  
 
==Příklad==
 
==Příklad==
 +
Konkrétní příklad požadavku INVITE převzatý z https://sip.cesnet.cz/doku.php?id=protokoly:sip
 +
INVITE sip:mamut@iptel.org SIP/2.0.
 +
Max-Forwards: 10.
 +
Record-Route: <sip:195.113.222.3;ftag=5DAA94E7;lr=on>.
 +
Via: SIP/2.0/UDP 195.113.222.3;branch=z9hG4bK0a5d.90580ee2.0.
 +
Via: SIP/2.0/UDP 195.113.134.233:5062;branch=z9hG4bK2E1FD348.
 +
CSeq: 262 INVITE.
 +
To: <sip:mamut@iptel.org>.
 +
Proxy-Authorization: Digest username="bbb", realm="ces.net", nonce="43788e90381194d66364fced4dc7097828391e81", uri="sip:mamut@iptel.org", cnonce="abcdefghi", nc=00000001, response="ed4adec8Content-Type: application/sdp.
 +
From: "Franta Vomacka" <sip:bbb@ces.net>;tag=5DAA94E7.
 +
Call-ID: 379332994@195.113.134.233.
 +
Subject: sip:bbb@ces.net.
 +
Content-Length: 234.
 +
User-Agent: kphone/4.2.
 +
Contact: "Franta Vomacka" <sip:bbb@195.113.134.233:5062;transport=udp>.
 +
P-hint: outbound.
 +
Remote-Party-ID: "Franta Vomacka" <sip:950070101@ces.net>;party=calling;id-type=subscriber;privacy=off; screen=yes.
 +
.
 +
v=0.
 +
o=username 0 0 IN IP4 195.113.134.233.
 +
s=The Funky Flow.
 +
c=IN IP4 195.113.134.233.
 +
t=0 0.
 +
m=audio 33728 RTP/AVP 0 97 8 3.
 +
a=rtpmap:0 PCMU/8000.
 +
a=rtpmap:3 GSM/8000.
 +
a=rtpmap:8 PCMA/8000.
 +
a=rtpmap:97 iLBC/8000.
 +
a=fmtp:97 mode=30.
  
=SIP a Skype ?=
+
Konkrétní schématický příklad komunikace převzat z http://cs.wikipedia.org/wiki/Soubor:SIP.png
  
=SIP v komerčním použití=
+
[[Media:SIP.jpg|SIP.jpg]]
  
=SIP na FJFI=
+
=Použití SIP=
 +
==SIP a Skype ?==
  
=Užitečné odkazy=
+
==SIP v komerčním použití==
  
=Zdroje=
+
==SIP na FJFI==
 +
 
 +
=Užitečné odkazy=

Latest revision as of 17:58, 14 February 2007

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).

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

Odpovědi

Odpovědi se dělí do uvedených kategorií podle kódu odpovědi na:

  • 1xx: Prozatímní odpovědi jako požadavek přijat, vyzvání
  • 2xx: Úspěch. Požadavek je přijat, pochopen a akceptován
  • 3xx: Přesměrování. Je třeba vytvořit nový upravený požadavek.
  • 4xx: Chyba klienta. Špatná syntaxe požadavku, nebo požadavek nemůže být proveden
  • 5xx: Chyba serveru. Server není schopen provést platný požadavek
  • 6xx: Globální chyba. Požadavek nelze provést na žádném serveru

Odpovědi s kódem 200 a výše jsou konečné, jejich přijetí ukončuje transakci.

Copyright: Tato sekce je převzata doslovně z https://sip.cesnet.cz/doku.php?id=protokoly:sip

Hlavičky

Níže uvedené položky jsou tím podstatným výběrem z mnoha možných hlaviček

  • To: Adresa volaného
  • From: Adresa volajícího klienta
  • Via: Adresa klienta, který vysílá požadavek nebo adresa serverů přes něž požadavek prošel a kudy se bude vracet odpověď
  • Call-Id: Unikátní identifikace volání
  • Contact: Aktuální skutečná adresa klienta
  • Record-Route: Seznam adres serverů, kteří chtějí dostávat veškerou komunikaci náležející k hovoru
  • Route: Posloupnost adres serverů, přes které je požadavek směrován a klienta, ke kterému má požadavek dorazit.
  • Request-URI: Aktuální adresát požadavku. Údaj se vyskytuje v první řádce požadavku za metodou (typem požadavku)

Copyright: Tato sekce je převzata doslovně z https://sip.cesnet.cz/doku.php?id=protokoly:sip

Komunikace

Pro komunikaci mezi klienty je nutné, aby znali navzájem svoje umístění (v případě IP telefonie IP adresu, proto nadále budu používat výraz IP adresy). Jelikož je ale celá koncepce IP telefonie dělána tak, aby uživatel mohl používat svůj identifikátor (telefonní číslo) nezávisle na tom, kde se právě nachází, musí být ošetřena možnost přesunu uživatelů. Toho je dosaženo tak, že uživatel se registruje pokaždé, když chce být dostupný (tj. obvykle ve chvíli, kdy je připojen k Internetu), u své lokalizační služby (obvykle poskytovatel SIP služeb). Tento poskytovatel lokalizační služby pak musí zajistit, že v případě dotazu od jiného uživatele na dané uživatelské jméno, vrátí IP adresu takto zaregistrováného uživatele. Lokalizační služba ale funguje i opačným směrem - ve chvíli, kdy zaregistrovaný uživatel chce komunikovat s jiným uživatelem a nezná jeho IP adresu, je potřeba se dotázat lokalizační služby a ta vrací IP adresu hledaného uživatele. Pokud ji sama nezná, ptá se dalších serverů v hierarchii SIP serverů. Celá tato hierarchie funguje na stejném principu jako služba DNS.

Registrace

Registrace začíná odesláním požadavku REGISTER v tomto formátu:

 REGISTER moje_SIP_domena
 From: moje_ID@moje_SIP_domena
 To: moje_ID@moje_SIP_domena
 Contact: moje_IP_adresa

takže příkladem může být podobný požadavek:

 REGISTER voip.com
 From: zbyek@voip.com
 To: zbynek@voip.com
 Contact: 123.123.12.22
  • REGISTER - obsahuje identifikátor domény, v které se nachází uživatelský účet
  • From - SIP adresa subjektu, který je odpovědný za registraci. Bude rozdílná od To: pouze v případě, že registraci provádí třetí strana.
  • To: - SIP adresa subjektu, který se chce zaregistrovat (tj. SIP adresa uživatele, kterou obdržel od svého poskytovatele SIP služeb)
  • Contact: - IP adresa počítače/zařízení, které je aktuálně používané uživatelem

Registrace musí být potvrzena lokalizační službou (SIP serverem) odpovědí 200. Uživatel nesmí odeslat druhý požadavek na registraci dokud není první požadavek buď v pořádku obsloužen a uživatel tedy obdržel odpověď 200 nebo dokud nevyprší časový limit pro odpověď.

Navázání a ukončení spojení

Samotný akt komunikace mezi uživateli tedy začíná tím, že uživatel (iniciátor) spojení zjišťuje IP adresu druhého uživatele (příjemce). Požadavek na spojení se odesílá se SIP adresou příjemce. Pokud tedy iniciátor zná jeho IP adresu, může poslat požadavek na spojení přímo příjemci. Pokud ne, pošle tento požadavek svému SIP serveru a ten pak může pracovat ve dvou módech. Pokud pracuje v módu redirect, zjistí IP adresu podle SIP adresy příjemce a tuto IP adresu pošle zpět iniciátorovi, který pak kontaktuje přímo iniciátora. Pokud pracuje v módu proxy, zjistí IP adresu příjemce a navazuje s ním spojení jako kdyby byl sám iniciátorem. A pro samotného iniciátora naopak server v módu proxy funguje jako kdyby byl příjemcem.

Spojení se iniciuje požadavkem INVITE odeslaným příjemci. Ten, pokud chce spojení přijmout, musí odeslat odpověď 200 s informacemi jako je port, kde bude přijímat data, atd. Iniciátor po přijetí odpovědi zakončí iniciaci odesláním ACK pro opětné potvrzeni. Taková inicializace se nazývá "three ways handshake".

Pro ukončení spojení odešle strana, která chce spojení ukončit požadavek BYE. Ta musí být ještě potvrzena z druhé strany odpovědí 200 a tím je spojení ukončeno.

Příklad

Konkrétní příklad požadavku INVITE převzatý z https://sip.cesnet.cz/doku.php?id=protokoly:sip

INVITE sip:mamut@iptel.org SIP/2.0.
Max-Forwards: 10.
Record-Route: <sip:195.113.222.3;ftag=5DAA94E7;lr=on>.
Via: SIP/2.0/UDP 195.113.222.3;branch=z9hG4bK0a5d.90580ee2.0.
Via: SIP/2.0/UDP 195.113.134.233:5062;branch=z9hG4bK2E1FD348.
CSeq: 262 INVITE.
To: <sip:mamut@iptel.org>.
Proxy-Authorization: Digest username="bbb", realm="ces.net", nonce="43788e90381194d66364fced4dc7097828391e81", uri="sip:mamut@iptel.org", cnonce="abcdefghi", nc=00000001, response="ed4adec8Content-Type: application/sdp.
From: "Franta Vomacka" <sip:bbb@ces.net>;tag=5DAA94E7.
Call-ID: 379332994@195.113.134.233.
Subject: sip:bbb@ces.net.
Content-Length: 234.
User-Agent: kphone/4.2.
Contact: "Franta Vomacka" <sip:bbb@195.113.134.233:5062;transport=udp>.
P-hint: outbound.
Remote-Party-ID: "Franta Vomacka" <sip:950070101@ces.net>;party=calling;id-type=subscriber;privacy=off; screen=yes.
.
v=0.
o=username 0 0 IN IP4 195.113.134.233.
s=The Funky Flow.
c=IN IP4 195.113.134.233.
t=0 0.
m=audio 33728 RTP/AVP 0 97 8 3.
a=rtpmap:0 PCMU/8000.
a=rtpmap:3 GSM/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:97 iLBC/8000.
a=fmtp:97 mode=30.

Konkrétní schématický příklad komunikace převzat z http://cs.wikipedia.org/wiki/Soubor:SIP.png

SIP.jpg

Použití SIP

SIP a Skype ?

SIP v komerčním použití

SIP na FJFI

Užitečné odkazy