2017-03-25 1 views
-2

Ich möchte eine Datei von einem Client an einen Server senden. Ich möchte es senden, indem ich die Datei in eine Paketgröße von je 1000 Byte zerlege und sie einzeln einsende. Nachdem der Server das Paket empfangen hat, wird es möglicherweise beschädigt. Also, sollte ich einen Header verwenden und die Checksumme des Pakets zusammen mit dem Paket senden und prüfen, ob sie übereinstimmen, nachdem der Server sie empfangen hat? oder UDP hat eine Standardfunktion, um die Prüfsumme automatisch zu überprüfen?Passt die UDP-Verbindung nach dem Senden der Daten auf die Checksumme des Pakets?

+0

https://en.wikipedia.org/wiki/User_Datagram_Protocol#Checksum_computation – Barmar

+0

Die UDP-Prüfsumme ist _optional_ auf IPv4, aber es ist _required_ auf IPv6. –

Antwort

0

Ja, UDP hat eine Prüfsumme, die das Paket automatisch überprüft. Sie können über den Algorithmus auf Wikipedia lesen.

Viele Betriebssysteme haben eine Option, die steuert, ob die Prüfsummenkalkulation ausgeführt wird, und bis in die 1990er Jahre war es üblich, dass dies aus Leistungsgründen deaktiviert wurde. Ich denke, die meisten haben es in diesen Tagen aktiviert, und es ist wahrscheinlich, dass es automatisch von vielen NICs getan wird.

0

UDP hat eine 16-Bit-Prüfsumme, und Ihr Betriebssystem wird wahrscheinlich das Paket fallen lassen, wenn eine Nichtübereinstimmung vorliegt. Sie können diese Prüfsumme jedoch auf 0 setzen, um die Prüfung zu umgehen, und Ihre eigenen implementieren.

Aber wenn Sie UDP in erster Linie verwenden, sollten Sie erwarten einige Pakete fallengelassen oder verloren. Dies funktioniert nicht gut beim Übertragen von Dateien. Daher würde ich Ihnen empfehlen, TCP dafür zu verwenden.

+0

Danke. Ich habe versucht, UDP zu verwenden und eine TCP-ähnliche Verbindung manuell durch ACKs herzustellen. Also, wenn das OS das Paket fallen lässt, sollte der Server es erneut senden, oder? Angenommen, ich möchte keinen Paketverlust. – Manohar

+0

Nein, wenn ein kleines Objekt gedrückt wird, senden Sie schnell vom Server-Client angefordert, die Teile fehlen. UDP-Wahl für die Beschleunigung und Nicht-Block-Kommunikation (wie Strom), warum nicht Push als eine statische Datei (www_style)? @Manhar – dsgdfg

Verwandte Themen