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 ).
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]
Specificația RTP descrie patru sub-protocoale:
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.
|
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).
TCP /IP pe straturi ale modelului OSI | Protocoale de bază|
---|---|
Fizic | |
canalizat | |
reţea | |
Transport | |
sesiune | |
Reprezentare | |
Aplicat | |
Altele aplicate | |
Lista de porturi TCP și UDP |