ude是一款基于udp的可靠传输协议,专门用于在数据传输方面对实时性要求较高的领域。
tcp协议虽然能保证数据的可靠传输,但它有以下几个缺点:
1.tcp的数据确认机制会导致发送方重复发送一些已经被对方接收的数据,降低了带宽的有效利用率;
2.tcp协议的超时重传机制严格遵守rtt公平性,即到了rtt时间才会重传丢失的数据,当rtt较大时,就会导致数据的实时性降低,这对于一些对实时性要求较高的应用(比如流媒体、网络游戏)是不能忍受的,并且还会导致带宽得不到充分利用;
3.在p2p传输领域,由于tcp的NAT穿透成功率极低,用tcp做p2p数据传输几乎不可行。
udp协议虽然不能保证数据传输的可靠性,但它在数据的实时性、带宽的利用率等方面有着tcp望尘莫及的优势。ude协议,正是融合了tcp和udp各自的优点,ude协议在udp的基础之上,实现了tcp的握手连接、数据校验、超时重传等机制,并且在某些方面比tcp做的更好:
1.ude协议的数据确认机制比tcp更科学,不会重传已经被对方接收的数据;
2.ude的超时重传机制不遵循rtt公平性(可以设置rtt的上限值),这就保证了当网络延时较高时,ude也可以用于传输对实时性要求较高的数据,降低带宽的有效利用率换取实时性,另外它不等ack的到来就重传数据(原理为第n帧没收到ack、而第n+1、n+2帧已收到ack,则认为第n帧已经丢失);
3.ude协议计算两端之间的带宽,用这个带宽值和rtt值计算每次发送的数据量,可以最大化的利用带宽;
4.当网络发送拥塞,ude计算出新的带宽值,它会控制带宽值的下降幅度,以保证自身的抗网络抖动能力和带宽竞争力;
5.ude协议内部实现了心跳机制来检测死链接,程序员不需要在设计时考虑死链接这样的问题。
ude协议,极其适合在cs方式/p2p方式下做实时性数据的可靠传输。可以在公网搭建tcp server来转发NAT穿透信令,在穿透之后,使用ude协议来做可靠传输。