UDP打洞,换句话说就是在两台位于NAT之后的主机之间建立直接的UDP会话。NAT的应用破坏了互联网的连通性,NAT之后的主机要连接公网主机,这没有问题。但是公网的主机(或一台私网主机)要连接一台位于NAT之后的私网主机,就不能直接实现,这就涉及到UDP打洞。
涉及UDP打洞的最常见应用是P2P软件,通过内网穿透可以加快下载速度。
公网主机无法连接内网主机,有两方面的原因:
1. 无法路由。因为私网主机的地址不是全局可访问的,它是一个私有地址(例如192.68.1.100),这样的地址是没法路由的。
2. NAT会阻止一个由外入内的连接。如果内网主机没有发起过连接,那么NAT都会把由外网主机发来的数据包都当做非法数据包而丢弃。
UDP打洞的基本原理