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打洞,打洞的原理就是两端同时向对端发起连接。
回复。连接建立后,server回复的握手包将会被客户端自动忽略。
7.连接关闭:主动关闭连接的一方将向另一方发送一个shut