0

我需要通过 tcp 将数据从我的机器发送到远程服务器,并且我需要对数据进行分段(这是一个测试)。这就解释了我正在寻找一种将分段大小更改为较小数字的方法的原因。

我搜索了一下,发现我们可以使用 iptables 设置 MSS

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

然而,在更多的谷歌搜索之后,似乎该解决方案用于告诉服务器我的机器可以接受的 TCP 段大小,而不是在我的机器发送到服务器的 tcp 数据包/段上设置段大小。

我还了解了 MTU 以及如何更改它,但这似乎不是我想要的,因为我需要/想要在更高级别(在传输级别)切割我的数据。我的问题是 1)如何为我的机器发送的 TCP 段设置 MSS?2)是否可以使用Java来做到这一点?

抱歉这些新手问题。

4

2 回答 2

0

在 C 中,您可以通过设置 TCP_MAXSEG 套接字选项来执行此操作;见man 7 tcp

在 Java 中,相关的套接字选项未在标准Socket API中公开。但是,该页面中有一个提示,如果您实现了非标准 SocketImpl 类,您可能可以设置其他选项。

于 2013-09-14T02:32:40.107 回答
0

如果可以的话,只需设置一个小的套接字发送缓冲区大小。

于 2013-09-15T06:13:11.967 回答