对于两个通过NAT上网的客户端(在不同的局域网内),它们之间的通信。
如果是以TCP方式建立的连接,NAT会为其分配一个随机的端口,
不过这个映射会有一个过期时间,就是要不要我们去自己发“握手包”来
维持这个端口不变?
    到底TCP协议是不是自己已经实现了,互相之间发握手包,来维持这个端口
不变?以维持通信双方的连接。
    另外如果在NAT那设置了TCP的映射的时间非常短,比如设置了过期时间为0,
那企不是根本就不能通信了?2000的NAT最短过期时间只能设置为1分钟,
不知道路由器上可以设置的最短过期时间是多少?
     对于过期时间是0的这种情况用UDP是更可能去通信!

解决方案 »

  1.   

    必须要发送握手包。如果你的NAT不是目标IP敏感分配的话,那么握手包送往任何一个地方都可以,这样可以减轻你服务器的网络负载。
    一般过期时间都不会太短。如果你关心这个的话,可以在开始的时候想办法测出它的过期时间来。如果过期时间太短,大部分应用就会被NAT拦住,跟NAT的本意不符。
      

  2.   

    这个不出奇,连接丢了再连接,这个很正常,我以前写的nat是用75秒,但是如果用户太多的时候
    显得端口太难回收,后来改成了18秒