Frage

Ist es möglich, dass UDP-Daten beschädigt bei Ihnen ankommen?Ich weiß, dass es möglich ist, dass es verloren geht.

War es hilfreich?

Lösung

UDP-Pakete verwenden eine 16-Bit-Prüfsumme.Es ist nicht unmöglich, dass UDP-Pakete beschädigt sind, aber es ist ziemlich unwahrscheinlich.Auf jeden Fall ist es nicht anfälliger für Korruption als TCP.

Andere Tipps

Zunächst einmal handelt es sich bei der oben genannten „IP-Prüfsumme“ lediglich um eine IP-Header-Prüfsumme.Es schützt die Nutzlast nicht.Siehe RFC 791

Zweitens erlaubt UDP den Transport ohne Prüfsumme, was bedeutet, dass die 16-Bit-Prüfsumme auf 0 (also keine) gesetzt ist.Siehe RFC 768.(Ein übertragener Prüfsummenwert, der nur Null ist, bedeutet, dass der Sender keine Prüfsumme generiert hat.)

Drittens verfügt UDP, wie andere bereits erwähnt haben, über eine 16-Bit-Prüfsumme, was nicht die beste Methode zur Erkennung eines Mehrbitfehlers ist, aber nicht schlecht.Es ist durchaus möglich, dass sich ein unerkannter Fehler einschleicht, aber sehr unwahrscheinlich.

Möglich?Absolut.Unentdeckt? Unwahrscheinlich, da UDP eine Prüfsumme verwendet, die mehrere Bitfehler erfordern würde, um gültig zu erscheinen.Wenn ein Fehler erkannt wird, wird das System das Paket wahrscheinlich verwerfen – das sind die Risiken bei der Verwendung von UDP.

UDP-Pakete können auch in der falschen Reihenfolge zugestellt werden. Wenn Sie also ein Protokoll auf UDP aufbauen, müssen Sie dies ebenfalls berücksichtigen.

Eine häufige Form der „Korruption“, die ahnungslose Programmierer betrifft, ist Datagrammkürzung.Weitere Informationen finden Sie unter „Unix Network Programming“ von Stevens (Seite 539 in der 2. Auflage).

Sie könnten das MSG_TRUNC-Flag überprüfen ...

Kurze Antwort:JA.

Ausführliche Antwort:

Vor etwa 7 Jahren (vielleicht 2011?) haben wir festgestellt, dass UDP-Datagramme unbeabsichtigt geändert werden, wenn ein UDP-Datagramm zwischen einem Computer in China und einem anderen in Korea ausgetauscht wird.Natürlich wird auch die Prüfsumme im UDP-Paket-Header im Hinblick auf die Nutzlaständerung neu berechnet.Auf zwei Computern befand sich keine Schadsoftware.

Wir haben festgestellt, dass die unbeabsichtigte Änderung nur dann auftritt, wenn diese Bedingungen erfüllt sind:

  • Die ersten paar Bytes des Datagramms ähneln dem vorherigen Datagramm
  • Tritt nur auf, wenn UDP-Datagramme von einem Land zum anderen gehen

Ich weiß nicht genau, was die Ursache ist, aber ich vermute, dass es so ist Chinas Goldener Schild.

Also fügten wir den Datagramm-Verstümmelungsalgorithmus in unsere Software ProudNet ein und das Problem verschwand.Die Umsetzung ist nicht schwer.Verschlüsseln oder verschleiern Sie einfach die ersten paar Bytes Ihres Datagramms.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top