LabVIEWForum.de - TCP vs UDP

LabVIEWForum.de

Normale Version: TCP vs UDP
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,
ich bin neu im Forum und auch noch LabVIEW-Anfänger. Meine Frage hat aber auch nur teilweise mit LabVIEW zu tun. Es geht um folgendes Problem:
Wir möchten zwischen 2 Rechnern eine Art Feedback-Schleife realisieren. Es handelt sich um ein optisches Experiment (nicht wichtig, nur zur Erklärung). Wir schicken ein optisches Signal und der eine Rechner (am Empfänger) bestimmt die Position des Signals und schickt diese Information über TCP oder UDP an den anderen Rechner. Hier wird die Optik nachgeregelt um die Position des Signals zu verbessern. Aufgrund des Experiments müssen wir sehr schnell nachregeln (am besten im kHz-Bereich). Meine Frage ist nun, eignet sich zur Informationsübertragung zwischen den beiden Rechnern eher UDP oder TCP. Ich habe selbst auch schon einiges gelesen und tendiere selbst zu UDP, will mich aber hier noch "absichern".

Meine Überlegungen waren:
Nachteil TCP: ein Paket kommt nicht an und wird daraufhin nocheinmal gesendet (schlecht für uns, weil ein "aktuelleres" Paket zum nachregeln besser wäre)
im Gegensatz UDP: es wird nicht überprüft ob Pakete ankommen, es wird einfach ein neues geschickt

Außerdem soll UDP etwas performanter sein. Was mich bei UDP allerdings stutzig macht: die Reihenfolge der Pakete kann durcheinander kommen (tritt das häufig auf?). Außerdem würden mich Erfahrungswerte intressieren wie oft es vorkommt das bei UDP Pakete verloren gehen. Gehen TCP Pakete genauso oft verloren und werden dann neu gesendet?

Ich hoffe die Problemstellung ist einigermaßen klar. Ich freue mich über Antworten!
Hallo tinger

TCP und UDP sind fürs Routing in komplexen Netzwerken konzipiert. Im Internet können schon mal Pakete vertauscht werden oder gar nicht ankommen.

So wie ich Dich verstanden habe, hast Du aber ein lokales Netzwerk ohne Routing. Da sind diese Gefahren sicher sehr viel geringer (um nicht zu sagen nicht vorhanden).

Ich würde eher zu TCP neigen, weil Du eine eingebaute Prüfsumme hast. Die übertragenen Daten sind also mit mit sehr hoher Wahrscheinlichkeit richtig.

Wenn die Performance dann nicht ausreichend sein sollte (was ich nicht glaube), hast Du dann auch schnell auf UDP umgestellt.

Gruss, BDB
Hab gerade nochmal im Wikipedia nachgeschaut: UDP hat optional auch eine Prüfsumme, ich weiss aber nicht, ob die beim LabVIEW UDP Knoten eingebaut ist ?!

Gruss, BDB
Danke für deine Antwort!
Die beiden Rechner befinden sich im selben Uni-Netz, sind aber örtlich sehr weit auseinander (~2km). Soweit ich weiss wird das Netzwerk über eine Richtfunkantenne übertragen. Es ist also nicht so, dass die Rechner im selben Netzwerk sind und direkt nebeneinander stehen (das kam vorher nicht so rüber, Entschuldigung). Denkst Du trotzdem das TCP performant genug ist?
Hallo tinger

Ich an Deiner Stelle würde beides versuchen. Der Aufwand für die Implementation ist gering. Es gibt auch gute Beispiele im Example Finder:

UDP Sender.vi
UDP Receiver.vi
TCP Communicator Active.vi
TCP Communicator Passive.vi

TCP ist mir rein gefühlsmässig angenehmer. Es gibt eine Antwort, wenn das Paket angekommen ist. Allerdings habe ich keine Erfahrungen mit UDP. Vielleicht ist es in Deinem Fall besser geeignet, die Performance ist höher, das stimmt.

Die Signallaufzeit kannst Du mit einem ping hereusfinden.

Das andere Problem, was Dir noch Sorgen macht mit dem Verlorengehen von Paketen ist nur bei grösseren Entfernungen und entsprechend häufigem Routen von Bedeutung. Die Pakete gehen ja manchmal um die ganze Welt und es kann auch mal ein Router ausfallen, u.s.w.

Deswegen ist das bei Dir kein Problem, meine ich.

Gruss, BDB
Ok, damit ist mir schon mal geholfen. Im Moment kann ich es noch nicht ausprobieren, aber wenn es soweit ist versuche ich daran zu denken hier meine Erfahrungen mit TCP und UDP zu schreiben.
Referenz-URLs