UDP跟TCP协议一样是一种传输层协议,但是他与TCP不同的是,它不需要跟服务端建立连接,支持广播的发送消息。我们都知道TCP协议也成握手协议,分别有三次“握手”的过程,而UDP呢?最好理解它的就是UDP打洞,也就是UDP NAT(地址转换),下面我们就来介绍一下Nat的分类。
NAT分类
根据Stun协议(RFC3489),NAT大致分为下面四类
1) Full Cone
这种NAT内部的机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口的UDP数据报都可以到达A.不管是不是C发过来的。
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
任何发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)
2) Restricted Cone
这种NAT内部的机器A连接过外网的机器C后,NAT打开一个端口.然后C可以用任何端口和A通信.其他的外网机器不行.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
任何从C发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)
3) Port Restricted Cone
这种NAT内部的机器A连接过外网的机器C后,NAT打开一个端口.然后C可以用原来的端口和A通信.其他的外网机器不行.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
C(202.88.88.88:2000)发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)
以上三种NAT通称Cone NAT.我们只能用这种NAT进行UDP打洞.
4) Symmetic
对于这种NAT.连接不同的外部目标.原来NAT打开的端口会变化.而Cone NAT不会.虽然可以用端口猜测.但是成功的概率很小.因此放弃这种NAT的UDP打洞
现在我们就模拟一个UDP打洞的原理,绘制了一张图,这样看起来就会更清晰。

其实UDP的应用很广泛,比如我们在cmd里面的ping命令,其实也就是通过UDP协议,发送的一个UDP包,以及现在比较火的p2p技术等,这些都是基于UDP协议的。
本文介绍了UDP协议及NAT(网络地址转换)的四种类型:Full Cone、Restricted Cone、Port Restricted Cone和Symmetric,并详细解释了这些类型的工作原理,特别是如何利用前三种类型的NAT实现UDP打洞。
2万+

被折叠的 条评论
为什么被折叠?



