Seite 2 von 2
Verfasst: 07.05.2007 19:29
von ZeHa
Ich bin kein Experte, aber ich glaub daß da weder UDP noch TCP was zu melden haben, sondern daß das eine oder mehrere Ebenen tiefer bereits geregelt wird. Du mußt es so sehen, daß UDP und TCP bereits die Nutzdaten enthalten, verpackt in ein kleines Paket. Aber das ganze Management mit IP-Adresse, MAC-Adresse und was da noch so alles dazugehört, übernehmen die unteren Schichten.
Verfasst: 08.05.2007 12:48
von dussel
Scarabol hat geschrieben:
Suchen sich die Pakete immer den schnellsten weg bei UDP?
Der Geschwindigkeitsunterschied zwischen UDP und TCP resuliert nicht aus einem kürzerem / besseren Weg zwischen Sender und Empfänger sondern aus dem Protokolldesign. In der Regel werden TCP und UDP Pakete identisch im Backbone identisch geroutet.
UDP Pakete werden in IP-Paketen vom Absender nach dem "Fire and Forget" Prinzip abgeschickt. Nach Protokolldesign UDP ist nicht vorgesehen das der Empfänger oder einer der Router auf dem Weg zum Empfänger eine Benachrichtigung an den Absender geben wenn das Paket nicht oder korrupt eingetroffen ist.
Bevor Daten über eine TCP Verbindung übermittelt werden, findet ein TCP Verbindungsaufbau statt. "Hallo? Wenn Du da bist antworte doch bitte und erhöhe meine Seq 4711 um eins" "Ja, Hallo bin da. Hier Deine Seq: 4712" "Ah, super. Schön das Du da bist. Werd Dir gleich was schicken. wird unter 4714 und durchnummeriert kommen. Wenn was nicht eintrifft gib kurz bescheid, dann schick ich den Teil nochmals !" ... usw ...
Nochmals "zum kürzesten Weg": Ein Datenpaket wird vom Absender abgeschickt. In der Regel an sein Default Gateway. Das wird schon wissen was es damit tun soll. Dieses GW schickt es wiederum an einem ihm bekannten Router, der seiner Meinung nach noch am ehesten etwas anfangen kann. usw.. bis es schließlich (hoffentlich) beim Empfänger eintrifft. Ein Paket sucht sich in 99,9% aller Fälle nicht den Weg (Route) sondern wird von Routern jeweils weitergeleitet. [Die 0,1% sind dann doch source-routed Pakete. Werden jedoch als Pfui Bah angesehen].
Verfasst: 08.05.2007 14:05
von X0r
UDP Pakete werden in IP-Paketen vom Absender nach dem "Fire and Forget" Prinzip abgeschickt. Nach Protokolldesign UDP ist nicht vorgesehen das der Empfänger oder einer der Router auf dem Weg zum Empfänger eine Benachrichtigung an den Absender geben wenn das Paket nicht oder korrupt eingetroffen ist.
Bevor Daten über eine TCP Verbindung übermittelt werden, findet ein TCP Verbindungsaufbau statt. "Hallo? Wenn Du da bist antworte doch bitte und erhöhe meine Seq 4711 um eins" "Ja, Hallo bin da. Hier Deine Seq: 4712" "Ah, super. Schön das Du da bist. Werd Dir gleich was schicken. wird unter 4714 und durchnummeriert kommen. Wenn was nicht eintrifft gib kurz bescheid, dann schick ich den Teil nochmals !" ... usw ...
Forge hat geschrieben:
Eins vorab:
Pakete können immer fehlerhaft ankommen.
UDP ignoriert das. Er sendet das Paket nur einmal und gut ist. Egal obs kaputt ist oder nicht.
TCP hingegen funktioniert so, dass die Pakete einfach nochmal gesendet werden, falls sie fehlerhaft ankommen sollten.
UDP ist schneller,
TCP ist sicherer.
Wenn du ein Datenaustauschprogramm programmieren willst, solltest du immer TCP benutzen.
Scarabol hat geschrieben:Danke Forge ist mir bereits bekannt.
Verfasst: 08.05.2007 15:06
von deMattin
Wirklich schöne Infoseiten zu dem Thema mit Hintergrund und Theorie:
Netzmafia-Skripte
Ruhruni Bochum - Lokale Netze
Gruß,
Martin
Verfasst: 08.05.2007 15:25
von Scarabol
Theoretisch kann man doch zwei Protokolle gleichzeitg verwenden ohne das sie sich in die Quere kommen, bei Multiplayer spielen sollten die Chat Nachrichten ja ankommen (TCP), aber ob die Spielerpositionen immer richtig ankommen ist doch egal (UDP) bzw. werden die fehlerhaften Daten aussortiert, oder?
Gruß
Scarabol
Verfasst: 08.05.2007 17:44
von X0r
Nein, automatisch wird garnichts gemacht. Bei Spielen schreibt man sich außerdem ein eigenes Protokoll, in der Regel.
Verfasst: 08.05.2007 17:47
von Thorium
Scarabol hat geschrieben:Theoretisch kann man doch zwei Protokolle gleichzeitg verwenden ohne das sie sich in die Quere kommen, bei Multiplayer spielen sollten die Chat Nachrichten ja ankommen (TCP), aber ob die Spielerpositionen immer richtig ankommen ist doch egal (UDP) bzw. werden die fehlerhaften Daten aussortiert, oder?
Ja, bei einigen Spielen werden auch in der Tat beide Protokolle verwendet, aber natürlich an unterschiedlichen Ports. Jenachdem welches Protokoll für welche Aufgabe besser passt.
Verfasst: 08.05.2007 17:48
von Thorium
Forge hat geschrieben:Nein, automatisch wird garnichts gemacht. Bei Spielen schreibt man sich außerdem ein eigenes Protokoll, in der Regel.
Das Spielprotokoll ist eine Schicht höher, basiert normalerweise auf TCP und/oder UDP.
Verfasst: 08.05.2007 19:08
von X0r
Jap.
Verfasst: 20.04.2009 16:34
von Langstein
Hat vielleicht jemand einen fertigen Code um UDP-Telegramme zu senden, ohne die Purbasic-Einschränkungen?
Ich habe mich mit WINPCAP probiert, ist aber doch reichlich aufwendig ein UDP zusammenzusetzten.