IPv 4
本文最后更新于2 天前,其中的信息可能已经过时,如有错误请发送邮件到184874483@qq.com

这一块的主线先理顺

这一大块其实就是网络层最核心的一条主线:主机先用 IP 地址标识“要去哪里”,再结合子网掩码判断“是不是同一网段”,如果不是同一网段,就把数据交给默认网关;路由器依据路由表进行转发,转发时核心看的是目标 IP 地址;如果链路层发送到下一跳,还要借助 ARP 把下一跳 IP 解析成 MAC 地址;如果分组太大,还可能发生分片;如果跨公网私网边界,还会用到 NAT。

所以这些知识点看起来很多,但本质上可以串成一句话:

IP 负责逻辑寻址与路由,ARP 负责下一跳的链路层寻址,子网掩码/CIDR 负责网络划分与聚合,TTL 防止分组在网络中无限兜圈,NAT 解决私有地址访问公网的问题。

下面按中国计算机考研最常见的考法系统整理。


IPv4 分组首部格式及字段含义

IPv4 数据报由两部分组成:首部 + 数据部分
其中首部最少 20B,最多 60B。

IPv4 首部主要字段

字段位数含义常见考点
版本 Version4指明 IP 协议版本,IPv4 中值为 4版本号识别
首部长度 IHL4以 4B 为单位,最小值 5,即最小首部 20B算首部长度、数据长度
区分服务/服务类型8早期叫 TOS,现多用于区分业务服务质量了解即可
总长度 Total Length16整个 IP 数据报长度,单位是字节,包括首部和数据常用于分片计算
标识 Identification16同一原始数据报分片后,各片的标识相同分片重组核心字段
标志 Flags3与分片有关,常考 DF、MF高频
片偏移 Fragment Offset13某片数据在原始数据报中的相对位置,单位是 8B高频计算点
生存时间 TTL8分组在网络中允许经过的最大路由器跳数高频概念题
协议 Protocol8指明上层协议,如 TCP=6,UDP=17,ICMP=1高频选择题
首部检验和 Header Checksum16只校验 IP 首部,不校验数据部分易混
源 IP 地址32发送方 IP基本字段
目的 IP 地址32接收方 IP路由转发依据
可选字段 Options可变很少考细节记住可变导致首部不一定 20B

标志位 Flags 的重点

Flags 里真正常考的是两个:

  1. DF(Don’t Fragment):禁止分片
    DF = 1,表示该数据报不能分片。如果下一段链路 MTU 太小,路由器会直接丢弃并返回差错信息。
  2. MF(More Fragments):后面是否还有分片
    MF = 1,表示“后面还有分片”
    MF = 0,表示“这是最后一个分片”

所以做题时,分片题一定盯住三件事:

标识相同、片偏移按 8B 计、除最后一片外数据长度通常应是 8B 的整数倍。


TTL 机制怎么理解

TTL 是 Time To Live,中文常叫生存时间
但在考研里,更准确地理解成:允许经过的最大路由器跳数

TTL 的工作过程

一个 IP 数据报从源主机发出时,会被赋一个初始 TTL 值,比如 64、128、255 等。
之后每经过一个路由器,TTL 就减 1。

  • 如果减完后 TTL > 0,则继续转发
  • 如果 TTL = 0,则路由器丢弃该分组,并通常发送 ICMP 超时报文给源主机

TTL 的作用

TTL 的本质作用是:

防止分组在网络中因路由环路而无限转发。

如果没有 TTL,网络一旦出现环路,分组可能永远兜圈,持续占用带宽和设备资源。

TTL 的典型考法

1. 判断最多经过多少台路由器

若初始 TTL = 8,则最多可经过 8 台路由器
经过第 8 台时减为 0,通常就不能再继续往后转发了。

2. traceroute 的原理

traceroute/tracert 就是故意发送 TTL = 1、2、3…… 的报文,
让沿途路由器依次因为 TTL 到 0 而返回 ICMP 超时信息,从而探测路径。

易错点

很多同学会把 TTL 理解成“时间秒数”。
在现代 IP 网络里,考试中应优先按“跳数限制”理解,不要往真实时间流逝上想太多。


IP 数据报分析时,最常抓哪些字段

考试里一看到“IP 数据报分析”,通常就是从这些字段下手:

第一类:长度相关

  • 首部长度
  • 总长度
  • 数据部分长度 = 总长度 – 首部长度

第二类:分片相关

  • 标识
  • DF
  • MF
  • 片偏移

第三类:上层协议识别

  • Protocol = 1 → ICMP
  • Protocol = 6 → TCP
  • Protocol = 17 → UDP

第四类:生存与校验

  • TTL
  • 首部检验和

所以做题的顺序一般是:

先看首部长度和总长度,再看是否分片,再看协议字段识别上层协议,最后看 TTL 和地址信息。


IP 分片相关首部字段

你这里写的“IP分辨相关首部字段”,结合上下文,考研里通常指的就是IP 分片相关字段。这一块非常高频。

分片会在什么情况下发生

当 IP 数据报长度 大于下一跳链路的 MTU 时,如果 DF = 0,则可以分片。

哪些设备会分片、哪些设备会重组

  • 源主机可能分片
  • 中间路由器在 IPv4 中也可能分片
  • 目的主机负责重组
  • 中间路由器不负责重组

这是经典选择题点。

分片相关字段及作用

1. 标识 Identification

同一个原始 IP 数据报分出来的所有片,标识字段都相同
目的主机靠它判断哪些片属于同一原始报文。

2. 标志 Flags

  • DF = 1:不能分片
  • MF = 1:后面还有分片
  • MF = 0:最后一个分片

3. 片偏移 Fragment Offset

表示本分片数据部分在原始数据中的起始位置,单位是 8B

这意味着:

除最后一个分片外,其余各分片的数据长度通常必须是 8B 的整数倍。

分片计算题怎么做

假设:

  • 原始 IP 数据报总长度 = 4000B
  • 首部长度 = 20B
  • 数据部分 = 3980B
  • MTU = 1500B

则每片最多能装的数据量:

1500 - 20 = 1480B

因为 1480 正好是 8 的整数倍,所以可以直接用。

于是:

  • 第 1 片数据 1480B,片偏移 = 0
  • 第 2 片数据 1480B,片偏移 = 1480 / 8 = 185
  • 剩余数据 3980 - 1480 - 1480 = 1020B
  • 第 3 片数据 1020B,片偏移 = (1480 + 1480) / 8 = 370

对应:

  • 前两片 MF = 1
  • 最后一片 MF = 0
  • 三片的标识都相同

分片题最常错的地方

错误 1:把片偏移当成字节数

片偏移单位不是字节,而是 8B

错误 2:把总长度和数据长度混了

总长度 = 首部 + 数据。
分片时先算每片能装多少数据,再加首部求每片总长度。

错误 3:以为每片首部只保留一次

错。每个分片都有自己的 IP 首部。


ABC 三类地址怎么记

这是传统分类编址,虽然现在实际更多讲 CIDR,但考研仍经常考。

A、B、C 类地址范围

类别第一字节范围网络号位数主机号位数默认子网掩码
A 类1~126824255.0.0.0
B 类128~1911616255.255.0.0
C 类192~223248255.255.255.0

补充两个边界:

  • 127.x.x.x:保留作回送地址,不是普通 A 类可分配地址
  • 0.x.x.x:表示“本网络”,也不作普通主机地址分配

快速判断口诀

看第一字节:

  • 1~126 → A 类
  • 128~191 → B 类
  • 192~223 → C 类

子网掩码是什么,默认有哪些

子网掩码的作用是:把一个 IP 地址划分为“网络部分”和“主机部分”。

写法如:

  • 255.0.0.0
  • 255.255.0.0
  • 255.255.255.0

默认子网掩码

  • A 类默认:255.0.0.0
  • B 类默认:255.255.0.0
  • C 类默认:255.255.255.0

考试里说“默认子网掩码”,通常就是指这三个。


如何利用 IP 地址和子网掩码求子网地址

这是网络层计算题最基础的一类。

规则

子网地址 = IP 地址 AND 子网掩码

也就是按位与。

例子 1

IP 地址:192.168.1.130
子网掩码:255.255.255.192

先看最后一个字节:

  • IP 最后一个字节:130
    二进制:10000010
  • 掩码最后一个字节:192
    二进制:11000000

按位与:

10000010 AND 11000000 = 10000000

即 128

所以子网地址为:

192.168.1.128

例子 2

IP 地址:172.16.10.66
子网掩码:255.255.255.224

224 对应二进制是 11100000,块大小是 256 - 224 = 32

于是子网段按 32 递增:

  • 0~31
  • 32~63
  • 64~95
  • 96~127
    ……

66 落在 64~95 这一段,所以子网地址是:

172.16.10.64

做题更快的方法:块大小法

若掩码最后一个字节是:

  • 128 → 块大小 128
  • 192 → 块大小 64
  • 224 → 块大小 32
  • 240 → 块大小 16
  • 248 → 块大小 8
  • 252 → 块大小 4

然后看 IP 落在哪个块里,块起点就是子网地址。

这个方法在考场上比逐位转二进制更快。


CIDR 是什么

CIDR 是无分类域间路由选择
核心思想就是:不再死守 A/B/C 类,而是直接用“网络前缀长度”来表示网络。

例如:

  • 192.168.1.0/24
  • 10.0.0.0/8
  • 172.16.0.0/20

这里 /24 就表示前 24 位是网络前缀。

CIDR 地址块怎么理解

一个 CIDR 地址块,本质上是:

网络前缀相同的一组连续 IP 地址。

例如:

192.168.1.0/24

表示前 24 位相同,所以共有 2^(32-24) = 256 个地址,范围是:

192.168.1.0 ~ 192.168.1.255

CIDR 的意义

它解决了传统分类编址的两个问题:

  1. 地址分配不够灵活
  2. 路由表容易膨胀

于是就引出了两个高频点:

  • 地址块分配
  • 路由聚合

路由聚合怎么理解

路由聚合也叫构成超网
它的核心就是把多个网络前缀相同的连续子网,合并成一条更大的路由。

例子

有四个连续 C 类网络:

  • 202.38.64.0/24
  • 202.38.65.0/24
  • 202.38.66.0/24
  • 202.38.67.0/24

这四个网络可以聚合成:

202.38.64.0/22

因为 /22 表示前 22 位相同,正好覆盖这四个 /24 网络。

路由聚合的作用

  • 减少路由表项数量
  • 提高路由查找效率
  • 减轻路由器负担

聚合题怎么做

看多个网络地址的二进制表示,找它们共同前缀最长有多少位,就得到聚合后的前缀长度。


最长前缀匹配是什么

CIDR 下,路由表可能同时存在:

  • 128.14.0.0/16
  • 128.14.35.0/24
  • 128.14.35.128/25

如果一个分组目标地址是 128.14.35.130,它同时匹配上面三条路由。
这时路由器该选哪条?

答案是:

选前缀最长、最具体的那条。

也就是 /25

为什么必须最长前缀匹配

因为前缀越长,匹配范围越小,路由越精确。
这是 CIDR 路由查找的基本原则。

常见误区

不是“先匹配到哪条就用哪条”,也不是“按先后顺序”。
考试标准答案是:最长前缀匹配。


定长子网划分怎么做

定长子网掩码,就是把一个网络划分成若干个大小相同的子网。

做题主线

定长子网划分一般有两种问法:

1. 已知要划分的子网数,求借几位

设借了 n 位,则可划分子网数为:

2^n

有的教材会考虑全 0 和全 1 子网能否使用的问题,但现在考试一般默认可用,除非题目特别说明。

2. 已知每个子网要容纳的主机数,求主机位至少保留多少位

若主机位保留 h 位,则可用主机数通常为:

2^h - 2

减 2 是因为:

  • 全 0 主机号表示该子网网络地址
  • 全 1 主机号表示该子网广播地址

例子

某 C 类网络 192.168.1.0/24,要求划成 4 个子网。

因为 4 = 2^2,借 2 位,得到:

/26

子网掩码变为:

255.255.255.192

四个子网分别是:

  • 192.168.1.0/26
  • 192.168.1.64/26
  • 192.168.1.128/26
  • 192.168.1.192/26

每个子网地址数 2^(32-26)=64,可用主机数 62。


变长子网掩码 VLSM 怎么理解

VLSM 就是不同子网使用不同长度的掩码
它的目的是:更省地址

为什么要用 VLSM

定长划分简单,但容易浪费地址。
如果一个子网只需要 10 台主机,另一个需要 100 台主机,都给一样大的地址块,就会浪费很多。

VLSM 的思想是:

按需求大小分配,先分大的,再分小的。

VLSM 做题步骤

  1. 先把各子网按主机需求从大到小排序
  2. 给需求最大的子网先分配
  3. 每次分配地址块大小都按 2 的幂取整
  4. 后续子网从下一个可用网络地址继续分

例子

现有地址块:192.168.1.0/24

需要分给三个子网:

  • 子网 A:100 台主机
  • 子网 B:50 台主机
  • 子网 C:20 台主机

第一步:确定所需地址块大小

  • 100 台主机 → 至少 7 位主机位,因为 2^7 - 2 = 126
    所以前缀是 /25
  • 50 台主机 → 至少 6 位主机位,因为 2^6 - 2 = 62
    所以前缀是 /26
  • 20 台主机 → 至少 5 位主机位,因为 2^5 - 2 = 30
    所以前缀是 /27

第二步:按大到小分配

  • A:192.168.1.0/25
  • B:192.168.1.128/26
  • C:192.168.1.192/27

这样比定长划分更省地址。

VLSM 最容易错的地方

不是“随便切”,而是一定要:

先排需求大小,再按块边界对齐。


NAT 是什么

NAT 是网络地址转换
本质上是把私有 IP 地址转换成公网 IP 地址,以实现私网主机访问公网。

为什么需要 NAT

IPv4 地址不够用。
如果每台内网主机都直接分配公网地址,根本不够。

所以家庭、学校、公司内部常用私有地址:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

这些私有地址不能直接在公网中路由,需要通过 NAT 转换。

NAT 的基本过程

内网主机发数据到公网时:

  1. 主机源地址是私有 IP
  2. 到达 NAT 路由器
  3. NAT 设备把源私有 IP 改成公网 IP
  4. 同时记录端口映射关系
  5. 外网返回数据时,再根据映射表还原给对应内网主机

NAPT/PAT

考试里更常见的是端口复用型 NAT,也叫 NAPT 或 PAT。

它的特点是:

多个内网主机共用一个公网 IP,通过不同端口号区分不同连接。

这正是家用路由器最典型的工作方式。

NAT 的优缺点

优点:

  • 节省公网 IP
  • 隐藏内部网络结构

缺点:

  • 会破坏端到端透明性
  • 某些需要主动入站连接的应用处理更复杂

ARP 是什么

ARP 是地址解析协议
作用是:根据 IP 地址找出对应的 MAC 地址。

为什么需要 ARP

IP 地址是网络层地址,MAC 地址是数据链路层地址。
在局域网里真正发帧时,网卡需要知道目标 MAC 地址,而不是只知道目标 IP 地址。

所以:

要把“下一跳 IP 地址”解析成“下一跳 MAC 地址”,靠的就是 ARP。

ARP 工作流程

假设主机 A 要给主机 B 发数据,且 B 与 A 在同一局域网。

  1. A 先查 ARP 高速缓存
  2. 若没有 B 的 MAC,A 广播发送 ARP 请求
  3. 局域网所有主机都收到
  4. 只有 IP 匹配的 B 回送 ARP 应答
  5. A 得到 B 的 MAC,写入缓存
  6. 之后再发送数据帧

ARP 的核心考点

  • ARP 请求是广播
  • ARP 应答通常是单播
  • ARP 只工作在一个局域网范围内
  • 如果目标主机不在本网络,ARP 解析的不是目标主机 MAC,而是默认网关接口的 MAC

这一点是高频陷阱。


网络层转发分组的过程

这一块特别适合串联前面所有知识点。

情况一:目标主机与源主机在同一子网

主机发送数据时:

  1. 根据目标 IP 和本机子网掩码计算目标网络地址
  2. 根据本机 IP 和子网掩码计算本网络地址
  3. 若两者相同,说明目标在同一网段
  4. 通过 ARP 获取目标主机 MAC 地址
  5. 封装成以太网帧,直接发给目标主机

情况二:目标主机不在同一子网

  1. 主机根据子网掩码判断目标不在本地网段
  2. 将分组交给默认网关
  3. 主机通过 ARP 获取默认网关 MAC 地址
  4. 把 IP 数据报封装进链路层帧,目的 MAC 写成网关 MAC
  5. 路由器收到后,去掉链路层首部,查看 IP 首部中的目标 IP
  6. 查路由表,按最长前缀匹配确定下一跳和输出接口
  7. TTL 减 1,重新计算首部检验和
  8. 若需要,可能进行分片
  9. 再通过 ARP 获得下一跳 MAC
  10. 重新封装新的链路层帧,继续转发

这里最关键的一句话

IP 地址在端到端传输过程中总体表示最终目的地,MAC 地址则是逐跳变化的,只负责当前这一跳的链路传输。

所以为什么已经有 MAC 地址了还需要 IP 地址?

因为:

  • MAC 只在本地链路/本局域网中有意义
  • 路由器跨网络转发时,必须依赖IP 地址确定最终目的网络和路由路径
  • 每经过一跳,链路层帧会重封装,MAC 地址会变
  • 但 IP 数据报中的源 IP、目的 IP 一般不变(除 NAT 等情况外)

这正是网络层和数据链路层分工不同的体现。


这部分最常考的几个综合点

1. 依据 IP 和掩码求

  • 网络地址
  • 直接广播地址
  • 主机范围
  • 该主机是否同网段

2. IP 分片计算

  • 分几片
  • 每片总长度
  • 每片数据长度
  • 片偏移
  • MF/DF 的值

3. CIDR 与路由聚合

  • 给若干连续地址块求聚合前缀
  • 给目标 IP 找最长前缀匹配结果

4. NAT 与 ARP 的区别

  • NAT:地址转换,常在边界路由器
  • ARP:IP 到 MAC 的解析,常在局域网内部逐跳发送时使用

5. 路由器转发依据

  • 看的是目标 IP 地址
  • 不是看 MAC 地址
  • MAC 地址只是该跳发送时才用

这一大块最容易混淆的地方

第一组:IP 地址、MAC 地址、子网掩码

  • IP:逻辑地址,决定跨网络寻址
  • MAC:物理地址,决定本跳链路传输
  • 子网掩码:用来从 IP 中分离网络号和主机号

第二组:ARP 与路由选择

  • ARP:解决“下一跳的 MAC 是谁”
  • 路由:解决“下一跳应该走谁”

第三组:分片与重组

  • IPv4 中路由器可分片
  • 目的主机重组
  • 中间路由器不重组

第四组:分类编址与 CIDR

  • 分类编址看 A/B/C 类和默认掩码
  • CIDR 不强调类别,强调网络前缀长度

最后用一个总框架收尾

把这块内容压成复习时最值得记的一条链:

IPv4 首部负责携带寻址、分片、TTL 和上层协议标识等信息;子网掩码/CIDR 用于划分网络和进行路由聚合;主机先判断是否同网段,不同网段就交给默认网关;路由器按最长前缀匹配转发,逐跳借助 ARP 获取下一跳 MAC;TTL 每过一跳减 1,用于防环;分组过大时可能分片;私网访问公网时通常通过 NAT 完成地址转换。

按题型分类整理:IPv4 编址与子网划分解题模板

表面上看很多,实际上反复考的就是几类固定模型。把这些题型拆开之后,会发现做题步骤非常稳定。后面再遇到类似题,基本都可以直接套模板。


一、主机地址合法性判断题

这类题最常见的问法是:

  • 哪个地址可以分配给主机
  • 哪个地址不能作为目的地址
  • 哪个地址是非法地址
  • 哪个地址不能在 Internet 上正常转发

这类题的本质,是同时考四层判断:

  1. 地址格式是否合法
  2. 地址类别和默认子网掩码
  3. 是否是网络地址或广播地址
  4. 是否属于特殊保留地址

第一步:先看格式是否合法

IPV4 每个字节必须在 0~255 之间。
只要有一个字段超过 255,这个地址就直接非法。

例如:

  • 211.60.256.21 错,因为 256 超范围
  • 300.1.2.3 错,因为 300 超范围

这一层最简单,但考试里真会混进去。


第二步:看是不是特殊保留地址

1. 127.x.x.x

这是回送地址,不能分配给网络中的普通主机。

典型例子:

  • 127.10.10.17 不是合法公网主机地址

2. 私有地址

私有地址块有三段:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

这些地址可在内网使用,但在公网 Internet 上不会被正常路由转发。

典型例子:

  • 192.168.32.17 作为公网目的地址,路由器不会正常转发

3. 网络地址和广播地址

如果主机号全 0,就是网络地址
如果主机号全 1,就是广播地址
这两种都不能分给普通主机。


第三步:按默认子网掩码判断是不是网络地址/广播地址

这是非常高频的点。
默认子网掩码一定要熟:

地址类别第一字节范围默认掩码
A 类1~126255.0.0.0
B 类128~191255.255.0.0
C 类192~223255.255.255.0

例 1

192.46.10.0

192 开头,是 C 类地址,默认掩码 /24
最后一个字节全 0,所以是网络地址,不能分给主机。

例 2

110.47.10.0

110 开头,是 A 类地址,默认掩码 /8
主机部分是 47.10.0,既不是全 0,也不是全 1,所以可以分配给主机。


这一类题的通用模板

以后做“哪个地址能分配给主机”这类题,按这个顺序判断:

模板

  1. 看每个字节是否都在 0~255
  2. 看是否属于 127.x.x.x
  3. 看是否属于私有地址而题目又明确问公网转发
  4. 按默认掩码判断是不是网络地址或广播地址

二、子网划分与主机数计算题

这类题的问法通常是:

  • 每个子网最多多少台主机
  • 最多能划分多少个子网
  • 给定需求,哪种掩码方案可行
  • 点对点链路应采用什么掩码

这类题的关键,不是硬算,而是先认清两件事:

  1. 借了多少位做子网号
  2. 剩了多少位做主机号

1. 子网个数怎么算

若从主机位中借了 n 位做子网号,则子网数通常为:

2^n

例如:

一个 C 类网络默认是 /24
如果改成 /27,说明借了 3 位。

所以子网数是:

2^3 = 8


2. 每个子网可分配主机数怎么算

若主机位还剩 h 位,则每个子网可分配主机数为:

2^h - 2

为什么减 2?

  • 全 0 主机号表示网络地址
  • 全 1 主机号表示广播地址

/27 的网络,主机位为:

32 - 27 = 5

所以每个子网可分配主机数:

2^5 - 2 = 30


3. 已知子网掩码,如何快速求主机数

B 类地址,子网掩码 255.255.240.0

先把它写成前缀长度:

  • 255.255.240.0 = /20

则主机位数:

32 - 20 = 12

主机数:

2^12 - 2 = 4094


4. 已知需求,反推掩码

这类题是最典型的综合题。

例如:

  • 至少要 51 个子网
  • 每个子网至少容纳 800 台主机

先看主机位

要满足:

2^h - 2 >= 800

试算:

  • 2^9 - 2 = 510,不够
  • 2^10 - 2 = 1022,够

所以至少保留 10 位主机位。
因此前缀长度最多只能到:

32 - 10 = 22

/22

再看子网数

如果原来是 B 类默认 /16,变成 /22,借了 6 位:

2^6 = 64

64 个子网,也够。

所以该题选 /22,即 255.255.252.0


5. 点对点链路为什么通常选 /30

点对点链路只需要两个主机地址。
在传统考研题里,最省地址又刚好够用的掩码是:

255.255.255.252

也就是 /30

因为:

  • 总地址数 4 个
  • 可用主机数 2 个

刚好给链路两端各一个。

注意:工程里有时会提到 /31,但在考研传统题里,标准答案一般仍是 /30


这一类题的通用模板

已知前缀,求主机数

  1. 主机位 = 32 - 前缀长度
  2. 主机数 = 2^(主机位) - 2

已知默认网络,求子网数

  1. 借位数 = 新前缀 - 默认前缀
  2. 子网数 = 2^(借位数)

已知需求,反推掩码

  1. 先根据主机数求最少主机位
  2. 再看对应前缀能否满足子网数要求
  3. 二者都满足才可行

三、CIDR 范围与同子网判断题

这类题最常见的形式是:

  • 某个 /n 地址块包含哪些地址
  • 某个地址和哪个地址同属一个子网
  • 某个地址块的网络地址、广播地址、主机范围是什么
  • 默认网关为什么不能用某个地址

这部分最实用的方法就是:块大小法


1. 块大小法的核心

某个字节的块大小 = 256 - 该字节掩码值

例如:

  • 掩码字节 248 → 块大小 8
  • 掩码字节 240 → 块大小 16
  • 掩码字节 224 → 块大小 32
  • 掩码字节 192 → 块大小 64

然后看目标地址落在哪个块里。


2. 如何求 CIDR 地址块范围

192.168.10.0/20

/20 的掩码是:

255.255.240.0

第三个字节掩码是 240,所以块大小:

256 - 240 = 16

第三个字节的分块是:

  • 0~15
  • 16~31
  • 32~47

10 落在 0~15 这一块,所以该地址块实际范围是:

192.168.0.0 ~ 192.168.15.255

这就是为什么 192.168.10.0/20 的真正网络地址不是 192.168.10.0,而是 192.168.0.0


3. 如何判断两个地址是否同子网

最本质的方法是:

IP地址 AND 子网掩码

若结果相同,则属于同一子网。

192.16.0.19/28

/28 掩码是 255.255.255.240,块大小 16。
最后一个字节 19 落在 16~31,所以子网是:

  • 网络地址:192.16.0.16
  • 广播地址:192.16.0.31
  • 可用主机:192.16.0.17 ~ 192.16.0.30

因此与它同子网的主机地址可以是:

192.16.0.17


4. 默认网关地址为什么会出错

主机地址:200.15.10.6/29
默认网关:200.15.10.7

/29 的块大小是 8,所以这一子网范围是:

  • 网络地址:200.15.10.0
  • 可用主机:200.15.10.1 ~ 200.15.10.6
  • 广播地址:200.15.10.7

因此 .7 不是合法主机地址,而是广播地址
广播地址不能配置为默认网关。


5. 直接广播地址怎么求

主机地址:166.66.66.66
子网掩码:255.255.192.0

第三个字节掩码是 192,块大小为 64。
66 落在 64~127 这个块中。

所以:

  • 网络地址:166.66.64.0
  • 广播地址:166.66.127.255

以后只要问“向所在子网广播”,目标地址就是这个广播地址。


这一类题的通用模板

求网络地址

  1. 求掩码
  2. 找块大小
  3. 判断落在哪个块
  4. 块起点就是网络地址

求广播地址

  1. 先求网络地址
  2. 把主机位全置 1

求同子网主机

  1. 先求网络地址和广播地址
  2. 在两者之间的主机地址才可选

四、路由聚合、重叠与不重叠判断题

这类题经常让人感觉最乱,因为它同时考:

  • CIDR
  • 地址块边界
  • 是否重叠
  • 是否能聚合
  • 是否会引入多余地址

但实际上判断标准很固定。


1. 判断两个地址块是否重叠

先求出各自覆盖范围。
只要范围有交集,就重叠;没有交集就不重叠。

已分配子网:74.178.247.96/29

/29 块大小 8,所以覆盖范围是:

74.178.247.96 ~ 74.178.247.103

若某候选前缀是:

74.178.247.96/28

/28 块大小 16,覆盖范围是:

74.178.247.96 ~ 74.178.247.111

明显与原子网重叠,因此不能再分配。


2. 路由聚合时,什么叫“能覆盖”

有时题目只要求“能覆盖若干条路由”,并不要求“恰好只覆盖这些路由”。

有四条路由:

  • 172.18.129.0/24
  • 172.18.130.0/24
  • 172.18.132.0/24
  • 172.18.133.0/24

若要找一个聚合路由把它们都覆盖住,可以选:

172.18.128.0/21

因为 /21 覆盖第三个字节 128~135,把这四条都包含进去了。

虽然它还顺带覆盖了别的地址,但题目只问“能覆盖”,所以它成立。


3. 什么时候“聚合后不会引入多余地址”

这是更严格的一类题。

要满足:

  1. 两个地址块大小相同
  2. 两个地址块相邻
  3. 聚合后的更大块正好边界对齐

192.168.6.192/26

它覆盖:

192.168.6.192 ~ 192.168.6.255

若要与它精确聚合,不引入多余地址,另一个块必须是:

192.168.6.128/26

两者正好合成:

192.168.6.128/25

如果不是相邻同规模块,就不能精确聚合。


4. “一个网络划分为 4 个子网”这类题怎么想

这类题不能只看某个选项和已知子网是否重叠,还要看:

加入这个候选子网后,剩余地址空间是否还能在规定个数内被分完。

已知其中一个子网是:

192.168.1.130/26

它实际对应子网:

192.168.1.128/26

如果另一个候选是:

192.168.1.96/27

那么剩余空间会被切得太碎,无法在总共只划分成 4 个子网的条件下刚好分完。
所以这种题不能只看“不重叠”,还要看“总数是否还能凑够且刚好分完”。


这一类题的通用模板

判断是否重叠

  1. 分别求出每个地址块覆盖范围
  2. 看范围是否有交集

判断能否精确聚合

  1. 地址块大小必须相同
  2. 地址范围必须相邻
  3. 聚合后新块必须对齐

判断能否作为剩余子网之一

  1. 先确认与已有子网不重叠
  2. 再看剩余地址空间是否还能在规定数量内正好划完

最后把这四类题压成一套做题顺序

以后碰到 IPv4 地址题,基本可以按这个顺序想:

第一问:这是合法的吗?

先看:

  • 每段是否在 0~255
  • 是否是 127 回送地址
  • 是否是私有地址
  • 是否是网络地址或广播地址

第二问:这个掩码意味着什么?

先看:

  • 前缀长度是多少
  • 借了多少位
  • 还剩多少主机位

第三问:这个地址落在哪个块?

先求:

  • 块大小 = 256 - 掩码字节
  • 地址属于哪个块
  • 网络地址和广播地址分别是什么

第四问:是否重叠、能否聚合?

先判断:

  • 范围是否有交集
  • 是否同规模、相邻、对齐

这一块最值得背的几个“秒杀结论”

1. 私有地址

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

2. 点对点链路传统标准答案

  • /30
  • 255.255.255.252

3. 主机数公式

2^(主机位数) - 2

4. 子网数公式

2^(借用的子网位数)

5. 片偏移单位

虽然这组不是分片题,但也顺手再压一下:
片偏移的单位是 8B,不是 1B。


文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇