Можно ли принудительно фрагментировать пакет в Java? - PullRequest
0 голосов
/ 17 сентября 2009

У меня ошибка, вызванная фрагментированными пакетами. Я хотел бы проверить эту ошибку, создав фрагментированный пакет в тесте и отправив его в программное обеспечение, содержащее ошибку.

Как бы я поступил так?

Любое руководство или альтернативные подходы приветствуются, спасибо.

Ответы [ 4 ]

3 голосов
/ 17 сентября 2009

Если вы говорите о фрагментах TCP, они должны быть скрыты (повторно собраны) ОС при получении, если только вы не используете средство низкоуровневого захвата пакетов, например, Эфирное

Для принудительной отправки фрагментов TCP уменьшите максимальный размер пакета / сегмента на каком-либо маршрутизаторе и / или настройте в ОС-отправителе использование MSS большего размера, чем подходит.

1 голос
/ 17 сентября 2009

В windows вы можете изменить размер MTU в реестре. Не знаю насчет других платформ.

0 голосов
/ 17 сентября 2009

Легко фрагментировать пакет с помощью UDP. Если вы отправите UDP-датаграмму больше, чем MTU, она будет фрагментирована. С TCP не все так просто, ОС не будет сознательно фрагментировать пакет. Смена MTU хоста или маршрутизатора также не помогает, поскольку большинство операционных систем обнаруживают MTU и находят наименьшее.

Вы должны использовать что-то вроде Генератор пакетов для имитации фрагментированных пакетов TCP.

0 голосов
/ 17 сентября 2009

Должны ли фраги быть частью потока TCP? Или любой IP-фрагмент? Они легко генерируются для UDP, просто делая дейтаграмму больше, чем MTU. Как правило, 2k будет работать нормально, но если в вашей локальной сети включены jumbo-кадры, 10k или 20k все равно будут выдавать фрагменты.

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