Hallo Leute,
mit was für einem Geschwindigkeitsvorteil kann man rechnen, wenn man für kleine Pakete (ca 10 Byte) UDP statt TCP verwendet. Eine gewisse Steigerung müsste es ja allein dadurch geben das TCP ein wenig wartet um mehrere Pakete zusammenzufassen.
Im LAN ergibt sich auch bei TCP eine Latency von nur 1ms
Hi Rodney,
ich denke mal, das du im Lan keine richtigen Ergebnisse für solch eine Messung erhalten wirst.
Tcp ist ein Protokoll, das ein Ankommen der Daten garantiert. Wenn also unterwegs im Wan (Internet) einige Packete verloren gehen, dann vordert TCP die Sendung dieses Packetes nach.
Bei UDP ist das nicht der Fall, Entweder geht bei UDP alles glatt, oder es kommt keine Nachricht an.
Also braucht TCP bei einer Verbindung, die "Gestört" ist länger. Dafür kommt die Nachricht aber auch an.
Wie das ist, wenn beide Nachrichten auf jeden Fall ankommen, k.a. Ich schätze aber mal, das UDP schneller sein wird, da es ein facheres Protokoll ist.
Gruß
War mir alles auch schon bekannt, trotzdem danke für die Erklärung.
Mir ist klar das UDP schneller sein muss, ich wollte nur wissen ob jemand Erfahrung hat um wie viel schneller es mit UDP wird.
Warum ist dir klar, dass Udp schneller sein muss?
Udp hat nur keine Fehlerkorrektur die kaputte Packete nachfordert. Wenn bei Udp ein Packet gehimmelt ist, wird es halt verworfen. Von der Geschwindigkeit ist TCP und UDP annähernd gleichschnell. Allerdings kann es passieren, dass die Daten mittels TCP langsamer übertragen werden, wenn Packete fehlen. Bei UDP verschwinden diese Packete wie gesagt aber. Weiterhin merkst du niemals bei UDP ob die Gegenseite die Packete entgegenommen hat, oder ob sie weg sind.
--
mfg
Franknstein
Besuchen sie das VisualC++ - Forum
Vielleicht wegen der geringeren Protokolldaten? Vielleicht weil keine Antwort erwartet wird? Wer weiss? Merkwürdig das jemand zu der Annahme kommt das UDP schneller sein könnte...
@Rodney: Die Grösse des Vorteil hängt schlicht und einfach von der Qualität und vom Traffic im Netzwerk ab. Niemand kann dir echte Vergleichszahlen liefern.
Kann man ja auch garnicht! Das eine ist dazu da, um große Mengen Daten rauszufeuern, bei denen es Egal ist ob ein Teil dieser Daten abhanden kommt. Mit dem anderen muss man etwas übertragen und sich sicher sein, dass es auf der Gegenseite ankommt.
Besuchen sie das VisualC++ - Forum
Original von Franknstein
Kann man ja auch garnicht! Das eine ist dazu da, um große Mengen Daten rauszufeuern, bei denen es Egal ist ob ein Teil dieser Daten abhanden kommt. Mit dem anderen muss man etwas übertragen und sich sicher sein, dass es auf der Gegenseite ankommt.
Die Begründung versteh ich irgendwie nicht, testen kann man es doch trotzdem.
Ich bin mir nur für mein Game nicht sicher ob sich der zusätzliche Programmieraufwand wegen UDP lohnt (Rückbestätigung z.B.)
Ich würde ehr den Mehraufwand aufwenden beim Protkolldesign um den Datendurchsatz zu senken. Umso weniger Daten gesendet werden, umso weniger Packete gehen verlohren und müssen nachgeschickt werden.... Und umso weniger Daten müssen verarbeitet werden. Das kostet nämlich vermutlich mehr Zeit wie das verschicken(wenn du das ungünstig machst)....
Besuchen sie das VisualC++ - Forum
Bei UDP können nicht nur Pakete verlorengehen.... es gibt schlichtweg auch keine resequenzierung.... die Pakete können in willkürlicher Reihenfolge eintreffen....
Wenn es also was wichtiges ist, dann kommt nur TCP in Frage... ausser Du machst selber ein Handshake drauf
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
UDP ist tatsächlich "schneller" wegen des bedeutend kleineren protokoll-overheads.
und trotz fehlender sicherheitsmechanismen ist UDP sehr verlässlich.
gerade bei einem spiel kann UDP interessant sein, da es multicast-fähig ist und dieselben daten gleichzeitig an mehrere addressaten versenden kann.
grüsse