UDP协议

UDP介绍

传输层有两个好兄弟,大哥TCP和二弟UDP,大哥靠谱,二哥不靠谱
UDP不建立连接,无连接,不可靠
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
UDP的主要特点:
1.UDP是无连接的,减少开销和发送数据之前的时延。(没有建立连接,回复连接,释放连接的过程)
2.UDP使用最大努力交付,即不保证可靠交付。由应用层(传输层的上一层保证数据可靠交互)
3.UDP是面向报文的,适合一次性传输少量数据的网络应用。
4.UDP无拥塞控制,适合很多实时应用。
5.UDP首部开销小,8B(8字节),TCP20B。

UDP协议_第1张图片
UDP面向报文:UDP对于应用层交下来的报文,既不合并,也不拆分,对报文的长度大小不做任何改变,整个应用层的报文都会传到传输层的一个报文段中。应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整的应用层报文。因此,应用程序一定要选择一个而大小合适的报文,如果报文太长,当UDP把报文完整地装进来并交给网络层的时候,网络层就要分片,因为接下来传给链路层,链路层有MTU的要求,就会给网络层的效率造成影响,如果应用层的报文过小,一直传到网络层,IP数据报的数据部分就相比首部来说小很多,也就是说会使IP数据报的首部相对长度太大,也会降低网络层的效率。我们希望首部附加信息尽可能地少,一个数据报中所含的数据尽可能地多。综上所述,应用层所选的报文长度应当适当

由于UDP协议是不可靠的交互,导致数据容易丢失,因此,一次性也不要传输太多,传输太多损失可能比较大,所以,UDP适合传输少量数据的网络应用

UDP无拥塞控制:如果UDP没有拥塞控制,网络即使再拥塞,UDP也不会让发送方的速率放缓
,正因为没有拥塞控制,也给UDP带来了一些优点,即可以用于很多实时性的应用,如IP电话,视频会议,这些应用要求原主机以恒定的速率发送数据,并且允许在网络出现拥塞的情况下丢弃一些数据,实时应用不允许数据有太大的延迟,但是丢一点是可以的。当然,如果拥塞太严重,我们可以有补救措施:如,向前纠错或者是重传已经丢失的报文

UDP要求不高,实现的功能也不像TCP一样多,所以它的首部字段比较少,对应的首部的长度也就很小(8字节)

UDP的首部格式

UDP协议_第2张图片
数据部分可以为0,所以一个UDP的数据报最少是8字节,也就是说一定会有首部字段
源端口号:可有可无,如果发送的数据报希望得到对方的回复,就加上源端口号,添上之后,对方才知道发给你的进程,如果不需要对方回信,这个端口号可以是全0

目的端口号:一定要有,发送一个用户数据报,或者说发送一个报文段,一定是有指向或者目的的(是要发给哪个主机的哪个进程)

UDP长度:整个用户数据报的长度,也就是首部加上数据字段

UDP检验和:检测整个UDP数据报是否有错,错就丢弃

一种出错的情况:分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文

UDP校验的过程

UDP协议_第3张图片

在上图中,UDP用户数据报的首部包含伪首部,源端口,目的端口,长度,校验和,其中伪首部又包括源IP地址,目的IP地址等,图中的17是指IP数据报首部的协议字段,是为了说明数据部分使用的是什么字段。现在我们数据部分使用的是UDP协议,也就是传输层使用UDP协议,传输层的UDP对应的协议字段值就是17。伪首部模仿的就是IP首部

伪首部只有在计算检验和时才出现,不向下传送也不向上递交。也就是发送端和接收端校验数据和首部有没有出错的时候才会出现伪首部

伪首部的组成
在这里插入图片描述17:封装UDP报文的IP数据报首部协议字段是17。
UDP长度:UDP首部8字节加数据部分长度(不包括伪首部)。

如何用伪首部校验UDP数据报有没有发生差错?

参考:

2019 王道考研 计算机网络 5.2 UDP协议

你可能感兴趣的:(计算机网络,udp,网络,网络协议)