2009-03-20 9 views
6

Ich experimentiere mit Java-Sockets. Ich kann eine Verbindung zu einem Socket herstellen und Datenbytes senden/empfangen ohne ein Problem. Allerdings schnüffle ich auch den Traffic mit wireshark und merke, dass jedes Paket, das aus dem Java-Socket kommt, von wireshark als "tcp checksum incorrect" markiert ist.Java-Socket: TCP-Prüfsumme falsch

Wer hat einen Einblick?

java version "1.6.0_12" Java (TM) SE Runtime Environment (build 1.6.0_12-b04) Java HotSpot (TM) Client VM (Build 11.2-b01, mixed mode, sharing)

Wireshark v1.0.6 w/WinPcap 4.0.2

Antwort

13

Ich habe festgestellt, dass unter Verwendung eines Tools wie Wireshark Ihnen in vielen Fällen falsche tcp-Prüfsummen auf lokalen Paketen geben.

Das ist, weil das OS vernünftigerweise keine Mühe verschwendet, die tcp Prüfsummen auf Paketen zu füllen, die für den lokalen Wirt bestimmt sind (sie konnten schließlich nicht falsch sein).

Auch lokal erzeugte Pakete, die auf einer realen physischen Schnittstelle ausgehen, haben wahrscheinlich ohnehin hardware-generierte tcp-Prüfsummen. Dies bedeutet, dass gesendet Pakete im Allgemeinen aussehen, als ob sie falsche Prüfsummen haben (auf der Leitung, werden sie korrekt sein).

Richten Sie einen Monitor-Port auf Ihrem Switch ein, führen Sie Wireshark auf einer separaten Box aus, die damit verbunden ist, und Sie werden das wahre Bild sehen.