TCP和UDP的区别和优缺点

一、TCP与UDP区别总结:算法

一、TCP面向链接(如打电话要先拨号创建链接);UDP是无链接的,即发送数据以前不须要创建链接
二、TCP提供可靠的服务。也就是说,经过TCP链接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
Tcp经过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还能够对次序乱掉的分包进行顺序控制。
三、UDP具备较好的实时性,工做效率比TCP高,适用于对高速传输和实时性有较高的通讯或广播通讯。
4.每一条TCP链接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通讯
五、TCP对系统资源要求较多,UDP对系统资源要求较少。缓存

二、为何UDP有时比TCP更有优点?
UDP以其简单、传输快的优点,在愈来愈多场景下取代了TCP,如实时游戏。
(1)网速的提高给UDP的稳定性提供可靠网络保障,丢包率很低,若是使用应用层重传,可以确保传输的可靠性。
(2)TCP为了实现网络通讯的可靠性,使用了复杂的拥塞控制算法,创建了繁琐的握手过程,因为TCP内置的系统协议栈中,极难对其进行改进。
采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会愈来愈大,基于UDP对实时性要求较为严格的状况下,采用自定义重传机制,可以把丢包产生的延迟降到最低,尽可能减小网络问题对游戏性形成影响。网络

 

 为何TCP不适用于实时传输?tcp

TCP影响实时性不是由于握手消耗时间。握手一开始创建完就没事了性能

通常来讲,单位时间内传输的数据流量比较平滑。 TCP依赖滑动窗口进行流量控制,滑动窗口大小是自适应的,影响滑动窗口主要有两个因素,一是网络延时,二是传输速率,滑动窗口的大小与延时成正比,与传输速率也成正比。在给定的网络环境下,延时能够认为是固定的,所以滑动窗口仅与传输速率有关,当传输实时数据时,由于数据流通量比较固定,因此这时TCP上的滑动窗口会处于一个不大不小的固定值,这个值大小刚好保证当前生产的数据实时传输到对方,当出现网络丢包时,按TCP协议(快速恢复),滑动窗口将减小到原来的一半,所以速率马上减半,此时发送速率将小于数据生产速率,一些数据将滞留在发送端,而后滑动窗口将不断增大,直到积累的数据所有发送完毕。上述过程即为典型的TCP流量抖动过程,对于实时传输影响很大,可能造成较大的突发时延,从用户感观角度来讲,就是有时比较流畅,但有时卡(“抖一下”,而且比较严重),所以实时传输一般不使用TCP。spa

 

应用场景:.net

好比普通的会议视频图像,固然首选UDP,毕竟丢几包无所谓。

若是传输文件等,不能丢包,用TCP视频

 

udp如何实现可靠性传输(新浪)blog

UDP它不属于链接型协议,于是具备资源消耗小,处理速度快的优势,因此一般音频、视频和普通数据在传送时使用UDP较多,由于它们即便偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
传输层没法保证数据的可靠传输,只能经过应用层来实现了。实现的方式能够参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。
 实现确认机制、重传机制、窗口确认机制。
         目前有以下开源程序利用udp实现了可靠的数据传输。分别为RUDP、RTP、UDT。游戏

基于UDP的数据传输协议(UDP-based Data Transfer Protocol,简称UDT)是一种互联网数据传输协议。UDT的主要目的是支持高速广域网上的海量数据传输,而互联网上的标准数据传输协议TCP在高带宽长距离网络上性能不好。 顾名思义,UDT建于UDP之上,并引入新的拥塞控制和数据可靠性控制机制。UDT是面向链接的双向的应用层协议。

 

https://blog.csdn.net/pangyemeng/article/details/50387078?utm_source=copy 

https://blog.csdn.net/xiaobangkuaipao/article/details/76793702?utm_source=copy

相关文章
相关标签/搜索