计算机网络•自顶向下方法:IP分片与重组

news/2025/1/4 5:50:02/

IP协议

数据报格式

在这里插入图片描述

IP分片与重组

链路层帧能承载的最大数据字节数称为MTU (Max Transmission Unit)

  • 不同类型的链路可能具有不同的MTU
  • 以太网帧最多携带1500字节载荷,有些广域网帧只能携带576字节载荷

传输过程中,较大的IP数据报可以被分片:

  • 将数据报载荷划分为若干较小的数据块,每个数据块封装成一个独立的数据报传输
  • 数据报在传输的过程中可以被多次分片,但仅在目的主机上重组
分片的报头

分片的报头取自原始数据报

与分片有关的字段:

  • 标识:每个分片必须携带与原始数据报相同的标识
  • 偏移量:指示分片中的数据在原始数据报载荷中的位置
  • 标志位:
    • MF(more fragments):最后一个分片的MF=0,其余分片的MF=1
    • DF(don’t fragment):DF=1表示不允许对数据报分片

分片报头中的以下字段需要修改:

总长度,偏移量,MF,TTL,头部检查和

分片的数据长度

假设原始数据报的报头长度为H,分片的数据长度 N,应满足:H+N ≦ MTU

由于偏移量只有13比特,除最后一个分片外,其余分片的数据长度应为8字节的整倍数

考虑到分组传输效率,除最后一个分片外,分片的数据长度 N 应为满足以上两个条件的最大整数

数据报分片的处理过程

  • 根据报头长度H和输出线路的MTU,确定分片的最大数据长度N
  • 将数据报的载荷划分成长度为N的若干数据块(最后一个数据块可能不足N字节)
  • 将原始报头加到每一个数据块的前面,修改报头中的以下字段:
    • 总长度 = H + 数据块长度
    • 最后一个报头的MF位置0,其余报头的MF位置1
    • 偏移量 = 数据块在原始数据报载荷中的字节序号/8
    • TTL=TTL-1
    • 计算头部检查和
分片的例子

例:要将一个总长度=4000字节的IP包发送到MTU=1500字节的链路上,IP报头长度H=20字节

数据块最大长度 N = 1480字节

原始数据报的载荷(3980字节)被分成三个数据块,长度分别为1480字节、1480字节和1020字节

分片序号总长度MF偏移量
11500(=1480+20)10
21500(=1480+20)1185(=1480/8)
31040(=1020+20)0370(=185+185)
重组

将收到的分片重新组装成原始数据报的过程称为重组,重组在目的主机中进行:

  • 收集分片:目的主机使用 <源IP地址,标识> 确定属于同一个数据报的分片
  • 利用最后一个分片(MF=0)计算原始数据报长度:
    • ​ 原始数据报长度=偏移量×8 + 分片总长度
    • 原始数据报载荷=偏移量×8 +(分片总长度 – 报头长度)
  • 组装:将各分片中的数据块按照其在原始数据报载荷中的偏移量重组
分片的问题

分片的开销:

  • 降低了路由器的吞吐量
  • 消耗了目的主机的资源:每个重组的数据报需要一个重组缓冲区和一个重组定时器

针对分片的DoS攻击:

  • 攻击者发送一系列奇怪的分片,消耗目的主机的资源

IPv6取消了路由器分片的功能:

  • 源主机发送探测报文,确定路径上的最小MTU
  • 源主机构造的数据报大小不超过最小MTU
  • 路由器丢弃超大的数据报,并发送错误报告

http://www.ppmy.cn/news/1560019.html

相关文章

Spring Boot环境配置

目录 一、准备工作 硬件要求确认 操作系统检查与更新 二、安装Java开发工具包&#xff08;JDK&#xff09; 1.?选择合适的JDK版本 2.?下载JDK 3.?安装JDK - Windows系统 - Linux系统 - macOS系统 4.?配置环境变量&#xff1a; - 创建系统变量 - 更新Path变量 …

仿快团团商品详情页底部按钮头像轮播(uniapp)

效果展示 原生小程序也可以直接搬过去&#xff0c;稍改一下即可&#xff0c;如需要的话再发一篇原生小程序的代码 html <template><view class"avatarList" :style"{ width: itemWidth * 3 - overlapWidth * 2 rpx }"><image:src"i…

RapidSSL 证书

在当今数字化时代&#xff0c;网络安全已成为企业运营和个人信息保护不可或缺的一环。随着网络犯罪的日益猖獗&#xff0c;采用SSL证书来加密网站通信已成为业界的普遍做法。在众多SSL证书品牌中&#xff0c;RapidSSL以其高效、经济且全面的安全解决方案脱颖而出&#xff0c;成…

什么是监测和控制汽车的VCU --- 基于外部信号控制各种设备的核心单元

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图&#xff0c;如下&#xff1a; 图片可点击放大 接下来我们来介绍一下 推荐学习&#xff1a;GIS入门模型构建器Arcpy批量…

java isAssignableFrom 使用示例

好的&#xff0c;下面我将通过多个具体的类和子类示例&#xff0c;展示在不同情况下 isAssignableFrom 如何工作&#xff0c;以及在你的代码逻辑中如何处理这些情况。我们将讨论以下几种场景&#xff1a; 同名字段且类型相同同名字段但子类字段类型为父类字段类型的子类同名字…

检索分析服务 Elasticsearch版

阿里云的检索分析服务 Elasticsearch版&#xff08;简称 Elasticsearch版&#xff09;是基于 Elasticsearch 构建的一款完全托管的搜索和数据分析服务。Elasticsearch 是一个开源的、基于Lucene的分布式搜索引擎&#xff0c;广泛用于大数据的实时搜索、日志分析、监控等场景。阿…

【Unity Shader】【图形渲染】 Shader数学基础14:裁剪空间

在计算机图形学中,裁剪空间(Clip Space)是一个至关重要的概念,它是物体从世界空间到最终屏幕显示的一个中间步骤。本文将详细探讨裁剪空间的基本原理、投影矩阵的作用,以及如何通过透视投影和正交投影来确定裁剪空间。 什么是裁剪空间? 裁剪空间(Clip Space)也称为齐…