2. IPv4地址结构:从二进制到点分十进制
聊IP地址,咱们得从最底层说起。IPv4地址说白了就是32个比特位,也就是32个0和1。你想想看,32位能组合出多少种可能?2的32次方,约43亿个地址。当年设计者觉得这个数字够用了,结果呢?现在IPv4地址早就分光了。
我个人习惯把IPv4地址比作一栋大楼的门牌号。你得先知道楼在哪,再知道房间号。网络位就是楼号,主机位就是房间号。这个比喻虽然简单,但很实用。
2.1 32位二进制表示
先看一个最原始的样子:
11000000 10101000 00000001 00000001
这就是一个完整的IPv4地址。32位,分成4组,每组8位。8位二进制能表示的范围是0到255。为什么是255?因为2的8次方减1嘛。
我在项目中遇到过不少新手,一看到二进制就头疼。其实你不用怕,我们平时几乎不会直接写二进制地址。但理解二进制结构很重要,因为子网掩码、网络号计算这些核心操作,底层都是二进制运算。
核心要点:IPv4地址的32位二进制结构是所有子网划分的基础。不理解二进制,后面学VLSM(可变长子网掩码)会非常吃力。
2.2 点分十进制表示法
32个0和1写出来太长了,没人愿意看。所以就有了点分十进制。把32位分成4段,每段8位,转成十进制,中间用点隔开。
上面那个二进制地址,转成点分十进制就是:
192.168.1.1
转换方法很简单:每8位二进制转十进制。比如11000000 = 1×2⁷ + 1×2⁶ = 128 + 64 = 192。
嗯,这里要注意:点分十进制里每个数字的范围必须是0-255。如果你看到类似192.168.256.1这样的地址,那肯定是错的。256已经超出8位二进制能表示的范围了。
| 二进制(8位) | 十进制 | 说明 |
|---|---|---|
| 00000000 | 0 | 最小值 |
| 11111111 | 255 | 最大值 |
| 11000000 | 192 | 常见于C类地址 |
| 10101000 | 168 | 私有地址段常用 |
小技巧:我建议你记住几个常用二进制转换:128、192、224、240、248、252、254、255。这些是子网掩码的常用值,后面划分子网时天天要用。
2.3 网络位与主机位的概念
这是IPv4地址结构里最重要的概念,没有之一。
每个IPv4地址都包含两部分:
- 网络位(Network bits):标识这个地址属于哪个网络
- 主机位(Host bits):标识这个网络里的哪台设备
举个例子,192.168.1.0/24这个网络:
- 前24位(192.168.1)是网络位
- 后8位(最后一个数字)是主机位
- 主机位全0(192.168.1.0)代表网络本身
- 主机位全1(192.168.1.255)代表广播地址
- 可用的主机地址范围:192.168.1.1 到 192.168.1.254
我曾经帮一个创业公司排查网络故障,发现他们给服务器配了192.168.1.0这个地址。结果呢?所有发往这个"网络"的包都乱套了。因为.0是网络地址,不能分配给设备用。这就是不懂网络位和主机位的后果。
避坑指南:我曾经见过有人把主机位全0或全1的地址配给设备,结果网络直接瘫痪。记住:主机位全0是网络地址,全1是广播地址,这两个都不能分配给设备。
2.4 网络位与主机位的划分依据
网络位和主机位的分界线在哪?由子网掩码决定。
子网掩码也是一个32位的二进制数,网络位部分全为1,主机位部分全为0。比如:
IP地址: 192.168.1.1 → 11000000.10101000.00000001.00000001
子网掩码: 255.255.255.0 → 11111111.11111111.11111111.00000000
网络位: 前24位(掩码为1的部分)
主机位: 后8位(掩码为0的部分)
说白了,子网掩码就是一把尺子,量出IP地址里哪部分是网络位,哪部分是主机位。
你想想看,如果没有子网掩码,光给一个10.0.0.1,你根本不知道它是A类、B类还是C类地址。但配上掩码255.0.0.0,就知道前8位是网络位,这是个A类地址。
2.5 地址分类与默认掩码
早期的IP地址设计采用了分类机制,分为A、B、C、D、E五类。其中A、B、C是常用的单播地址:
| 类别 | 首字节范围 | 默认子网掩码 | 网络位长度 | 主机位长度 | 每个网络的主机数 |
|---|---|---|---|---|---|
| A类 | 1 - 126 | 255.0.0.0 | 8位 | 24位 | 16,777,214 |
| B类 | 128 - 191 | 255.255.0.0 | 16位 | 16位 | 65,534 |
| C类 | 192 - 223 | 255.255.255.0 | 24位 | 8位 | 254 |
注意看,A类地址第一个字节范围是1-126,为什么没有0和127?0.0.0.0是保留地址,表示"本网络";127.0.0.0/8是回环地址,用于本地测试。这些细节我在项目里踩过坑,后面会细说。
关键记忆:看IP地址的第一个十进制数,就能判断它属于哪一类:
- 1-126 → A类
- 128-191 → B类
- 192-223 → C类
127开头的地址是回环地址,不属于任何一类。
2.6 知识体系总览
下面这张图把IPv4地址结构的核心逻辑串起来了,我建议你多看几遍:
这张图把整个知识体系串起来了。从最底层的32位二进制,到点分十进制表示,再到网络位和主机位的划分,最后落到子网划分的实际应用。每一步都环环相扣。
我个人建议你把这个图记在脑子里。以后看到任何一个IP地址,第一反应就是:它的网络位在哪?主机位在哪?子网掩码是多少?这个习惯养成了,子网划分就成功了一半。
实战建议:刚开始学的时候,拿几个IP地址练手。比如10.10.10.10/8,网络位是10,主机位是10.10.10;172.16.0.1/16,网络位是172.16,主机位是0.1。多练几次,感觉就来了。