我需要通过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吗?
对不起这些新手问题。
答案 0 :(得分:0)
在C中,您可以通过设置TCP_MAXSEG套接字选项来执行此操作;见man 7 tcp
。
在Java中,相关套接字选项未在标准Socket APIs中公开。但是,如果您实现了非标准的SocketImpl类,那么该页面中有一个提示您可能能够设置其他选项。
答案 1 :(得分:0)
如果可以的话,只需设置一个小的套接字发送缓冲区大小。