网络协议之:基于UDP的高速数据传输协议UDT( 二 )


网络协议之:基于UDP的高速数据传输协议UDT

文章插图
 
怎么解决呢?
第一种方式是使用STUN服务器 。
网络协议之:基于UDP的高速数据传输协议UDT

文章插图
 
STUN服务器是IP地址已知的服务器,客户端要通信之前,先去STUN服务器上面查询一下自己的外网IP和端口,然后再使用这个外网IP和端口进行通信 。
但有时UDP包会被防火墙或者其他的应用程序所阻挡 。这个时候就可以使用中继器技术Traversal Using Relays around NAT (TURN)。
网络协议之:基于UDP的高速数据传输协议UDT

文章插图
 
双方都将数据发送到中继器server,由中继器server来负责转发数据 。注意,这里已经不是P2P了 。
最后,我们有一个集大成者的协议叫做ICE(Interactive Connectivity Establishment ):
网络协议之:基于UDP的高速数据传输协议UDT

文章插图
 
它实际上就是直连,STUN和TURN的综合体,能直连的时候就直连,不能直连就用STUN,不能用STUN就用TURN 。
在使用STUN和ICE的过程中,我们会有一台网络主机用来建立端口映射和保持其他UDP端口状态,但是UDP的状态通常在几十秒到几分钟的短时间后过期,为了保证NAT中UDP的状态和生命周期,于是有了UDP hole punching的技术 。通过定时传输keep-alive数据包,对NAT中的UDP状态进行更新 。
UDT的缺点因为UDT是基于UDP协议的,但是UDP协议因为其简洁的特性,所以并不具备安全性的特征 。所以基于其上的UDT协议因为缺乏安全特性,所以在商业环境中应用会受到一定的限制 。
不过UDT的新版本已经在开发中,大家可以期待一下 。
总结UDT被广泛用于高性能计算,比如光纤网络上的高速数据传输 。我们后续会在netty中告诉大家怎么使用UDT协议 。
链接:
https://juejin.cn/post/7038409409537507341




推荐阅读