Protocol de transport în timp real

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 15 noiembrie 2014; verificările necesită 25 de modificări .

Protocolul RTP ( Protocol de transport în timp real ) operează la nivelul aplicației (OSI-7) și este utilizat în transmiterea traficului în timp real .  Protocolul a fost dezvoltat de Grupul de lucru pentru transport audio-video de la IETF și publicat pentru prima dată în 1996 ca RFC 1889 ( RFC 1889 a fost învechit de la RFC 3550 în 2003).

Protocolul RTP poartă în antet datele necesare restabilirii datelor audio sau imaginii video la nodul receptor, precum și date despre tipul de codificare a informațiilor ( JPEG , MPEG , etc.). În antetul acestui protocol, în special, sunt transmise un marcaj de timp și un număr de pachet. Acești parametri permit, cu întârzieri minime, să se determine ordinea și momentul decodării fiecărui pachet, precum și să interpoleze pachetele pierdute.

RTP nu are un număr de port rezervat standard. Singura restricție este că conexiunea se face folosind un număr par, iar următorul număr impar este utilizat pentru comunicațiile RTCP . Faptul că RTP utilizează adrese de porturi alocate dinamic îl face dificil să treacă prin firewall -uri, un server STUN este de obicei folosit pentru a ocoli această problemă .

Stabilirea și deconectarea unei conexiuni nu este inclusă în lista de capabilități RTP, astfel de acțiuni sunt efectuate printr -un protocol de semnalizare (de exemplu, protocol RTSP sau SIP ).

Descrierea protocolului

RTP a fost conceput ca un protocol în timp real , de la capăt la capăt, pentru streaming de date . Protocolul include capacitatea de a compensa fluctuația și de a detecta pachete de date în afara secvenței - evenimente tipice în timpul transmisiei prin rețele IP. RTP acceptă transferul de date cu mai multe destinații prin Multicast . [1] RTP este considerat standardul principal pentru transmisia de voce și video prin rețele IP și împreună cu codecuri.

Aplicațiile care generează fluxuri în timp real necesită livrarea la timp a informațiilor și pot tolera pierderi de pachete pentru a atinge acest obiectiv. De exemplu, o pierdere de pachete într-o aplicație audio poate avea ca rezultat o fracțiune de secundă de liniște care ar putea să nu fie vizibilă cu algoritmii adecvați de ascundere a erorilor. [2] Protocolul TCP , deși standardizat pentru transmisia RTP, [3] nu este utilizat în general în aplicațiile RTP, deoarece fiabilitatea transmisiei în TCP generează întârzieri de timp. În schimb, majoritatea implementărilor RTP se bazează pe UDP . În plus, există și alte specificații pentru protocoalele de transport SCTP și DCCP , dar acestea nu sunt utilizate pe scară largă. [4] [5]

Componentele protocolului

Specificația RTP descrie patru sub-protocoale:

Sesiuni

Se stabilește o sesiune RTP pentru fiecare flux media. O sesiune constă dintr- o adresă IP și o pereche de porturi pentru RTP și RTCP. De exemplu, fluxurile audio și video vor avea sesiuni RTP diferite, permițând receptorului să aloce un flux specific pentru aceasta. [6] Porturile care formează o sesiune comunică între ele prin intermediul altor protocoale, cum ar fi SIP (conținând protocolul SDP [7] în mesajele lor ) și RTSP (folosind SDP în metoda Setup). Conform specificației, RTP nu are un număr de port rezervat standard. Singura restricție este că conexiunea se face folosind un număr par, iar următorul număr impar este utilizat pentru comunicațiile RTCP . RTP și RTCP folosesc de obicei porturi UDP neprivilegiate (16k-32k), dar pot fi utilizate alte porturi, deoarece RTP în sine este independent de stratul de transport.

Structura pachetului

+ Biți 0-1 2 3 4-7 opt 9-15 16-31
0 Ver. P X CC M PT Număr de serie
32 Timestamp-ul
64 identificator SSRC
96 dacă CC>0 [Identificatori CSRC]
96+(CC×32) dacă X=1 [Titlul extensiei - Valoare definită de profil ] [Antetul extensiei - numărul de blocuri de date pe 32 de biți (EHL)]
96+(CC×32)+32 [Antet extensie - Blocuri de date]
96+(CC×32)+X*(32+32×EHL)  
Date
 
dacă P=1 Date de umplutură L

0-1 - Ver . (2 biți) indică versiunea protocolului. Versiunea curentă este 2.
2 - P (un bit) este utilizat în cazurile în care pachetul RTP este umplut cu octeți goli la sfârșit.
3 - X (un bit) este folosit pentru a indica extensiile de protocol implicate în pachet.
4-7 - CC (4 biți) conține numărul de identificatori CSRC care urmează antetului permanent.
8 - M (un bit) este utilizat la nivel de aplicație și definit de profil. Dacă acest câmp este setat, atunci datele pachetului au o semnificație specială pentru aplicație.
9-15 - PT (7 biți) indică formatul sarcinii utile și determină interpretarea acesteia de către aplicație.
64-95 - SSRC indică sursa ceasului.
EHL (Extension Header Length) - numărul de cuvinte pe 32 de biți din blocul de date de extensie antet.
L este ultimul octet din pachet, definind lungimea zonei de umplutură în octeți (utilizat pentru alinierea ultimului pachet).

Specificația RTP

Vezi și

Link -uri

Note

  1. Daniel Hardy. Rețea  (neopr.) . - Universitatea De Boeck, 2002. - P.  298 .
  2. Colin Perkins, p.46
  3. RFC 4571
  4. Farrel, Adrian. Internetul și protocoalele sale  (neopr.) . - Morgan Kaufmann , 2004. - P. 363. - ISBN 9781558609136 .
  5. Ozaktas, Haldun M.; Levent Onural. TELEVIZIUNEA TRIDIMENSIONALĂ  (nedefinită) . — Springer, 2007. - S. 366. - ISBN 9783540725312 .
  6. Zurawski, Richard. Protocoale RTP, RTCP și RTSP // Manualul tehnologiei informației industriale  . - CRC Press , 2004. - P.  28-7 . — ISBN 9780849319853 .
  7. RFC 4566 : SDP: Session Description Protocol , M. Handley, V. Jacobson, C. Perkins, IETF (iulie 2006)