0

据我了解,tcp 协议的性能受到 RTT(往返时间)的限制。如果客户端向服务器发送消息,它需要等待确认响应才能发送序列中的下一条消息。这意味着如果我使用 250 毫秒 RTT 的链接,我将被限制为每秒 4 条消息,这对于许多应用程序来说非常慢,并且严重阻碍了数据传输率。

有哪些方法可以解决此限制?

4

3 回答 3

3

如果客户端向服务器发送消息,它需要等待确认响应才能发送序列中的下一条消息。

这是不正确的。有诸如延迟和选择性 ACK 之类的东西。

这意味着如果我使用 250 毫秒 RTT 的链接,我每秒只能发送 4 条消息。

不,它没有。

实际的瓶颈是链路的带宽延迟积。确保您的套接字两端的发送和接收缓冲区至少等于该产品。

于 2012-08-30T10:34:48.290 回答
1

RTT 只是告诉您从发送缓冲区中驱逐数据包的延迟约为 250 毫秒。鉴于发送缓冲区足够大,没有什么可以阻止您以最大带宽减去协议开销进行双向通信。

如果您不需要纠错(即消息到达太晚时毫无价值),请考虑使用 UDP。

于 2012-08-30T10:52:34.330 回答
0

如果我理解正确。您的协议将等待来自对等方的响应消息,然后才能发送下一个请求消息。在这种情况下,RTT 会限制您所说的速度(每秒 4 条消息)。

如果您的协议规范要求这种等待,那么该协议的设计很糟糕。

如果没有,那么您可以通过在等待响应消息之前向对等方发送几条消息来提高性能。这样,高 RTT 不会导致如此糟糕的缓慢。

于 2012-08-30T11:02:49.157 回答