Wireshark получает многоадресные пакеты UDP, но подписка клиентского приложения не дает? - PullRequest
0 голосов
/ 29 марта 2019

Описание

В настоящее время я пытаюсь опубликовать временные метки на Raspberry Pi и подписаться на них на моем компьютере под управлением Windows.Для этого я подключил ОБА Raspberry Pi и ПК с Windows к коммутатору.Итак, если я запустил пример публикации на Raspberry Pi, я уже вижу входящие многоадресные пакеты UDP в Wireshark на моем ПК с Windows.Теоретически, приложение подписки также должно иметь возможность получать пакеты и распечатывать их на консоли.Но это не тот случай.Образец подписки НЕ распечатывает какие-либо временные метки на консоль, что означает, что он не получает никаких многоадресных пакетов UDP.Это почему?Если я запускаю пример публикации и подписки на ПК с Windows, он работает ...

У меня может быть одна подсказка, в чем может быть проблема: если я запускаю оба примера публикации / подписки на моем компьютере с Windows, ониоба печатают в консоли, что они слушают opc.tcp: // mypc: 4801 / Но когда я запускаю пример публикации на raspi, он говорит, что он слушает opc.tcp: // raspberrypi: 4840 / нообразец подписки все еще слушает на opc.tcp: // mypc: 4801 /.

Есть предложения?Может ли проблема с брандмауэром здесь?Любые советы высоко ценятся !!

Дополнительная информация

На следующем изображении вы видите IP-адрес Raspberry Pi: enter image description here

Ниже вы можете увидеть переданные многоадресные пакеты UDP в Wireshark.Они действительно пришли от Raspberry Pi, потому что IP-адреса совпадают: enter image description here

1 Ответ

0 голосов
/ 02 апреля 2019

Может быть несколько вещей, из-за которых ваши дейтаграммы не доходят до приложения:

Фрейм Ethernet менее 64 байт

Большинство сетевых адаптеров будут дополнять данные на уровне канала передачи данныхтак что это не может быть проблемой.Wireshark не сможет увидеть, что это произошло.Чтобы проверить, попробуйте самостоятельно заполнить данные (скажем, 0xFF), пока в пакете не будет больше данных, чем 64 байта.К счастью, в наши дни это меньше проблем, но со мной это случалось очень давно.

Неправильная контрольная сумма UDP

Если вычисленная контрольная сумма не совпадает с контрольной суммой, предоставленнойотправитель тогда пакет будет молча отброшен.Wireshark по умолчанию не вычисляет контрольную сумму и подключается до того, как драйвер захватит пакет, особенно если вы запускаете Wireshark в случайном режиме.Вы можете включить проверку контрольной суммы с помощью Правка> Настройки> Протоколы> UDP> Проверить контрольную сумму UDP, если это возможно.

Если вы можете изменить код на стороне отправителя, установите поле заголовка контрольной суммы UDP.для всех нулей, чтобы отключить контрольные суммы.

Настройки сетевого адаптера в Windows

Если ваша машина управляется внутри предприятия, то я знаю как минимум пару плагинов адаптера, которые будут мешать необычным сетевым пакетам.Попробуйте открыть диалоговое окно «Свойства» на своем сетевом адаптере и загляните.

Брандмауэр Windows

Я не эксперт в этом, но я думаю, что настройка по умолчанию брандмауэра Windows позволяет многоадресную передачу.Опять же, если ваш компьютер управляется централизованно, политики могли быть изменены.

...