2013-07-26 41 views
4

我想知道是否有调整我可以做一个TCP套接字,除了禁用Nagle,以获得最低的可能延迟客户端 - 服务器协议主要是小数据包。建议TCP套接字设置为低延迟和小包

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

我在服务器端使用java,在客户端使用(objective-)c。

+0

如果它是一个简单的请求响应协议,你可以考虑使用UDP。 – stark

+0

@stark我知道,但我想用尽可能好的TCP设置进行测量来进行比较。 – Nuoji

+0

我对此表示怀疑。禁用Nagle应该足够了,除非你想调整一些定时器,这不是可取的IMO。 – EJP

回答

1

您可能需要考虑减少延迟确认超时(如果可能)。即使Nagle处于关闭状态,但在发送频繁数据包和发生数据包丢失的情况下,延迟ack可能会导致数据包丢失检测和重新传输延迟的延迟。

+0

在什么水平是可能的?我不记得在我检查过的实现中看到了这个设置。 – Nuoji

+1

它在tcp(7)中有描述:http://linux.die.net/man/7/tcp在linux上有一个名为TCP_QUICKACK的TCP套接字选项,它不是可移植的,可能在你的平台上不可用(或以不同的方式支持 - 不确定),但是,我只是想在这里值得一提。 – enobufs