UDP协议的工作原理/特点/缺点/使用场景

接口/总线/驱动

1139人已加入

描述

  一、UDP的概述

  UDP英文全拼UserDatagramProtocol,简称用户数据报协议。它是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用和分用以及差错检测。

  二、UDP的工作原理

  使用UDP传输数据时,由应用程序根据需要提供报文到达确认、排序、流量控制等功能。

  通常情况下,UDP采用实时传输机制和时间戳来传输语音和视频数据。

UDP

  三、UDP的特点

  1、无连接:UDP是无连接的协议,它在进行数据传输之前不需要先建立连接,也没有各种重传机制、拥塞控制和流量控制,所以传输速度很快,消耗很低,延迟小,数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。

  2、不可靠:只负责数据的发送,不关心数据是否送达,没有确认机制,主机收到数据也不会有响应

  3、分组首部开销小:TCP的首部是20字节,UDP的首部是8字节

  4、面向报文的:TCP(面向连接的传输控制协议)是面向字节传输,而UDP是面向报文传输,对于应用层交下来的报文段不进行拆分合并,直接保留原有报文段的边界然后添加UDP的首部就交付给网络层。不论报文的长短,UDP都不会进行处理。因此为了避免报文段过短降低传输效率以及报文段过长导致网络层对IP数据进行分片操作,应用层应该选择合适长度的报文交付给运输层的UDP。

  四、UDP的缺点

  1、传输数据不可控,容易丢数据包

  2、没有流量控制,当对方没有及时接收数据,发送方一直发送数据会导致缓冲区数据满了,电脑出现卡死情况,所有接收方需要及时接收数据。

  五、为什么需要UDP?

  1、一个重要的原因是IP协议中并没有端口(port)的概念。IP协议进行的是IP地址到IP地址的传输,这意味着两台计算机之间的对话。但每台计算机中需要有多个通信通道,并将多个通信通道分配给不同的进程使用。一个端口就代表了这样的一个通信通道。UDP协议实现了端口,从而让数据包可以在送到IP地址的基础上,进一步可以送到某个端口。

  2、对于一些简单的通信,不需要TCP协议复杂的建立连接的方式,特别是在早期网络环境中,如果过多的建立TCP连接,会造成很大的网络负担,而UDP协议可以相对快速的处理这些简单通信。

  3、在使用TCP协议传输数据时,如果一个数据段丢失或者接收端对某个数据段没有确认,发送端会重新发送该数据段。TCP重新发送数据会带来传输延迟和重复数据,降低了用户的体验。对于迟延敏感的应用,少量的数据丢失一般可以被忽略,这时使用UDP传输将能够提升用户的体验。

  六、UDP使用场景

  当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时,可以用UDP协议来替代TCP协议在传输层控制数据的转发。UDP适合于实时数据传输,如语音和视频通信,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。例如:

  1、网页或者APP的访问。Google提出的一种基于UDP改进的通信协议--QUIC(全称QuickUDPInternetConnections,快速UDP互联网连接),可以降低网络通信的延迟,提供更好的用户互动体验。

  2、流媒体的协议。现在直播比较火,很多直播应用,都基于UDP实现了自己的视频传输协议。

  3、实时游戏。游戏对实时要求较为严格的情况下,采用自定义的可靠UDP协议,自定义重传策略,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成的影响。

  4、IoT物联网。一方面,物联网领域终端资源少,很可能只是个内存非常小的嵌入式系统,而维护TCP协议代价太大;另一方面,物联网对实时性要求也很高,而TCP还是因为上面的那些原因导致时延大。Google旗下的Nest建立ThreadGroup,推出了物联网通信协议Thread,就是基于UDP协议的。

  5、移动通信领域。在4G网络里,移动流量上网的数据面对的协议GTP-U是基于UDP的。因为移动网络协议比较复杂,而GTP协议本身就包含复杂的手机上线下线的通信协议。如果基于TCP,TCP的机制就显得非常多余。

  UDP作为最简单的传输协议,自1980年UDP协议规范发布以来,一直在主流应用中发挥着作用。在未来,也将继续和TCP协议一起在今后的网络世界中发挥更加重要的作用。
责任编辑人:CC

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分