2009-03-20 5 views
6

Я экспериментирую с w/java сокетами. Я могу подключиться к сокету и отправлять/получать байты данных без проблемы. Однако я также обнюхиваю трафик с помощью wirehark и замечаю, что каждый пакет, который поступает из java-сокета, отмечен wirehark как «неверная контрольная сумма tcp».Java Socket: Контрольная сумма TCP Checksum Неверная

У кого-нибудь есть понимание?

ява версия "1.6.0_12" Java (TM) SE Runtime Environment (сборка 1.6.0_12-b04) Java HotSpot (TM) Client VM (сборка 11.2-b01, смешанный режим, обмен)

Wireshark v1.0.6 w/WinPcap 4.0.2

ответ

13

Я обнаружил, что во многих случаях использование такого инструмента, как Wireshark, даст вам неправильные контрольные суммы tcp для локальных пакетов.

Это потому, что ОС разумно не тратит усилий на заполнение контрольных сумм tcp на пакетах, предназначенных для локального хоста (в конце концов, они не могут быть некорректными).

Кроме того, локально созданные пакеты, выходящие на реальном физическом интерфейсе, в любом случае имеют аппаратные контрольные суммы tcp. Это означает, что отправлены Пакеты обычно выглядят так, будто у них неправильные контрольные суммы (на проводе они будут правильными).

Настройте порт монитора на вашем коммутаторе, запустите Wireshark на отдельном боксе, подключенном к нему, и вы увидите истинную картинку.

Смежные вопросы