NOTE, 网络

涉及NAT的长连接问题

A为服务器;B是一个在内网的计算机,经路由器C NAT可访问Internet,路由器C拥有一个Internet IP。

最近在给A与B弄UDP长连接:B主动向A构建UDP长连接,长连接构建成功后,刚开始,A与B分别都可以通过长连接主动向对方发送数据。

长连接闲置一段时间后,该长连接开始无法使用,需要B主动重新构建长连接后方可恢复。

 

具体原因可见IP Network Address Translator (NAT) Terminology and Considerations (RFC 2663) – 2.6. End of session for TCP, UDP and others

简单来说,NAT设备上的NAT记录是有超时时间的,长连接闲置了一段时间,达到超时时间后,NAT设备会认为该连接已结束,清理掉对应的NAT记录,因此A与B就无法再次通过长连接互相发送数据。

 

解决办法:Heartbeat!