TCP vs UDP (Dieser Betreff is > 15 Zeichen)

Gast #1138458
Lesenswert?

Servus!

Ich Programmiere an einem Spiel, dass einen Multiplayermodus übers 
Internet hat. Im Moment läuft das über TCP. Die Bandbreite benötigte 
Bandbreite is relativ gering, also unkritisch. Aber es gibt immer wieder 
spürbare Verzögerungen.

UDP soll ja schneller, als TCP sein. Wie groß is dieser Unterschied in 
der Praxis? Würde ich mit UDP eine spürbar geringere Latenz bei der 
Übertragung übers Internet haben?

Gruß,
Klaus
Gast #1138483
Lesenswert?

Di wichtigste Frage ist, ob du es dir leisten kannst ein Packet zu 
verlieren. Dann ist die Frage ob TCP oder UDP schon beantwortet.

Bezueglich Geschwindigkeiten... was spricht dagegen das mal zu messen ?
#1138497
Lesenswert?

Klaus wrote:

> UDP soll ja schneller, als TCP sein. Wie groß is dieser Unterschied in
> der Praxis? Würde ich mit UDP eine spürbar geringere Latenz bei der
> Übertragung übers Internet haben?

Nur wenn du jedesmal eine neue TCP-Verbindung aufbaust. Bei einer 
bestehenden TCP-Verbindung und passender Parametrisierung (NODELAY 
Option) wird die Latenz primär von der DSL-Strecke bestimmt - jedenfalls 
ohne Fastpath - und dem Rest vom Internet. Ob TCP oder UDP ist da nicht 
wesentlich.

Ohne die NODELAY Option kann es allerdings zu Verzögerungen kommen, weil 
der Network Stack u.U. versucht, genug Daten für eine volle MTU 
einzusammeln.

PS: Eine saubere Leitung vorausgesetzt.
Gast #1138499
Lesenswert?

UDP ist nicht schneller. Der Vorteil von UDP ist aber das im Protokol 
nicht verlangt wird das alle Pakete ankommen. Und auch in der selben 
Reihenfolge ankommen müssen.

Verlorene Pakete bei TCP:

Sender - Pkt4 - Pkt3 - Pkt2 - Pkt1 - Empfänger
      ----------IP Strecke-----------

Stellen wir uns mal vor jetzt passiert folgendes:
Pkt1 kommt beim Empfänger an, alles toll
Jetzt kommt aber Pkt3 statt Pkt2, was passiert? Der Empfänger sendet dem 
Sender einen Retransmission Request, der Empfänger muss jetzt ab Pkt 2 
alles nochmal senden obwohl vlt. schon 20 Packets auf den Leitungen sind 
und beim Sender ankommen.

Bei UDP fallen verlorene Packets nicht auf (zumindest nicht auf 
Protokollebene). Natürlich muss die darüberliegende Software dann aber 
mit sowas klarkommen.

Also besonders wenn es auf Latenzen ankommt ist UDP meist die bessere 
Wahl, man muss halt dann in der darüberliegenden Schicht dafür sorgen 
das Informationen interpoliert werden können. Und WICHTIGE Sachen dann 
auch doch wirklich ankommen.

Die alte UT Engine hatte da ein paar sehr interessante Informationen zu.
Gast #1138501
Lesenswert?

Ein Packetverlust darf bei mir nicht sein. Dass müsste ich dann selber 
sicherstellen, dass das Packet neu übertragen wird.

Und bis das ordentlich implementiert ist, bräuchte ich ne Weile ;) 
Desshalb wollte ich erstmal nach Erfahrungswerten fragen.

Über die Theorie von UDP und TCP is ja genügend im Netz zu finden. Aber 
wie groß die Effekte in der Praxis sind, hab ich noch nichts drüber 
gefunden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren