Как настроить / уменьшить размер сегмента TCP

Мне нужно отправить данные со своей машины на удаленный сервер по протоколу TCP, и мне нужно, чтобы данные были фрагментированы (это тест). Это объясняет причину, по которой я ищу способ изменить размер сегмента на небольшое число.

Я погуглил и обнаружил, что мы можем установить MSS, используя iptables

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss some-number

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

Я также узнал о MTU и о том, как его изменить, но, похоже, это не то, что я хочу, потому что мне нужно / я хочу сократить свои данные на более высоком уровне (на транспортном уровне). Мои вопросы: 1) как я могу установить MSS для сегментов TCP, которые отправляет моя машина? 2) возможно ли сделать это с помощью Java?

Извините за эти вопросы новичка.

2 ответа

Просто установите небольшой размер буфера отправки сокета, если можете.

В C вы можете сделать это, установив опцию сокета TCP_MAXSEG; увидеть man 7 tcp,

В Java соответствующий параметр сокета не представлен в стандартных API-интерфейсах Socket. Однако на этой странице есть подсказка, что вы можете установить другие параметры, если реализовали нестандартный класс SocketImpl.

Другие вопросы по тегам