NAT路由器在拒绝来自先前打开的连接的传入数据包之前多久等待

问题描述:

NAT路由器在拒绝数据包之前通常允许来自先前打开的TCP流的传入数据包多长时间?我正在开发一个P2P应用程序,我宁愿不保持与中央服务器和中继数据包的开放连接。相反,我正在考虑让客户端轮询中央服务器,保存这些IP和端口号,然后从服务器返回给每个客户端,以便稍后再启动P2P连接。如果NAT允许长时间的数据包,这是可行的。如果这是不可能的,是否有人知道其他P2P应用程序如何建立NAT Transveral/Connections?NAT路由器在拒绝来自先前打开的连接的传入数据包之前多久等待

这不太可能奏效。典型的家庭路由器将跟踪TCP连接的状态,并且不会转发已经关闭的连接上的流量。即使活跃 TCP连接的时候,路由器将保留打开的连接,但不发送任何数据量

,变化很大 - 我见过一分钟,一个星期之间的一切。您需要保持连接处于打开状态,并定期发送保持连接,以便可靠地维护连接。

某些路由器也支持NAT Port Mapping Protocol将端口转发到路由器后面的设备。不过,这并不是普遍支持的。特别是,在商用路由器中几乎从不支持它。

+0

这是像bittorent文件共享客户端的策略? – fritz

+0

文件共享客户端通常使用NAT-PMP(或要求用户手动设置端口映射),然后接受来自其他用户的传入连接。 – duskwuff

+0

“这是像bittorent这样的文件共享客户端策略吗?” - 请参阅http://stackoverflow.com/a/37368417/1362755 – the8472