3. IP 地址基础:从点分十进制到特殊地址
IP 地址这东西,说白了就是网络世界里每台设备的门牌号。没有它,数据包就不知道该往哪儿送。今天咱们就把它彻底聊透。
3.1 IP 地址的表示方法:点分十进制
一个 IPv4 地址是 32 位的二进制数。你想想看,要是让你记一串 11000000101010000000000100000001,是不是头都大了?
所以就有了点分十进制。每 8 位一组,转成十进制,中间用点隔开。上面那串就变成了 192.168.1.1。
我个人习惯在配置设备时,脑子里快速过一遍二进制。比如 255.255.255.0,其实就是 24 个 1 加 8 个 0。这个习惯帮我避免过不少子网划分的坑。
核心公式:
32 位二进制 → 4 组 8 位二进制 → 4 组十进制 → 点分十进制
例:11000000.10101000.00000001.00000001 → 192.168.1.1
小技巧:配置设备时,我习惯把 IP 地址的每一段都看成 0-255 的范围。一旦看到 256 或负数,不用想,肯定写错了。
3.2 IP 地址的分类:A/B/C/D/E 类
早期的互联网设计者把 IP 地址分成了五类。虽然现在 CIDR(无类域间路由)已经取代了这种分类,但理解它仍然是网络工程师的基本功。
分类的依据是看第一个字节的前几位:
| 类别 | 前几位 | 第一个字节范围 | 默认子网掩码 | 用途 |
|---|---|---|---|---|
| A 类 | 0 | 1 - 126 | 255.0.0.0 | 大型网络 |
| B 类 | 10 | 128 - 191 | 255.255.0.0 | 中型网络 |
| C 类 | 110 | 192 - 223 | 255.255.255.0 | 小型网络 |
| D 类 | 1110 | 224 - 239 | 无 | 组播 |
| E 类 | 1111 | 240 - 255 | 无 | 实验保留 |
这里有个细节:A 类地址的 127 去哪儿了?别急,后面讲回环地址时会说到。
我在项目中遇到过有人把 192.168.1.1 当成 A 类地址来配子网掩码,结果整个网络都不通。嗯,这里要注意:192 开头是 C 类,默认掩码是 255.255.255.0,不是 255.0.0.0。
避坑指南:我曾经在排查一个跨网段通信故障时,发现对方把 B 类地址 172.16.0.1 配成了 C 类掩码。结果能 ping 通网关,但访问不了远端服务器。记住:地址类别决定了默认掩码,但实际使用中 CIDR 更灵活。
3.3 特殊 IP 地址:网络地址、广播地址、回环地址
不是所有 IP 地址都能分配给设备。有三类地址很特殊,你得记牢。
3.3.1 网络地址
网络地址是主机位全为 0 的地址。它代表整个网络本身,不能分配给任何设备。
举个例子:192.168.1.0/24,这个 .0 就是网络地址。你想想看,如果把它配给电脑,那数据包到底该发给谁?
判断方法:把 IP 地址和子网掩码做按位与运算,结果就是网络地址。
例:IP 192.168.1.10 & 掩码 255.255.255.0 = 192.168.1.0
3.3.2 广播地址
广播地址是主机位全为 1 的地址。发往这个地址的数据包,会被该网络内的所有设备接收。
还是用 192.168.1.0/24 举例,它的广播地址就是 192.168.1.255。
我记得有一次,公司内部网络突然变慢。排查后发现有人把广播地址配成了静态 IP,导致大量广播包被错误处理。嗯,这种低级错误其实挺常见的。
实用技巧:在配置 DHCP 时,广播地址 255.255.255.255 用于客户端发现服务器。这个地址是有限广播,只在本地网络有效。
3.3.3 回环地址
回环地址 127.0.0.1 用于本地测试。发往这个地址的数据包不会离开本机,直接由协议栈内部处理。
我习惯在配置完网络服务后,先用 ping 127.0.0.1 测试本机协议栈是否正常。如果连自己都 ping 不通,那肯定是 TCP/IP 协议栈出问题了。
注意:整个 127.0.0.0/8 网段都是回环地址,但通常只用 127.0.0.1。
重要提醒:我曾经见过有人把 127.0.0.1 配成网关,结果所有流量都发不出去了。记住:回环地址只能用于本地测试,不能用于实际通信。
3.4 知识体系总览
下面这张图把 IP 地址基础的核心知识点串起来了。你可以把它当成一张速查表。
3.5 实战中的常见误区
聊了这么多理论,最后分享几个我踩过的坑:
- 误区一:以为
0.0.0.0是有效地址。其实它代表"所有网络"或"未知地址",不能配给设备。 - 误区二:把
127.0.0.0整个网段当普通地址用。记住,整个127.0.0.0/8都是回环。 - 误区三:在配置静态路由时,把网络地址当成下一跳。网络地址不能作为下一跳使用。
我的习惯:每次配置完 IP 地址,我都会用 ping 和 tracert 验证一遍。先 ping 回环,再 ping 网关,最后 ping 远端。三步走,基本不会出大问题。
好了,IP 地址基础就聊到这儿。这些概念虽然基础,但它们是整个 IP 协议的基石。你想想看,如果连门牌号都搞不清楚,数据包怎么可能找到路?