【计算机网络】传输层(二)—— UDP 协议

发布于:2023-01-21 ⋅ 阅读:(654) ⋅ 点赞:(0)

【计算机网络】传输层(二)—— UDP协议

一、UDP 概述

UDP仅在 IP 的数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测

  1. UDP 是无连接的,减少开销和发送数据之前的时延。
  2. UDP 使用最大努力交付,即不保证可靠交付。
  3. UDP 是面向报文的,适合一次性传输少量数据的网络应用。
  4. UDP 无拥塞控制,适合很多实时应用。
  5. UDP 首部开销小,UDP仅有 8B的开销,TCP 20B。

在这里插入图片描述

应用层给UDP 多长的报文,UDP 就照样发送,即一次发一个完整报文。

UDP是面向报文的。发送方 UDP 对应用层交下来的报文,在添加首部后就向下交付给 IP层,一次发送一个报文,既不合并,也不拆分,而是保留这些报文的边界:接收方UDP 对IP层交上来UDP数据报,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文。因此报文不可分割,是UDP数据报处理的最小单位。因此,应用程序必须选择合适大小的报文,若报文太长,UDP把它交给 IP 层后,可能会导致分片;若报文太短,UDP把它交给 IP层后,会使 IP数据报的首部的相对长度太大,两者都会降低 IP层的效率。

二、UDP 数据报

UDP数据报包含两部分:UDP首部和用户数据。UDP首部有8B,由4个字段组成,每个字段的长度都是 2B。各字段意义如下:

  1. 源端口。源端口号。在需要对方回信时选用,不需要时可用全0。
  2. 目的端口。目的端口号。这在终点交付报文时必须使用到。
  3. 长度。UDP 数据报的长度(包括首部和数据),其最小值是8(仅有首部)。
  4. 校验和。检测 UDP 数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0。

在这里插入图片描述

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

在这里插入图片描述

三、UDP 校验

在计算校验和时,要在 UDP 数据报之前增加 12B 的伪首部,伪首部并不是UDP 的真正首部。只是在计算校验和时,临时添加在 UDP数据报的前面,得到一个临时的 UDP数据报。校验和就是按照这个临时的 UDP数据报来计算的。伪首部既不向下传送又不向上递交,而只是为了计算校验和。

UDP 校验和的计算方法和 IP数据报首部校验和的计算方法相似。但不同的是,IP 数据报的校验和只检验P数据报的首部,但 UDP的校验和则检查首部和数据部分

在这里插入图片描述
伪首部只有在计算检验和时才出现,不向下传送也不向上递交。

在发送端:

  1. 填上伪首部
  2. 全 0 填充检验和字段
  3. 全 0 填充数据部分(UDP数据报要看成许多 4B 的字串接起来)
  4. 伪首部 + 首部 + 数据部分采用二进制反码求和
  5. 把和求反码填入检验和字段
  6. 去掉伪首部,发送

在接收端:

  1. 填上伪首部
  2. 伪首部+首部+数据部分采用二进制反码求和
  3. 结果全为 1 则无差错,否则丢弃数据报/交给应用层附上出差错的警告。

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到