RecvFrom () возвращает пакет больше, чем MTU NIC отправителя - PullRequest
1 голос
/ 04 июня 2009

У меня есть проприетарное приложение, отправляющее многоадресный пакет в сеть. Он работает на Linux с NIC MTU 1500.

А затем я пишу простую Java-программу для использования класса MulticastSocket для получения сообщения. Я обнаружил, что размер DatagramPacket составляет ~ 7900. Программа получателя работает на Linux с NIC MTU 1500.

Я переписываю программу на C и использую вызов recvfrom (), но результат тот же.

Я не понимаю, почему? это размер пакета ограничен NIC MTU? или это может быть отменено программой?

Ответы [ 3 ]

2 голосов
/ 04 июня 2009

Фрагментация и повторная сборка происходят на уровне IP, который находится под протоколом UDP, поэтому он по сути скрыт от глаз. Вы можете проверить фрагментацию, установив флаг «не фрагментировать» для пакетов разных размеров.

2 голосов
/ 04 июня 2009

Я полагаю, что вы тестируете на компьютере, на котором запущена проприетарная служба. В этом случае окно linux позволит им обмениваться данными через локальное устройство обратной связи, которое имеет MTU 64 КБ.

0 голосов
/ 04 июня 2009

возможно ли ядро ​​фрагментировать пакет и собрать на принимающей стороне?

Как найти самый большой пакет UDP, который я могу отправить без фрагментации?

Однако стоит ли знать, что пакет фрагментирован?

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