Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
laboratoare:laborator09 [2016/05/06 08:50] Andrei Roșu-Cojocaru |
laboratoare:laborator09 [2016/05/06 09:55] Andrei Roșu-Cojocaru |
||
---|---|---|---|
Line 17: | Line 17: | ||
* **serverul de redirectare** (//eng.// redirect server) verifică baza de date cu locații, transmițând un răspuns către agentul utilizator; | * **serverul de redirectare** (//eng.// redirect server) verifică baza de date cu locații, transmițând un răspuns către agentul utilizator; | ||
* **serverul de localizare** (//eng.// location server) oferă informații cu privire la plasarea posibilă a agentului utilizator către serverele intermediare sau serverele de redirectare (doar acestea îl pot accesa) | * **serverul de localizare** (//eng.// location server) oferă informații cu privire la plasarea posibilă a agentului utilizator către serverele intermediare sau serverele de redirectare (doar acestea îl pot accesa) | ||
+ | |||
+ | Un **flux operațional** standard al unei sesiuni SIP implică următoarele operații: | ||
+ | - tranzacția 1: | ||
+ | - un agent utilizator (sursă) trimite o cerere de tip ''INVITE'' către un agent intermediar în scopul de a contacta un alt agent utilizator (destinație); | ||
+ | - agentul intermediar | ||
+ | - trimite înapoi (imediat) un răspuns de tip ''100 Trying'' către agentul utilizator sursă (pentru ca acesta să nu mai transmită nimic); | ||
+ | - caută agentul utilizator destinație folosind un server locație și îi trimite (mai departe) cererea de tip ''INVITE''; | ||
+ | - agentul utilizator destinație transmite, prin intermediul agentului intermediar, un răspuns de tipul ''180 Ringing'', către agentul utilizator sursă; | ||
+ | - tranzacția 2: în momentul în care agentul utilizator destinație este contactat, acesta transmite, tot prin intermediul agentului intermediar, un răspuns de tipul ''200 OK'', către agentul utilizator sursă și, din acest moment, **conexiunea este realizată**, transmițându-se pachete RTP în ambele sensuri; | ||
+ | - tranzacțoa 3: orice participant poate transmite un mesaj de tipul ''200 BYE'' pentru a termina legătura, fiind necesar ca acesta să fie confirmat prin ''200 OK'' de către cealaltă parte. | ||
+ | |||
+ | Se observă faptul că o sesiune de comunicare este împărțită în mai multe **tranzacții** care împreună alcătuiesc un **dialog**. | ||
+ | |||
+ | **Mesajele** în protocolul SIP sunt de două tipuri: | ||
+ | * **cereri** au forma ''<METODĂ> <URI>'' unde metodele pot fi: | ||
+ | * de bază | ||
+ | * ''INVITE'' reprezintă o cerere pentru deschiderea unei sesiuni cu un agent utilizator, putând conține informații de tip multimedia în corpul său; aceasta este considerată că a fost îndeplinită cu succes dacă s-a primit un cod de răspuns de tipul ''2xx'' sau s-a transmis un ''ACK''; un dialog stabilit între doi agenți utilizatori continuă până în momentul în care se transmite un mesaj de tipul ''BYE''; | ||
+ | * ''BYE'' este metoda folosită pentru a închide o sesiune cu un agent utilizator, putând fi trimisă de oricare dintre entitățile din canalul de comunicație, fără a trece prin serverul de înregistrare; | ||
+ | * ''REGISTER'' indică o cerere de înregistrare a unui agent utilizator către un server de înregistrare; un astfel de mesaj este transmis mai departe până ajunge la o entitate care deține autoritatea de a realiza această operație; o înregistrare poate fi realizată de un agent utilizator în numele altui agent utilizator (//eng.// third party registration); | ||
+ | * ''CANCEL'' este operația folosită pentru a închide o sesiune care nu a fost încă deschisă, putând fi transmisă fie de către un agent utilizator fie de către un agent intermediar; | ||
+ | * ''ACK'' este folosit pentru a confirma o cerere de tip ''INVITE''; | ||
+ | * ''OPTIONS'' este utilizat pentru a interoga un agent utilizator sau un server intermediar despre capabilitățile sale și pentru a determina disponibilitatea sa, rezultatul fiind o listă a funcționalităților entitpții respective; | ||
+ | * extensii: ''SUBSCRIBE'', ''NOTIFY'', ''REFER'', ''INFO'', ''UPDATE'', ''PRACK'', ''MESSAGE''; | ||
+ | * **răspunsuri** reprezintă un mesaj generat de un agent utilizator de tip server sau de un server SIP în replică la o cerere provenită de la un agent utilizator de tip client; acesta poate reprezenta inclusiv o confirmare formală pentru a preveni retransmisiile; există mai multe tipuri de coduri de răspuns: | ||
+ | |||
+ | ^ CLASA ^ TIP ^ DESCRIERE ^ ACȚIUNE ^ | ||
+ | | 1xx | Provizoriu | Informație | Se precizează starea unui apel înainte ca un rezultat să fie disponibil. | | ||
+ | | 2xx | Definitiv | Succes | Cererea a fost procesată cu succes. Pentru cereri de tip ''INVITE'' se întoarce ''ACK''. Pentru alte tipuri cereri, se oprește retransmiterea acestora. | | ||
+ | | 3xx | ::: | Redirectare | Se indică faptul că au fost furnizate mai multe locații posibile astfel încât ar trebui interogat un alt server pentru a se putea obține informația necesară. | | ||
+ | | 4xx | ::: | Eroare la Client | Cererea nu a fost procesată cu succes datorită unei erori la client, fiind necesar ca aceasta să fie reformulată. | | ||
+ | | 5xx | ::: | Eroare la Server | Cererea nu a fost procesată cu succes datorită unei erori la server, putând fi retransmisă către o altă entitate. | | ||
+ | | 6xx | ::: | Eroare Globală | Cererea a eșuat și nu există nici o șansă de a fi procesată corect pe o altă entitate, nici măcar dacă este reformulată. | | ||
+ | |||
+ | Exemple: | ||
+ | * ''100 Trying'', ''180 Ringing'', ''181 Call is Being Forwarded'', ''182 Call Queue'', ''183 Session Progress''; | ||
+ | * ''200 OK'', ''202 Accepted''; | ||
+ | * ''300 Multiple Choices'', ''301 Moved Permanently'', ''302 Moved Temporarily'', ''305 Use Proxy'', ''380 Alternative Service''; | ||
+ | * ''400 Bad Request'', ''401 Unauthorized'', ''403 Forbidden'', ''404 Not Found'', ''405 Method Not Allowed'', ''406 Not Acceptable'', ''407 Proxy Authentication Required'', ''408 Request Timeout'', ''422 Session Timer Interval Too Small'', ''423 Interval Too Brief'', ''480 Temporarily Unavailable'', ''481 Dialog/Transaction Does Not Exist'', ''483 Too Many Hops'', ''486 Busy Here'', ''487 Request Terminated''; | ||
+ | * ''500 Server Internal Error'', ''501 Not Implemented'', ''502 Bad Gateway'', ''503 Service Unavailable'', ''504 Gateway Timeout'', ''505 Version Not Supported'', ''513 Message Too Large'', ''580 Preconditions Failure''; | ||
+ | * ''600 Busy Everywhere'', ''603 Decline'', ''604 Does Not Exist Anywhere'', ''606 Not Acceptable''. | ||
===== Configurare ===== | ===== Configurare ===== |