Сокет Java: неверная контрольная сумма TCP - PullRequest
6 голосов
/ 20 марта 2009

Я экспериментирую с сокетами Java. Я могу подключиться к сокету и отправить / получить байты данных без проблем. Тем не менее, я также перехватываю трафик с помощью wireshark и замечаю, что каждый пакет, который приходит из java-сокета, помечается wireshark как «tcp checkum неверная».

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

Java-версия "1.6.0_12" Java (TM) SE Runtime Environment (сборка 1.6.0_12-b04) Клиентская виртуальная машина Java HotSpot (TM) (сборка 11.2-b01, смешанный режим, совместное использование)

Wireshark v1.0.6 с WinPcap 4.0.2

Ответы [ 2 ]

13 голосов
/ 20 марта 2009

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

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

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

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

7 голосов
/ 21 марта 2009

Это описано в вики Wireshark здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...