系列文章目录
什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
传输层——可靠数据传输之流水线机制与滑动窗口协议
传输层——TCP特点与段结构
传输层——TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)
传输层——拥塞控制原理与解决方法
TCP的拥塞控制机制
网络层服务与核心功能
网络层服务模型——虚电路网络
网络层服务模型——数据报网络
Internet网络的网络层——IP协议之IP数据报的结构
- 系列文章目录
- 最大传输单元(MTU)
- IP分片与重组
最大传输单元(MTU)
首先需要掌握一个概念:最大传输单元(MTU)。
IP分组在网络上传输的过程中,需要被封装到链路层的数据帧里面,不同链路的数据帧在封装数据的时候可能对数据字节数有限制。网络链路存在MTU (最大传输单元),即链路层数据帧可封装数据的上限。不同链路的MTU不同。
那如果一个链路的MTU大于下一个链路的MTU怎么办?这时就涉及到IP分片与重组。
IP分片与重组
大IP分组向较小MTU链路转发时,可以被“分片” (fragmented)
。这里用的是“可以”,也就是说不一定要进行分片,而是要看看这个分组里的某个标志位是怎么设置的。可能让分,也可能不让分。
- 如果发现不允许分片就丢弃掉,然后向源主机发送一个ICMP报文。
- 如果IP分组允许分片,就可以1个大的IP分组分为多片小的IP分组,这些分片到达目的主机后再进行“重组”。所以说路由器只管分,不管装,而是目的主机负责重新组装。
所以就要清楚一个IP分组是否是分片的,如果分片了,那它是哪一片。并且片和片之间的相对顺序关系是怎样的。因此IP首部的相关字段就用于标识分片以及确定分片的相对顺序。包括总长度、标识、标志位和片偏移。
-
标识字段占16位:标识一个IP分组。在IP协议的实现里,这个标识的产生很简单,利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识。但是无法唯一标识一个IP分组,需要和其他字段共同来唯一标识一个IP分组
-
标志位字段占3位。它的结构从左到右是这样的:
在这里插入图片描述
- DF (Don’t Fragment)。DF =1:禁止分片; DF =0:允许分片
- MF (More Fragment)。MF =1:非最后一片; MF =0:最后一片(或未分片)
-
片偏移字段占13位:一个IP分组分片封装原IP分组数据的 相对偏移量,片偏移字段以8字节为单位
- 如果一个IP分组没有经过分片,那么片偏移量一定是0
- 通过片偏移量,可以知道这个分片是原IP分组中的哪一片,同时也可以进行排序
IP分片过程:
假设原IP分组总长度为L,待转发链路的MTU为M。若L>M,且DF=0,则可以/需要分片。分片时每个分片的标识字段复制原IP分组的标识。另外,通常分片时,除了最后一个分片,其他分片均分为MTU允许的最大分片。一个最大分片可封装的数据应该是8的倍数(因为片偏移量的单位是8)。因此,
- 一个 最大分片可封装的数据为:
-
那么需要的总片数为:
-
每片的片偏移字段取值为:
-
每片的总长度字段为:(除了最后一片,其他片都是d+20,也就是最大值
-
每片的MF标志位为:
例如:4000B数据报,输出链路MTU = 1500B,DF=0。那么这个数据报能够分为3个小数据报(片):