2

在 iOS 上为 TCP 套接字重新连接使用退避算法有什么好处吗?例如,5 秒与 30 秒的最大延迟是否会对电池使用产生显着影响?在我看来,退避算法主要用于避免服务器上的 DOS,如果它暂时无法处理负载。从客户的角度来看,好处似乎并不明显。

4

1 回答 1

2

退避算法(指数退避)帮助客户端处理服务器上任何持续的拥塞。如果客户端等待 T 秒后服务器处于忙碌状态,那么下一次,如果它在 2T 秒后尝试,它就有更大的机会到达服务器。这是一个链接:http ://en.wikipedia.org/wiki/Exponential_backoff

其次,对于 TCP,服务器上的挂起连接队列也可能已满,在这种情况下,TCP 服务器将隐式丢弃 SYN 数据包(在 Linux/Unix 中)。退避允许客户端有足够的时间,以便 TCP 服务器上的应用程序可以将那些挂起的连接出列(通过调用 accept()),从而在队列中为客户端执行退避创建空间。

于 2013-09-06T04:54:04.910 回答