RTP/RTCP
RTP (Realtime Transport Protocol) et son compagnon RTCP (Realtime Transport Control Protocol) permettent respectivement de transporter et de contrôler des flots de données qui ont des propriétés temps-réel.
RTP et RTCP sont des protocoles qui se situent au niveau de l'application et utilisent les protocoles sous-jacents de transport TCP ou UDP. Mais l'utilisation de RTP/RTCP se fait généralement au-dessus de UDP.
RTP et RTCP peuvent utiliser aussi bien le mode Unicast (point à point) que le mode Multicast (multipoint).
Chacun d'eux utilise un port séparé d'une paire de ports. RTP utilise le port pair et RTCP le port impair immédiatement supérieur.
+-------------+ +-------------+
| |port pair port pair! |
| RTP |----------- -----------| RTP |
| appli A | | appli B |
+-------------+ +-------------+
+-------------+ +-------------+
| |port pair+1 port pair+1! |
| RTCP |----------- -----------| RTCP |
| appli A | | appli B |
+-------------+ +-------------+
RTP
Rôle
Le but du protocole RTP est de transporter des données qui ont des propriétés temps-réel.
Format du paquet
L'entête d'un paquet RTP est obligatoirement constituée de 12 octets, eventuellement suivie d'une liste d'identificateurs de sources contributeurs CSRCs dans le cas d'un mixer. Cette entête précède le "payload" qui représente les données utiles.
Les types de payload déjà standardisés sont décrits dans le fichier "rtp-payload.html".
+-------------------------+--------------------------------------
| RTP header (12 octets) | Payload ...
+-------------------------+--------------------------------------
Format de l''entête RTP
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
version V : 2 bits, V=2
padding P : 1 bit, si P=1 le paquet contient des octets additionnels de bourrage (padding) pour finir le dernier paquet.
extension X : 1 bit, si X=1 l'entête est suivie d'un paquet d'extension
CSRC count CC : 4 bits, contient le nombre de CSRC qui suivent l'entête
marker M : 1 bit, son interpretation est définie par un profil d'application (profile)
payload type PT : 7 bits, ce champ identifie le type du payload (audio, video, image, texte, html, etc.)
sequence number : 16 bits, sa valeur initiale est aléatoire et il s'incrémente de 1 à chaque paquet envoyé, il peut servir à détecter des paquets perdus
timestamp : 32 bits, réflète l'instant d'échantillonage du premier octet du paquet
SSRC: 32 bits, identifie de manière unique la source, sa valeur est choisie de manières aléatoire par l'application
CSRC : 32 bits, identifie les sources contribuantes.
---------------
J'avait dit à gauche... François