UDT摘记

UDT是一种适用于高带宽延时积网络的数据传输协议,它支持多路复用、拥塞控制和精确定时器。UDT的数据包分为数据包和控制包,包括ACK、NACK等多种控制类型。协议维护了多个定时器来处理ACK、NACK和超时重传。此外,UDT支持C/S模式和rendevous模式,尤其适用于NAT穿透。连接关闭和数据包丢失处理机制确保了通信的可靠性和效率。
摘要由CSDN通过智能技术生成

1.UDT主要应用于高带宽延时积(BDP)的网络中,BDP=bandwidth*RTT/8,代表链路中所能容纳的数据量),但是TCP的窗口大小为16bit,最高有65536个byte在传输,所以不适合用于高速广域网上进行数据传输。


2.UDT的可分为数据包和控制包,控制包共分为7种:ACK,NACK,keep-alive,shutdown等。


3.UDT支持多路复用技术:多路复用器维持两个队列:发送队列和接收队列。发送队列根据需要发送的包的时间对socket进行排序。发送端维持一个高精度的定时器。当定时器时间到了之后,它会把数据包发出并将socket从队列中移出。接收队列和发送队列类似,也维持了一个高精度的定时器,队列中包含一些等待接收数据的socket,接收队列每隔0.01s检查队列中的socket有没有timeout。destination ID是0的数据包会被送往listener.


4.UDT维持了四个定时器:SND,ACK,NACK,EXP.SND是基于速率控制的,用于控制包的发送间隔。ACK TIMER是触发ACK的定时器,ACK TIMER的时长 不得超过0.01s。NACK timer是触发对没有收到的包的回应,它的周期是根据ACK中的RTT以及RTT样本方差估算出来的。EXP是超时重传的定时器,它的 值是由RTT和RTT的样本方差以及timeout次数算出来的。


5.UDT支持两种模式:传统的C/S模式以及rendevous模式,rendevous mode适合NAT打洞,打洞的原理就是两端同时向对端发起连接。


6.建立连接过程:客户端发送握手包,服务端根据客户端IP地址以及本端的私钥生成一个cookie并返回给客户端,服务端本身不保存cookie以防止 dos攻击。客户端随后将向服务端发送一个包含cookie的握手包,服务端校验cookie并获取客户端包大小以及窗口大小并和自己的进行对比,选择两者之中的最小值返回给客户端。然后两方就可以进行数据交互了。建立连接之前,客户端需要以特定的时间间隔发送握手包,服务端需要对每个握手包

回复。连接建立后,server回复的握手包将会被客户端自动忽略。


7.连接关闭:主动关闭连接的一方将向另一方发送一个shut

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值