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

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

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

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

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

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

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


person user1739658    schedule 14.09.2013    source источник


Ответы (2)


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

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

person Stephen C    schedule 14.09.2013

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

person user207421    schedule 15.09.2013