udp内网穿透的要点

UDP打洞的过程: 

1、双方都通过UDP与服务器通讯后,网关默认就是做了一个外网IP和端口号 与你内网IP与端口号的映射,这个无需设置的,服务器也不需要知道客户的真正内网IP 

2、用户A先通过服务器知道用户B的外网地址与端口  

3、用户A向用户B的外网地址与端口发送消息,  

4、在这一次发送中,用户B的网关会拒收这条消息,因为它的映射中并没有这条规则。  

5、但是用户A的网关就会增加了一条允许规则,允许接收从B发送过来的消息  

6、服务器要求用户B发送一个消息到用户A的外网IP与端口号  

7、用户B发送一条消息,这时用户A就可以接收到B的消息,而且网关B也增加了允许规则  

8、之后,由于网关A与网关B都增加了允许规则,所以A与B都可以向对方的外网IP和端口号发送消息。

 

udp内网穿透的要点

为了保证A的路由器有与B的session,A要定时与B做心跳包,同样,B也要定时与A做心跳,这样,双方的通信通道都是通的,就可以进行任意的通信了。

以上是转载的,出处未知。基本上已经把UDP穿透的原理说的非常清楚了,但是实现过程中还是要有几个要点需要注意的。

1、无论是A端还是B端,同一端点发送与接收需要用同一个套接口。否则网络不可达到,无法穿透。不能收到服务器的回应包。

2、NAT是有会话时间的,超过一定时间空闲,A端或者B端对外的端口或者IP就会发生改变(A和B是无法感知的),需要维持双向心跳包。

========================================

暂时研究到这里,之后补充。