INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

TCP - UDP Checksumme



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.11.2014, 08:40
Beitrag #1

michael.stahl Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2014

2013
2013
kA



TCP - UDP Checksumme
Hallo,

kann mir jemand sagen wie sich die TCP, bzw. UDP Blöcke bezüglich der Checksumme verhalten?

Muss bei UDP die Checksumme mit in den Daten liegen, bzw. sind die Daten die Rohdaten incl. Header oder packt LV den Header drum herum? Vermutlich nicht, sonst könnte man ja irgendwo den Port für Ziel und Quelle angeben, oder?

Wie ist das beim TCP-Block? Wird dort die Checksumme automatisch generiert und mit geschickt, bzw. geprüft beim Empfangen?

Vielen Dank.
Gruß
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.11.2014, 08:56 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2014 08:57 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 16.382
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: TCP - UDP Checksumme
Hallo Michael,

wenn du ein UDPWrite aufrufst, dann übergibst du hier NUR deine Nutzdaten. Alles weitere erledigt entweder LabVIEW oder der Netzwerktreiber des Betriebssystems!

Du musst dir über irgendwelche Checksummen in den Datenpaketen, die dann über den Ethernet-Port gehen, keinerlei Gedanken machen…

Zitat:könnte man ja irgendwo den Port für Ziel und Quelle angeben, oder?
Das kann man doch: Ports werden beim Öffnen der UDP-Referenz angegeben - und beim UDPWrite…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.11.2014, 09:01 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2014 09:21 von jg.)
Beitrag #3

michael.stahl Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2014

2013
2013
kA



RE: TCP - UDP Checksumme
Hallo GerdW,

nutzt denn LV die CRC bei UDP? Es besteht ja auch die Möglichkeit in das CRC-Feld 0 einzutragen, dann wird die CRC nicht berücksichtigt.
Wenn die CRC genutzt wird, nach welchem Verfahren wird sie gebildet? Wie es unter Wikipedia UDP beschrieben ist?

Berechnung der Prüfsumme (Quelle Wikipedia: http://de.wikipedia.org/wiki/User_Datagram_Protocol )

Die Berechnung der Prüfsumme beim Sender erfolgt nach folgendem Algorithmus:

Setze das Prüfsummenfeld im UDP-Header auf 0000 0000 0000 0000.
Erzeuge eine vorzeichenlose 32-Bit-Zahl für die Prüfsumme, initialisiere sie mit Nullen.
Fasse direkt benachbarte Bytes des UDP-Paketes zu 16-Bit-Blöcken zusammen. Falls der letzte Block weniger als 16 Bit hat, dann fülle ihn von hinten mit Nullen auf, bis er 16 Bit hat.
Speichere das Ergebnis der Addition aller 16-Bit-Blöcke mit Übertrag in der Prüfsumme.
Fasse direkt benachbarte Bytes des Pseudo-Headers zu 16-Bit-Blöcken zusammen.
Speichere das Ergebnis der Addition dieser 16-Bit-Blöcke und der bisherigen Prüfsumme mit Übertrag in der Prüfsumme.
Fasse direkt benachbarte Bytes der Prüfsumme zu zwei 16-Bit-Blöcken zusammen, addiere diese und speichere das Ergebnis mit Übertrag in der Prüfsumme, bis kein Übertrag mehr bei der Addition entsteht.
Die signifikantesten 16 Bit der 32-Bit-Prüfsumme sind nun Nullen. Die weniger signifikanten Bits sind die eigentliche Prüfsumme; speichere diese als vorzeichenlose 16-Bit-Zahl.
Wenn diese 16-Bit-Zahl nicht nur aus Einsen besteht, dann speichere ihr Einerkomplement im UDP-Header (sowohl 1111 1111 1111 1111 und das Einerkomplement hiervon, 0000 0000 0000 0000, symbolisieren die Zahl 0). In IPv4 UDP wird 0000 0000 0000 0000 auch verwendet, um zu signalisieren, dass keine Prüfsumme berechnet wurde. IPv6-UDP-Pakete mit der Prüfsumme 0000 0000 0000 0000 sind ungültig (RFC 6935).

Der Empfänger prüft zunächst, ob das Prüfsummenfeld des empfangenen Paketes nur aus Nullen besteht. Wenn ja, kann er das Paket als richtig empfangen werten, da keine Prüfsumme vorhanden ist. Wenn nicht, so wendet er den oben beschriebenen Algorithmus auf das empfangene Paket und den zugehörigen Pseudo-Header an, lässt den letzten Schritt weg und addiert die selbst berechnete Prüfsumme auf die im Prüfsummenfeld empfangene, was durch die Einerkomplementdarstellung einer Subtraktion entspricht. Erhält der Empfänger 0 als Ergebnis der Addition (bzw. Subtraktion), so wertet er die empfangenen Daten als mit den gesendeten übereinstimmend.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.11.2014, 09:04 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2014 09:05 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 16.382
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: TCP - UDP Checksumme
Hallo Michael,

noch einmal:
- Du stellst in LabVIEW NUR das Datenfeld in der UDP-Botschaft bereit.
- Alles andere macht der Netzwerktreiber des Betriebssystems…

Was willst du EIGENTLICH erreichen und wissen?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.11.2014, 09:48
Beitrag #5

michael.stahl Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2014

2013
2013
kA



RE: TCP - UDP Checksumme
Ich muss mit einem embedded System kommunizieren. Zuerst war UDP angedacht, womit die Frage aufkam nach welchem Verfahren die CRC gebildet werden muss.
Dann dachte ich an TCP, weil ich davon ausging das bei TCP die CRC automatisch generiert wird. Nachdem ich aber im Netz nichts ausagekräftiges gefunden habe, habe ich mich hier ans Forum gewandt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.11.2014, 10:20
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 16.382
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: TCP - UDP Checksumme
Hallo michael,

ich musste bei Nutzung von UDP (zwischen verschiedensten Rechnern und "EmbeddedControls") bisher nie irgendeine Checksumme ausrechnen/bereitstellen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.11.2014, 10:25
Beitrag #7

michael.stahl Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2014

2013
2013
kA



RE: TCP - UDP Checksumme
Wenn Du in dem CRC-Feld eine 0 eingetragen hast, wird die auch nicht geprüft. Ergo funktioniert alles.

Hast Du nur die eignetlichen Nutzdaten übertragen?

Ein UDP-Datagramm besteht ja aus Quell-Port, Ziel-Port, Länge, Prüfsumme und Daten.

Oder hast Du den Header aus Quell-Port, Ziel-Port, Länge und Prüfsumme davor gepackt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.11.2014, 10:27 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2014 10:28 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 16.382
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: TCP - UDP Checksumme
Hallo Michael,

ich wiederhole mich erneut:
Zitat:wenn du ein UDPWrite aufrufst, dann übergibst du hier NUR deine Nutzdaten
Nein, keine zusätzlichen Header.
Die Zieladresse wird woanders festgelegt!

Auf einem cRIO sieht das bei mir so aus:
   
Das "Format MSG"-VI erzeugt den String mit den NUTZDATEN…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: