基于 UDP 的数据传输协议(UDP-based Data Transfer Protocol,简称 UDT)是一种互联网数据传输协议。UDT 的主要目的是支持高速广域网上的海量数据传输,最典型的例子就是建立在光纤广域网上的网格计算,一些研究所在这样的网络上运行他们的分布式的数据密集 程式,例如,远程访问仪器、分布式数据挖掘和高分辨率的多媒体流。
而互联网上的标准数据传输协议 TCP 在高带宽长距离网络上性能很差。顾名思义,UDT 建于 UDP 之上,并引入新的拥塞控制和数据可靠性控制机制。UDT 是面向连接的双向的应用层协议。
UDT 的特性主要包括在以下几个方面:
- 基于 UDP 的应用层协议: 有基本网络知识的朋友都知道 TCP 和 UDP 的区别和使用场景,但是有没有一种协议能同时兼顾 TCP 协议的安全可靠和 UDP 协议的高效,那么 UDT 就是一种。
- 面向连接的协议:面向连接意味着两个使用协议的应用在彼此交换数据之前必须先建立一个连接,当然 UDT 是逻辑上存在的连接通道。这种连接的维护是基于握手、Keep-alive(保活)以及关闭连接。
- 可靠的协议:依靠包序号机制、接收者的 ACK 响应和丢包报告、ACK 序号机制、重传机制(基于丢包报告和超时处理)来实现数据传输的可靠性。
- 双工的协议:每个 UDT 实例包含发送端和接收端的信息。
- 新的拥塞算法,并且具有可扩展的拥塞控制框架:新的拥塞控制算法不同于基于窗口的 TCP 拥塞控制算法(慢启动和拥塞避免),是混合的基于窗口的、基于速率的拥塞控制算法。可扩展的拥塞控制框架开源的代码和拥塞控制的 C++类架构,可支持开发者派生专用的拥塞控制算法。
- 带宽估计:UDT 使用对包(PP — Packet pair)的机制来估计带宽值。即每 16 个包为一组, 最后一个是对包,即发送方不用等到下一个发送周期内再发送。接收方接收到对包后对其到 达时间进行记录,可结合上次记录的值计算出链路的带宽(计算的方法称为中值过滤法), 并在下次 ACK 中进行反馈。