Frage

Ich wollte wissen, warum UDP in RTP verwendet wird anstelle von TCP?. Wichtige VoIP-Tools verwendet nur UDP, wie ich einige der VoIP-OSS gehackt.

War es hilfreich?

Lösung

Als DJ wies darauf hin, TCP ist über einen zuverlässigen Datenstrom erhalten und die Übertragung verlangsamen und Wiedersende beschädigten Pakete, um das zu erreichen.

UDP schert sich nicht um die Zuverlässigkeit der Kommunikation, und nicht verlangsamen oder erneut übertragen Daten.

Wenn Ihre Anwendung einen zuverlässigen Datenstrom, zum Beispiel benötigt, eine Datei von einem Webserver abzurufen, Sie TCP wählen.

Wenn Ihre Anwendung nicht über beschädigte oder verlorene Pakete schert, und Sie brauchen nicht den zusätzlichen Aufwand zu verursachen, die zusätzliche Sicherheit zur Verfügung zu stellen, können Sie UDP wählen statt.

VOIP wird durch zuverlässige Paketübertragung nicht wesentlich verbessert, und in der Tat kann in einigen Fällen der Dinge in TCP wie Neuübertragung und exponentielles Backoff eigentlich VOIP Qualität schaden. Daher war UDP eine bessere Wahl.

Andere Tipps

Viele gute Antworten gegeben haben, aber ich möchte darauf eine Sache weisen ausdrücklich:

Im Grunde ein kompletter Datenstrom ist eine schöne Sache für Audio / Video-Echtzeit zu haben, aber es ist nicht unbedingt erforderlich ist (wie andere haben darauf hingewiesen):

Die wichtige Tatsache ist, dass einige Daten, die zu spät kommen wertlos. Was nützt die fehlenden Daten für einen Rahmen, der vor einer Sekunde angezeigt werden sollte?

Wenn Sie die Verwendung von TCP sind (die auch die richtige Reihenfolge aller Daten garantiert), dann würden Sie nicht in der Lage sein, die mehr erhalten up-to-date Daten, bis die alten korrekt übertragen wird. Das ist doppelt schlecht: Sie für die erneute Übertragung der alten Daten warten und die neuen Daten (die jetzt verzögert) werden wahrscheinlich genauso wertlos

.

So RTP hat eine Art Best-Effort-Übertragung, dass es versucht, alle verfügbaren Daten in der Zeit zu übertragen, aber nicht versucht, neu zu Sendedaten, die während der Übertragung verloren / beschädigt (*). Es geht nur mit dem Leben auf und hofft, dass die wichtigeren aktuellen Daten wird es richtig.

(*) eigentlich weiß ich nicht, die Besonderheiten von RTP. Vielleicht ist es versuchen zu-Sende wieder, aber wenn es funktioniert, dann wird es nicht so aggressiv sein, wie TCP (was alle verlorenen Daten nicht immer akzeptiert werden).

Die andere sind richtig, aber die man nicht wirklich sagen, den wahren Grund, warum. Saua Art Hinweise auf sie, aber hier ist eine vollständigere Antwort.

Audio und Video ist in Echtzeit. Wenn Sie zu einem Radio hören oder Fernsehen, und das Signal unterbrochen wird, nicht nehmen Sie es nicht, wo Sie aufgehört haben .. Sie nur „beobachtet“ das Signal, wie es Bäche, und wenn Sie nicht beobachten es zu einem bestimmten Zeitpunkt, verlieren Sie es.

Der Grund ist einfach. Verzögern. VOIP versucht sehr hart, um die Größe der Verzögerung von der Zeit, dass jemand spricht in ein Ende zu minimieren und Sie es auf Ihrem Ende erhalten, und Ihre Antwort zurück. Ansonsten, wie Fehler aufgetreten, die Verzögerung zwischen wenn die Person sprach und wenn das Signal empfangen wurde würde kontinuierlich wachsen, bis sie nutzlos geworden ist.

Denken Sie daran, jede Verzögerung von einer erneuten Übertragung wiederholt werden muss, und das bewirkt, dass weitere Daten verzögert werden, dann bewirkt ein anderer Fehler eine noch größere Verzögerung. Die einzige praktikable Lösung ist, einfach alle Daten zu löschen, die. Nicht in Echtzeit angezeigt werden

A 1 Sekunde Verzögerung von Neuübertragung würde bedeuten, es nun 1 Sekunde von der Zeit, die ich etwas gesagt würde, bis Sie es gehört. Eine zweite Verzögerung von 1 Sekunde bedeutet nun, es sind 2 Sekunden von der Zeit, die ich etwas sagen, bis Sie es hören. Dies ist kumulativ, da die Daten mit der gleichen Geschwindigkeit, mit der sie gesprochen wird, und so weiter ...

abgespielt

RTP könnte verbindungsorientiert sein, aber dann wäre es (oder überspringen) Daten fallen müssen sowieso mit Neuübertragung Fehler zu halten, also warum mit dem zusätzlichen Aufwand die Mühe machen?

Technisch RTP-Pakete können eine TCP-Verbindung verschachtelt über werden. Es gibt viele tolle Antworten hier. Zwei weitere kleinere Punkte:

RFC 4588 beschreibt, wie eine erneute Übertragung mit RTP-Daten nutzen könnte. Die meisten Kunden, die RTP-Streams erhalten verwenden einen Puffer für Jitter in dem Netz Rechnung zu tragen, die typischerweise 1-5 Sekunden lang ist und das bedeutet, dass es Zeit für eine Neuübertragung der gewünschten Daten empfangen soll.

RTP-Datenverkehr kann eine TCP-Verbindung verschachtelt über werden. In der Praxis, wenn dies geschehen ist, schickte die Differenz zwischen Interleaved RTP (d.h. über TCP) und RTP über UDP ist, wie diese zwei ein verlustbehaftetes Netzwerk mit unzureichender Bandbreite für den Benutzer verfügbar führen über. Der Interleaved TCP-Stream wird seine ruckartig am Ende, wie der Spieler in einem Pufferzustand für Pakete ständig wartet ankommen. Je nach Spieler kann es springen vor, um aufzuholen. Mit einer RTP-Verbindung werden Sie Artefakte erhalten (Verschmieren / Reißen) in dem Video.

UDP wird häufig für verschiedene Arten von Echtzeit-Datenverkehr verwendet, die nicht strenge Ordnung brauchen, nützlich zu sein. Dies liegt daran, TCP eine Ordnung erzwingt, bevor die Daten an eine Anwendung vorbei (standardmäßig Sie, um dies durch Setzen des URG Zeigers zu bekommen, aber niemand scheint dies jemals zu tun), und das kann in einer Umgebung, in höchstem Maße unerwünscht sein, wo du würdest vielmehr aktuelle Echtzeit-Daten erhält als zuverlässig alte Daten erhalten.

RTP ist ziemlich unempfindlich Verlust auf Paket, so dass er nicht die Zuverlässigkeit von TCP erfordert.

UDP hat weniger Aufwand für Header, so dass ein Paket mehr Daten übertragen kann, so dass die Netzwerk-Bandbreite effizienter genutzt wird.

UDP bietet eine schnelle Datenübertragung auch.

So UDP ist die offensichtliche Wahl in Fällen wie diesem.

Neben all die anderen schönen und richtigen Antworten diesem Artikel gibt ein gutes Verständnis über die Unterschiede zwischen TCP und UDP.

UDP verwendet, wenn Daten gesendet werden, die nicht genau auf dem Ziel empfangen werden muss, um, oder wo keine stabile Verbindung benötigt wird.

TCP verwendet wird, wenn Daten müssen genau empfangen werden, Bit für Bit, keinen Verlust von Bits.

Video- und Audiostreaming, einige Bits, die auf dem Weg verloren gehen, haben keine Auswirkungen auf das Ergebnis in einer Art und Weise, dass erwähnenswert ist, nichts einig Pixel in einem Bild von einem Strom versagt, die einen Benutzer betrifft, auf DVD der verlorenen Bitrate höher ist.

nur eine Bemerkung: Jedes Paket in einem RTP-Datenstrom gesendet wird, eine Nummer eins höher ist als seine predecessor.This ermöglicht Thr Ziel gegeben, um zu bestimmen, ob irgendwelche Pakete fehlen. Wenn ein Paket mising, die beste Aktion für das Ziel zu ergreifen, ist die fehlende vaue durch Interpolation zu nähern. Retranmission ist keine proctical Option, da das neu übertragene Paket wäre zu spät, nützlich zu sein.

Ich möchte schnell zu dem, was Matt H sagte als Reaktion auf Stobor Antwort. Matt H erwähnt, dass RTP über UDP-Pakete können checksum'ed werden, so dass, wenn sie beschädigt sind, werden sie erneut gesendet bekommen. Dies ist eigentlich eine optionale Funktion bei den meisten TK-Anlagen. In Asterisk zum Beispiel können Sie aktivieren / deaktivieren Prüfsummen auf RTP über UDP-Verkehr in der rtp.conf Konfigurationsdatei mit der folgenden Zeile:

rtpchecksums=yes ; or no if you prefer

Cheers!

Das Real-time Transport Protocol ist ein Netzwerkprotokoll zu liefern Streaming von Audio- und Video-Medien über das Internet verwendet wird, wodurch die Voice Over Internet Protocol (VoIP).

RTP wird im allgemeinen mit einem Signalisierungsprotokoll, wie zum Beispiel SIP, die Verbindungen über das Netzwerk einrichtet verwendet. RTP-Anwendungen können die Transmission Control Protocol (TCP), aber die meisten nutzen die User Datagram Protocol (UDP) statt, weil UDP für eine schnellere Bereitstellung von Daten ermöglicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top