据我所知,tcp协议的性能受到RTT (往返时间)的限制。如果客户端向服务器发送消息,它需要等待确认响应,然后才能发送序列中的下一条消息。这意味着如果我在一个250ms RTT的链接上,我被限制为每秒4条消息,这对于许多应用程序来说是相当慢的,并且严重阻碍了数据传输速率。
有什么方法可以绕过这个限制?
发布于 2012-08-30 18:34:48
如果客户端向服务器发送消息,则它需要等待确认响应,然后才能发送序列中的下一条消息。
这是不正确的。有延迟和选择性ACK这样的东西。
这意味着如果我在一个250ms RTT的链接上,我被限制在每秒4条消息。
不不是的。
实际的瓶颈是链路的带宽延迟乘积。请确保两端的套接字发送和接收缓冲区至少等于此产品。
发布于 2012-08-30 18:52:34
RTT只告诉您数据包从发送缓冲区中逐出的延迟约为250ms。假设发送缓冲区足够大,那么没有什么可以阻止您以最大带宽减去协议开销进行双向通信。
如果你不需要纠错(也就是说,当你的消息到达得太晚的时候,它就一文不值了),考虑使用UDP。
发布于 2012-08-30 19:02:49
如果我没理解错的话。您的协议将等待来自对等设备的响应消息,然后才能发送下一个请求消息。在这种情况下,RTT限制了您所说的速度(每秒4条消息)。
如果您的协议规范要求这种等待,那么该协议的设计就很糟糕。
如果不是,那么在等待响应消息之前,您可以通过向peer发送几条消息来提高性能。在这种情况下,高RTT不会导致如此糟糕的速度。
https://stackoverflow.com/questions/12194824
复制相似问题