UDP用户数据报协议和IP分组

UDP协议解析与IP分片
本文详细介绍了UDP协议的数据封装格式及工作原理,并重点分析了IP层如何处理超过最大传输单元(MTU)的数据报,包括数据报的分片与重组过程。
UDP整体的封装格式如下:


下面是8字节UDP首部:


当IP层根据协议字段把UDP报文向上传送到UDP模块后,UDP模块再根据端口号将数据发送到相应的进程中,以此实现进程到进程间的通信。

16位UDP长度代表UDP首部和UDP数据的总字节数。长度最小可以为8,即数据段不包含实际内容。

以下是抓包结果:


不同于TCP,UDP协议的接收方在接收数据后不会返回任何确认信号,发送方只管发,至于有没有成功到达,一概不管。并且在开始发送之前也不会进行任何通信。

当UDP报文的长度大于MTU时,IP层就需要进行分片了。以下介绍IP层分片。

物理网络层一般要限制每次发送数据帧的最大长度,这个最大长度称为最大传输单元(MTU)。IP层在发送一个IP数据报之前需要询问下一跳接口的MTU大小,如果待发送的IP数据报大小大于MTU,则需要进行分片。所以,分片既可以发生在原始发送端主机上,也可以发生在中间路由器上。但数据报的重组只在最终目的端进行。不管是分片还是重载,都是在IP层进行的,对上层来说这些操作是透明的。

IP首部中的下列字段为数据的分片和重组提供了信息:
  • 16位标识。唯一地标识主机发送的每一份数据报,通常每发送一份报文它的值就加1。注意,一个数据报分片后的各个分组中,标识字段是相同的,即表示同一个IP数据报
  • 3位标志。指导重组的一些标记。例如:
    • 一个bit作为“更多的片”位,表示接下来还有更多后续分组。
    • 一个bit作为“不分片”位,表示不对数据报进行分片。
  • 13位片偏移。该片偏移原始数据报开始处的位置。
IP数据报分片后成为一个个的分组,这些分组都拥有各自的IP首部,路由选择时也是相互独立的。它们到达目的端时有可能会发生失序,但利用各自的IP首部中的信息,完全能够重新恢复成原始的IP数据报。这里需要注意,任何运输层首部只出现在第一片数据中

例如要发送1473字节的用户数据,那么总的IP数据报长度 = 20字节IP首部 + 8字节UDP首部 + 1473字节用户数据 = 1501字节,超过了以太网规定的1500字节的MTU,所以需要进行分片,如下图所示:


注意上图,分组1中包含了UDP首部信息,而后续分组并不包含UDP首部。

参考:
《TCP/IP详解》第11章。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值