udp使用(udp协议为什么协议)
udp使用(udp协议为什么协议),新营销网红网本栏目通过数据整理汇集了udp使用(udp协议为什么协议)相关信息,下面一起看看。
每个程序员都应该知道TCP和UDP协议。UDP是一种用户数据消息协议,属于OSI模型中的传输层。它是一种无连接协议,也就是说,前一条消息和后一条消息在协议层没有连接,它提供的是简单而不可靠的传输服务。
也就是说UDP不靠谱。如果想让数据可靠,需要在业务层做纠错和检错。例如TFTP。
那么有的同学可能会问,既然不靠谱,为什么不直接用IP协议呢?为什么要大费周章地加一个协议UDP呢?
其实很重要的一个原因就是IP协议中没有端口的概念。它只规定了两台主机之间的通信,没有解决不同主机上的应用程序之间的通信。如果一台主机上的多个应用需要通信,直接使用IP协议是无法区分数据属于哪个应用的。
可以理解为端口是一个通信通道。,UDP在IP协议的基础上增加了一些功能,所以我们一下
UDP无连接,无连接。所以收发的费用会少很多。
UDP不保证数据的可靠传输,它只是尽可能做到最好。不需要维护复杂的连接关系。
UDP是面向消息的。它被添加到应用层的数据报头中,并直接插入IP层。
UDP没有拥塞控制
UDP支持多播。
UDP报头较小,表示传输了更多的数据内容。
下图显示了UDP与上层和下层的关系。
UDP的报头是什么?先看下图
如图所示,UDP的报头由四部分组成
每个16位的源端口和目的端口用来标记发送和接收应用程序进程。因为UDP不需要答案,所以源端口是可选的。如果没有使用源端口,它将被设置为零。当传输层从IP层接收到UDP数据报时,根据报头中的目的端口,它通过相应的端口传递UDP数据报,并将其传递给最终的目的应用程序。
如果接收方UDP发现收到的消息中的目的端口号不正确,它将丢弃修改后的消息,Internet控制协议ICMP将向发送方发送“端口不可达”错误消息。ICMP Traceroute的应用是指发送的UDP用户数据报故意使用非法的UDP端口,结果ICMP返回“端口不可达”的错误信息,从而达到测试的目的。
在目的地端口的后面是具有固定长度(以字节为单位)的消息长度字段,其用于指定包括数据部分的UDP数据报的长度。最小长度为8个字节。
报头剩余的16位用来对报头和数据一起进行校验和,这是可选的,这个功能一般用在实际应用中。
UDP和TCP校验和都包括它们的报头和数据,而IP报头校验和只包括IP报头。
如何使用UDP套接字当我们进入传输层时,我们也可以调用操作系统中的API来构建套接字。Socket是操作系统提供的一个编程接口,用来表示一些网络通信。应用程序通过socket调用系统内核中的网络协议模块,这些内核模块将负责具体网络协议的实现。
这样就可以让内核接收网络协议的细节,我们只需要提供要传输的内容。内核会帮助我们控制格式,进一步封装到底层。所以在实际应用中,我们不需要确切知道一个UDP包是如何形成的,只需要提供相关的信息(比如IP地址,比如端口号,比如要传输的信息)。在传输之前,操作系统内核会根据我们提供的相关信息,形成一个合格的UDP包(以及下层包和帧)。看下图。
UDP使用场景需要的资源少,而且是在网络条件好的内网,或者是对丢包不敏感的应用。比如DHCP协议就是基于UDP的。一般获取IP地址都是内网请求,一次获取不到IP也没关系。比如基于UDP的RTP和TFTP,丢一帧数据问题不大。比如一些设备发现协议等等。
不需要一对一的沟通和连接,而是一个可以广播的应用。DHCP是一种广播形式。VXLAN也需要多播,并且基于UDP协议。
需要处理速度快,延时低,能容忍少量丢包,但要求即使网络拥塞也不退缩,勇往直前。
QUIC是Google提出的基于UDP的改进通信协议。其目的是减少网络通信的延迟,提供更好的用户交互体验。
结论UDP没有TCP复杂,但却是网络系统中不可或缺的协议。需要熟练掌握协议。
用户数据报协议
更多udp使用(udp协议为什么协议)相关信息请关注本文章,本文仅仅做为展示!