2

现在的大多数设备都在 NAT 之后。当我们与服务器建立连接时,路由器将为该连接创建映射并保持该映射活动一段时间。为了保持这个映射,我们必须定期主动发送保持活动数据包。

如何知道需要的保持活动间隔?这个间隔在协议(UDP,TCP,...)之间是否不同?有文件吗?

4

2 回答 2

1

我看到这篇论文TCP Wake-Up给出了一个一般性的答案

The connection state timeout values vary from product to 
product, but typical values are 30…180 seconds for UDP and 
30…60 minutes for TCP [8]. This implies that applications 
using UDP need to send keep-alive messages much more 
frequently than those based on TCP
于 2013-04-05T04:33:47.133 回答
1

这变化很大,但我从来没有遇到过一个标准的 ISP 家庭路由器,它保持开放 TCP 超过 10m 或一个开放 UDP 超过 3m,所以我根本不会接受 4.5-5m 的建议。

值得考虑的是,大多数 WebSockets 实现都使用 20 秒的保活,尽管这是针对路由器和 Web 服务器超时执行的,因此它可能比您真正需要的 NAT 保活更保守。

我在一些基于移动和家庭的 UDP 应用程序中使用了 60 年代,并获得了关于偶尔失败的反馈。转移到 30 秒没有看到,转移到 45 秒只看到最少数量的重新连接失败。

于 2014-10-17T00:38:32.057 回答