找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4639

积分

0

好友

610

主题
发表于 4 小时前 | 查看: 3| 回复: 0

理解 IP 地址的构成是掌握网络知识的第一步。IPv4 地址本质上是一个 32 位 的二进制数。我们常见的 172.21.11.100 这种写法被称为 点分十进制,其原理就是将 32 位二进制数,每 8 位分成一段,再分别转换成十进制数来表示。

例如,172.21.11.100 的二进制表示如下:
IPv4地址二进制与十进制对应关系图

由于每段十进制数对应 8 位二进制,其能表示的最大值就是 8 位全为 1 的二进制数,即 255。因此,任何包含大于 255 数字的 IPv4 地址都是错误的,例如:

  • 172.**256**.78.11
  • 10.21.**300**.25
  • 192.168.25.**400**

分类寻址

在互联网早期,IP地址的分配采用“分类寻址”方案,将地址划分为 A、B、C、D、E 五类。这种设计在很大程度上影响了早期的网络架构与路由方式。

每一类地址都固定了网络号和主机号的位数。其中,网络号用于标识主机所在的网络(同一网络的设备具有相同的网络号),而主机号则用于标识该网络下的某台具体设备。不同网络之间的通信必须依赖路由器才能完成。

子网

分类寻址存在明显缺陷:它无法根据机构的实际规模灵活分配地址空间,同时也导致了全球路由表过于庞大。为了解决这些问题,“子网”概念被引入。

子网划分,实质上是将“主机号”部分进一步切分为“子网号”和“新的主机号”两部分。这样一来,一个大型网络(如一个B类网络)就可以被划分为多个更小、更易管理的逻辑子网。
B类地址子网划分示意图

子网掩码

既然子网划分是由各个站点(如公司、校园网)内部自行决定的,没有统一标准,那么外界如何判断一个IP地址属于哪个子网呢?答案就是子网掩码

子网掩码也是一个 32 位的二进制数,常用点分十进制表示。将 IP 地址与子网掩码进行按位与运算,得到的结果就是该 IP 地址所在的网络地址(或子网地址)。

我们来看一个具体例子:IP 地址 128.32.11.100,子网掩码 255.255.255.0
子网掩码按位与运算求网络地址

通过计算可知,主机 128.32.11.100/255.255.255.0 属于子网 128.32.11.0,其中子网号和主机号各占用了 8 位。

在实际网络中,一个站点内部的不同部门可能需要规模不同的子网。因此,允许在同一网络内使用不同长度的子网掩码,这种技术称为可变长度子网掩码(VLSM)

无类别域间路由 (CIDR)

子网和 VLSM 缓解了分类寻址的部分问题,但随着互联网爆炸式增长,A、B、C 类地址块的分配依然僵化,全球核心路由表条目数持续激增,给路由设备带来巨大压力。最终,无类别域间路由(CIDR) 彻底取代了分类寻址。

CIDR 的核心思想是:废除固定的 A、B、C 类划分,直接通过“网络地址 + 掩码”的形式来标识任何一个网络块。它将子网掩码的概念从站点内部扩展到了整个互联网骨干网,要求所有核心路由器都必须支持基于掩码的路由决策。

通俗地说,CIDR 让地址分配和路由变得更灵活。以前,一个 B 类地址 128.32.0.0 在骨干网上只有一条路由;而在 CIDR 下,它可以被细分为像 128.32.100.0/24128.32.88.128/25 这样更小的网段,每个网段都可能拥有一条独立的骨干网路由。

前缀表示法

在 CIDR 的语境下,除了使用点分十进制的掩码,更常见的是使用前缀长度来表示网络号占用的位数。前缀是一个小于等于 32 的整数。

例如,之前的主机 128.32.11.100/255.255.255.0 可以用前缀法表示为 128.32.11.100/24,它属于网络 128.32.11.0/24
使用24位前缀计算网络地址

前缀(n)与掩码的关系非常直接:前缀长度 n,就意味着掩码的前 n 位是 1,其余位是 0。
前缀与掩码的对应关系示意

因此,我们可以快速进行转换:

  • 前缀 /24 → 掩码 255.255.255.0
  • 前缀 /25 → 掩码 255.255.255.128
  • 前缀 /16 → 掩码 255.255.0.0
  • 前缀 /17 → 掩码 255.255.128.0

由于传统的 A、B、C 类网络的网络号位数恰好是 8、16、24,所以习惯上人们也把 CIDR 中前缀为 /8/16/24 的网段分别俗称为 A、B、C 类网段。

网段计算实战

一个 CIDR 网段通常有以下两种等价表示形式:

  • 网络地址/掩码:如 10.200.182.0/255.255.255.0172.17.249.64/255.255.255.192
  • 网络地址/前缀:如 10.200.182.0/24172.17.249.64/26

前缀表示法更为简洁直观,因此被广泛使用。请注意,主机IP/掩码主机IP/前缀(如 10.200.182.10/24)并不是一个“网段”的正确表示法,它只是指明了该主机所在的网络。

那么,给定一个网段,如何计算出它包含的 IP 地址范围呢?我们以 172.17.249.64/26 为例进行推导。

首先,将网络地址 172.17.249.64 转换为二进制:
IP地址172.17.249.64的二进制表示

前缀是 /26,意味着前 26 位是网络号,后 32-26=6 位是主机号。
从172.17.249.64/26中分离出6位主机号

由此可知,该网段总共有 2^6 = 64 个 IP 地址。其中:

  • 网络地址:主机号全为 0 的地址,即 172.17.249.64
  • 广播地址:主机号全为 1 的地址,即 172.17.249.127
  • 可用主机地址范围172.17.249.65172.17.249.126

整理后,网段 172.17.249.64/26 的完整信息如下:

网段:       172.17.249.64/26
IP个数:     64
网络号:     172.17.249.64
掩码:       255.255.255.192
广播地址:   172.17.249.127
主机范围:   172.17.249.65-172.17.249.126

对于 /8/16/24 这类“边界整齐”的网段,相关信息通常一眼就能看出。但对于像 /26/19/28 这样的网段,掌握上述二进制计算方法是网络工程师和运维人员的必备技能。希望这篇文章能帮助你理清 IPv4 网段的核心脉络,更多网络相关知识,欢迎在 云栈社区 交流探讨。




上一篇:Docker容器逃逸攻防实战:特权模式、挂载等常见逃逸手法分析与复现
下一篇:Go应用性能问题如何定位?pprof、Trace、Delve等核心诊断工具指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-8 10:35 , Processed in 0.779189 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表