www.mikrocontroller.net

Forum: PC-Programmierung TCP vs UDP (Dieser Betreff is > 15 Zeichen)


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Fluffy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und auch in der selben Reihenfolge ankommen müssen.

Soll natürlich "Und auch nicht in der ...." heissen

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die nodelay Option kannte ich noch nicht. Vielleicht is das genau, dass 
was ich suche.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der vollständige Name ist TCP_NODELAY.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.