Question

Je voulais savoir pourquoi UDP est utilisé dans RTP plutôt que TCP?. Les principaux outils VoIP utilisés uniquement UDP comme je l'ai piraté une partie de la VoIP OSS.

Était-ce utile?

La solution

DJ a souligné, TCP est sur le point d'obtenir un flux de données fiables, et de ralentir la transmission et des paquets corrompus retransmettent, afin d'atteindre cet objectif.

UDP ne se soucie pas de la fiabilité de la communication, et ne ralentira pas ou re-transmettre des données.

Si votre application a besoin d'un flux de données fiables, par exemple, pour récupérer un fichier à partir d'un serveur Web, vous choisissez TCP.

Si votre application ne se soucie pas des paquets corrompus ou perdus, et vous n'avez pas besoin d'engager les frais généraux supplémentaires pour fournir la fiabilité supplémentaire, vous pouvez choisir à la place UDP.

VOIP est pas significativement améliorée par une transmission fiable de paquets, et en fait, dans certains cas, les choses dans TCP comme la retransmission et backoff exponentielle peut réellement nuire à la qualité de VOIP. Par conséquent, UDP est un meilleur choix.

Autres conseils

Beaucoup de bonnes réponses ont été données, mais je voudrais souligner une chose explicitement:

Fondamentalement, un flux de données complet est une chose agréable d'avoir pour l'audio / vidéo en temps réel, mais ce ne est pas strictement nécessaire (comme d'autres l'ont souligné):

Le fait important est que certaines données qui arrive est trop tard sans valeur. A quoi bon les données manquantes pour un cadre qui aurait dû être affichée il y a une seconde?

Si vous deviez utiliser TCP (qui garantit également l'ordre correct de toutes les données), alors vous ne seriez pas en mesure d'obtenir des données plus à jour, jusqu'à ce que l'ancien est transmis correctement. Cela est doublement mauvais: il faut attendre la re-transmission des anciennes données et les nouvelles données (qui est maintenant retardée) sera probablement tout aussi sans valeur

.

RTP fait une sorte de transmission meilleur effort en ce sens qu'elle tente de transférer toutes les données disponibles dans le temps, mais ne tente pas de données re-transmission qui a été perdu / endommagé lors du transfert (*). Il va juste avec la vie et espère que les données actuelles plus importantes se il correctement.

(*) en fait je ne connais pas les détails de la RTP. Peut-être qu'il n'essayer de re-transmission, mais si elle le fait, alors il ne sera pas aussi agressive que TCP est (qui n'acceptera jamais aucune perte de données).

Les autres sont corrects, mais le ne pas vraiment vous dire la vraie raison pour laquelle. Saua genre de conseils à, mais voici une réponse plus complète.

Audio et vidéo est en temps réel. Si vous écoutez une radio ou regarder la télévision, et le signal est interrompu, il ne capte pas où vous avez quitté .. vous êtes juste « observer » le signal comme flux, et si vous ne pouvez pas observer à tout moment, vous le perdez.

La raison est simple. Retard. VOIP essaie très difficile de réduire la quantité de retard de la fois que quelqu'un parle dans une extrémité et vous obtenez sur votre fin, et votre réponse en retour. Dans le cas contraire, les erreurs se sont produites, le retard entre le moment où la personne a parlé et lorsque le signal a été reçu grandirait en continu jusqu'à ce qu'il devienne inutile.

Rappelez-vous, chaque retard d'une retransmission doit être rejoué, et qui provoque d'autres données à être retardées, puis une autre erreur entraîne un retard encore plus. La seule solution viable est de simplement laisser tomber toutes les données qui ne peuvent être affichées en temps réel.

Un délai de 1 seconde de retransmission signifierait qu'il serait maintenant 1 seconde du temps je l'ai dit quelque chose jusqu'à ce que vous l'avez entendu. Un second délai de 1 seconde signifie maintenant il est 2 secondes à partir du moment que je dis quelque chose jusqu'à ce que vous entendez. Ceci est cumulatif, car les données sont lues au même rythme auquel elle est parlée, et ainsi de suite ...

RTP pourrait être orienté connexion, mais il devrait abandonner (ou sauter) des données pour suivre de toute façon avec des erreurs de retransmission, alors pourquoi se soucier de la charge supplémentaire?

paquets RTP Techniquement peuvent être intercalés sur une connexion TCP. Il y a beaucoup de grandes réponses ici. Deux petits points supplémentaires:

RFC 4588 décrit comment on peut utiliser la retransmission des données RTP. La plupart des clients qui reçoivent des flux RTP emploient un tampon pour tenir compte de la gigue dans le réseau qui est typiquement 1-5 secondes de long et qui signifie qu'il est temps disponible pour une retransmission pour recevoir les données souhaitées.

trafic RTP peut être entrelacée via une connexion TCP. En pratique, lorsque cela est fait, la différence entre RTP entrelacée (à savoir sur TCP) et RTP envoyé sur UDP est de savoir comment ces deux effectuer sur un réseau avec une bande passante insuffisante lossy disponible pour l'utilisateur. Le flux TCP Interleaved va finir par être saccadé que le joueur attend toujours dans un état de mise en mémoire tampon pour les paquets à arriver. Selon le joueur, il peut sauter avant de rattraper son retard. Avec une connexion RTP, vous obtiendrez des artefacts (maculage / déchirure) dans la vidéo.

UDP est souvent utilisé pour différents types de trafic en temps réel qui n'a pas besoin commande stricte pour être utile. En effet, TCP applique une commande avant de passer des données à une application (par défaut, vous pouvez contourner ce problème en réglant le pointeur URG, mais personne ne semble jamais faire cela) et qui peut être très indésirable dans un environnement où vous feriez plutôt obtenir des données en temps réel en cours que les anciennes données obtenir de manière fiable.

RTP est assez insensible à la perte de paquets, il ne nécessite pas la fiabilité de TCP.

UDP a moins de frais généraux pour les en-têtes de sorte qu'un paquet peut transporter plus de données, de sorte que la bande passante du réseau est utilisé de manière plus efficace.

UDP assure une transmission de données rapide aussi.

UDP est le choix évident dans des cas comme celui-ci.

En plus de toutes les autres belles et bonnes réponses cet article donne une bonne compréhension des différences entre TCP et UDP.

UDP est utilisé chaque fois que les données sont envoyés, qui n'a pas besoin d'être exactement reçue sur la cible, ou si aucune connexion stable est nécessaire.

TCP est utilisé si les données doivent être exactement reçu, bit pour bit, pas de perte de bits.

Pour la vidéo et le streaming audio, quelques morceaux qui sont perdus sur le chemin n'affectent pas le résultat d'une manière qui est mentionable, certains pixels défaut dans une image d'un flux, rien qui affecte un utilisateur, sur DVD les perdus débit est plus élevé.

juste une remarque: Chaque paquet envoyé dans un flux RTP est donné un numéro supérieur à ses predecessor.This permet Thr destination de déterminer si des paquets sont manquants. Si un paquet est Mising, la meilleure action pour la destination à prendre est de rapprocher les vaue manquantes par interpolation. Retranmission est pas une option expercices puisque le paquet réémis serait trop tard pour être utile.

Je voudrais ajouter rapidement à ce que Matt H dit en réponse à la réponse de Stobor. Matt H a mentionné que RTP sur les paquets UDP peut être checksum'ed de sorte que s'ils sont corrompus, ils seront renvoyés. Ceci est en fait une option sur la plupart des autocommutateurs. Dans Asterisk, par exemple, vous pouvez activer / désactiver checksums sur votre RTP sur le trafic UDP dans le fichier de configuration de rtp.conf avec la ligne suivante:

rtpchecksums=yes ; or no if you prefer

Vive!

Le temps réel Transport Protocol est un protocole de réseau utilisé pour le streaming audio et fournir des médias vidéo sur Internet, permettant ainsi à la voix sur protocole Internet (VoIP).

RTP est généralement utilisée avec un protocole de signalisation, tels que SIP, qui établit des connexions à travers le réseau. RTP applications peuvent utiliser le Transmission Control Protocol (TCP), mais la plupart utilisent le protocole User Datagram (UDP) à la place, car UDP permet une livraison plus rapide des données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top