UDT协议是什么?是一种基于UDP的数据传输协议(UDP-based Data Transfer Protocol,简称UDT)。
UDT协议的主要作用是什么?UDT的主要目的是支持高速广域网上的海量数据传输,而互联网上的标准数据传输协议TCP在高带宽长距离网络上性能很差。
那么UDT与UDP的区别又是什么?UDT建于UDP之上,并引入新的拥塞控制和数据可靠性控制机制。UDT是面向连接的双向的应用层协议。它同时支持可靠的数据流传输和部分可靠的数据报传输。
UDT的使用场景是什么?由于UDT完全在UDP上实现,它也可以应用在除了高速数据传输之外的其它应用领域,例如点到点技术(P2P),防火墙穿透,多媒体数据传输等等。
基于UDP的应用层协议: 有基本网络知识的朋友都知道TCP和UDP的区别和使用场景,但是有没有一种协议能同时兼顾TCP协议的安全可靠和UDP协议的高效,那么UDT就是一种。
面向连接的协议:面向连接意味着两个使用协议的应用在彼此交换数据之前必须先建立一个连接,当然UDT是逻辑上存在的连接通道。这种连接的维护是基于握手、Keep-alive(保活)以及关闭连接。
可靠的协议:依靠包序号机制、接收者的ACK响应和丢包报告、ACK序号机制、重传机制(基于丢包报告和超时处理)来实现数据传输的可靠性。
双工的协议:每个UDT实例包含发送端和接收端的信息。
单播的数据流。
新的拥塞算法,并且具有可扩展的拥塞控制框架:新的拥塞控制算法不同于基于窗口的TCP拥塞控制算法(慢启动和拥塞避免),是混合的基于窗口的、基于速率的拥塞控制算法。可扩展的拥塞控制框架开源的代码和拥塞控制的C++类架构,可支持开发者派生专用的拥塞控制算法。
带宽估计:UDT使用对包(PP -- Packet pair)的机制来估计带宽值。即每16个包为一组,最后一个是对包,即发送方不用等到下一个发送周期内再发送。接收方接收到对包后对其到达时间进行记录,可结合上次记录的值计算出链路的带宽(计算的方法称为中值过滤法), 并在下次ACK中进行反馈。
new congestion control
DAIMD rate control
dynamic window control
基于流的send, recv。
基于数据报sendmsg,recvmsg。
文件传输sendfile,recvfile。
使用了UDP multiplexer(UDP多路复用)机制,这样做的好处是:
UDT流控采用可配置的拥塞控制算法,你可以关闭它、配置它,改良它来实现自己需要的流控策略。
采用新的资源管理(内存管理)和共享的拥塞控制方法来支持更多并发的UDT连接。有关内存管理的介绍如下:
UDT4 has a new buffer management module that enables all UDT sockets in one process can share protocol buffer. The goodness it brings is the much less memory usage for multiple UDT connections compared to previous versions.
UDT4 can automatically resize its buffer in order to reduce memory usage while providing maximum throughput.
Because of the new memory management scheme, overlapped IO has been removed from UDT4. If your existing code uses overlapped IO, you need to modify it to use regular IO. This is the only change needed for exiting code to move from UDT3 to UDT4.
其他的特点:
不和原生socket api冲突;
线程安全;
进程间不共享句柄;
错误处理;
防火墙穿透;
安全性好;
建立连接快速;
原文地址:http://blog.csdn.net/u012730075/article/details/38236021