【计算机网络笔记】IP分片

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 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)

首先需要掌握一个概念:最大传输单元(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个小数据报(片):

相关推荐
懒大王就是我1 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
咔叽布吉1 小时前
【论文阅读笔记】CamoFormer: Masked Separable Attention for Camouflaged Object Detection
论文阅读·笔记·目标检测
johnny2331 小时前
《大模型应用开发极简入门》笔记
笔记·chatgpt
亦枫Leonlew1 小时前
微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems
笔记·数学·微积分·1024程序员节
小肥象不是小飞象1 小时前
(六千字心得笔记)零基础C语言入门第八课——函数(上)
c语言·开发语言·笔记·1024程序员节
星LZX1 小时前
WireShark入门学习笔记
笔记·学习·wireshark
海绵波波1072 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
努力变厉害的小超超3 小时前
ArkTS中的组件基础、状态管理、样式处理、class语法以及界面渲染
笔记·鸿蒙
幺零九零零5 小时前
【计算机网络】TCP协议面试常考(一)
服务器·tcp/ip·计算机网络
aloha_7898 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot