是什么

  • 定义CIDR(无分类编址)通过可变长子网掩码将网络划分为不同层次的子网;IP分片是当网络层数据报长度超过链路层最大传输单元(MTU)时,路由器对IP数据报进行拆分并在目的主机重组的过程。

  • 大白话:子网划分就是“切蛋糕”,把一个大网段借位切成多个小局域网;IP分片就是“寄大快递过安检”,包裹超重了就必须拆成小包裹分批发,每个分片都要贴上首部并记下数据在原包裹里的位置(片偏移)。

核心内容

1. CIDR 子网划分与特殊地址

  • 地址构成

  • 网络地址:主机号全 0,代表子网本身,不可分配给主机。

  • 广播地址:主机号全 1,代表子网内所有主机,不可分配给主机。

  • 可用主机地址范围与数量

  • 对半均分子网规律(/24 借 1 位变 /25)

    • 前半段(0 ~ 127):网络地址为 .0,广播地址为 .127,可用范围 .1 ~ .126

    • 后半段(128 ~ 255):网络地址为 .128,广播地址为 .255,可用范围 .129 ~ .254

2. IP 数据报分片计算规则

  • 原分组数据载荷

  • 最大分片数据载荷计算(核心约束)

    1. 单个分片总长 ,故单个分片最大可用空间为

    2. 除最后一个分片外,每个分片的数据载荷长度必须是 8 字节的整数倍

  • 片偏移量(Offset)计算

    • 片偏移字段以 8 字节为基本单位

    • 某个分片的片偏移量公式:

  • 标志位变化

    • :表示后面还有分片。

    • :表示这是最后一个分片。

    • :允许分片。

例题

  • 题目

    某公司的网络如下所示。IP 地址空间 192.168.1.0/24 均分给销售部和技术部两个子网,并已分别为部分主机和路由器接口分配了 IP 地址,销售部子网的 ,技术部子网的

    销售部已分配地址 192.168.1.1 ~ 192.168.1.20,路由接口 F0 为 192.168.1.126;技术部已分配地址 192.168.1.129 ~ 192.168.1.208,路由接口 F1 为 192.168.1.254

    1. 销售部子网的广播地址是什么?技术部子网的子网地址是什么?若每台主机仅分配一个 IP 地址,则技术部子网还可以连接多少台主机?

    2. 假设主机 192.168.1.1 向主机 192.168.1.208 发送一个总长度为 1500B 的 IP 分组,IP 分组的首部长度为 20B,路由器在通过接口 F1 转发该 IP 分组时进行了分片。若分片时尽可能分为最大片,则一个最大 IP 分片封装数据的字节数是多少?至少需要分为几个分片?每个分片的片偏移量是多少?

  • 分析

    1. /24 均分为两份,掩码变为 /25,主机位剩 7 位。销售部对应前半段,技术部对应后半段。技术部计算剩余可用主机时,除了减去已分配的主机数,绝不能漏掉路由器接口 F1

    2. 接口 F1 的 ,减去 20B 首部后理论可容纳 780B 数据。但片偏移以 8 字节为单位,数据载荷必须能被 8 整除,需向下取整到 776B。原数据载荷为 ,拆分为 776B 与 704B 两片,并分别求偏移。

  • 答案

    (1)

    依据 CIDR 划分规则,均分后的子网掩码为 255.255.255.128(即 /25):

    • 销售部广播地址:192.168.1.127

    • 技术部子网地址:192.168.1.128/25(或写 192.168.1.128

    技术部子网可用 IP 总数:

    技术部已分配主机 IP 数:

    技术部路由器接口占用 IP 数:

    还可连接的主机数:

    (2)

    原 IP 分组的数据部分总长度:

    最大分片数据载荷须满足 且为 8 字节的整数倍:

    分片划分与片偏移计算:

    • 分片 1:携带数据 (范围 0~775),片偏移量为

    • 剩余待发数据:

    • 分片 2:总长 ,携带数据 (范围 776~1479),片偏移量为

    结论:至少需要分为 2 个分片

    第 1 个分片的片偏移量为 0,第 2 个分片的片偏移量为 97

⚠️ 易错点

Warning

  • 路由器接口漏算 IP:计算子网“还可连接多少主机”时,极易只减去已分配的主机数,而漏减路由器接口占用的 1 个局域网 IP

  • 8 字节对齐踩坑:算最大分片数据时,算到 顺手就直接使用。非末尾分片的数据长度必须能被 8 整除,必须向下取整到 776B()。

  • 片偏移单位混淆:片偏移填写的数值是字节数除以 8 的结果,直接填原始字节偏移量(如写 0 和 776)判零分。