建议的TCP套接字设置以实现低延迟和小数据包

5

我想知道除了禁用 Nagle 之外,是否可以对 TCP socket 进行调整,以便在具有主要小数据包的客户端-服务器协议中获得最低的延迟。

客户端数据包大多小于100字节,服务器数据包大小为100-300字节。

我在服务器端使用 Java,在客户端使用(Objective-C)


如果是简单的请求-响应协议,您可以考虑使用UDP。 - stark
@stark 我知道,但我想使用最佳的TCP设置来进行比较测量。 - Nuoji
我有所怀疑。禁用 Nagle 应该足够了,除非你想调整一些计时器,但在我看来这是不可取的。 - user207421
@EJP,有哪些调整可以做? - Nuoji
由于不可取,我拒绝提供建议,抱歉。我建议您实现无 Nagle,然后再看看是否仍有问题。 - user207421
@EJP 哦,我肯定还是看到了问题。 - Nuoji
1个回答

1
你可能希望考虑减少延迟应答超时时间(如果可能的话)。即使 Nagle 已关闭,在发送数据包不频繁且发生数据包丢失的情况下,延迟应答可能会导致延迟检测到数据包丢失,然后重新传输延迟。

那是在哪个级别上实现的?我记不得在我检查过的实现中看到过那个设置。 - Nuoji
1
在 man tcp(7) 中有详细描述:http://linux.die.net/man/7/tcp。Linux 上有一个名为 TCP_QUICKACK 的 TCP 套接字选项,它不具备可移植性,并且可能在您的平台上不可用(或以不同方式支持 - 不确定),但我认为在这里提一下是值得的。 - enobufs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接