2009-03-20 3 views
6

Sto sperimentando socket w/java. Posso connettermi a un socket e inviare/ricevere byte di dati senza un problema. Tuttavia sto anche sniffando il traffico usando wireshark e notando che ogni pacchetto proveniente dal socket java è contrassegnato da wireshark come "checksum tcp non corretto".Socket Java: checksum TCP errato

Qualcuno ha qualche idea?

versione java "1.6.0_12" Java (TM) SE Runtime Environment (build 1.6.0_12-b04) Java HotSpot (TM) Cliente VM (build 11.2-b01, modalità mista, condivisione)

Wireshark v1.0.6 w/WinPcap 4.0.2

risposta

13

Ho trovato che in molti casi, l'utilizzo di uno strumento come Wireshark fornirà checksum tcp errati sui pacchetti locali.

Questo perché il sistema operativo, sensibilmente, non spreca fatica a compilare i checksum TCP sui pacchetti che sono destinati all'host locale (dopotutto non potrebbero essere errati).

Inoltre, i pacchetti generati localmente che escono su una vera interfaccia fisica possiedono probabilmente checksum tcp generati dall'hardware. Ciò significa che i pacchetti inviati a in genere hanno l'aspetto di avere checksum errati (sul filo saranno corretti).

Imposta una porta monitor sullo switch, esegui Wireshark su una casella separata collegata a quella, e vedrai la vera immagine.

7

Questo è documentato nel wiki Wireshark here.