UDP协议

来源:互联网 发布:windows nextcloud 编辑:程序博客网 时间:2024/05/22 06:37

   UDPTCP协议一样是一种传输层协议,但是他与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不会.虽然可以用端口猜测.但是成功的概率很小.因此放弃这种NATUDP打洞

   现在我们就模拟一个UDP打洞的原理,绘制了一张图,这样看起来就会更清晰。

UDP打洞原理

 

 

 

 

 

 

 

 

 

 

 

  其实UDP的应用很广泛,比如我们在cmd里面的ping命令,其实也就是通过UDP协议,发送的一个UDP包,以及现在比较火的p2p技术等,这些都是基于UDP协议的。