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 地址基础的核心知识点串起来了。你可以把它当成一张速查表。

IP 地址基础核心知识体系 IPv4 地址 (32位) 点分十进制 五类地址 (A/B/C/D/E) 特殊 IP 地址 8位一组 · 十进制 · 点分隔 A类(1-126) B类(128-191) C类(192-223) D类(224-239) E类(240-255) 网络地址 · 广播地址 · 回环地址 网络地址:主机位全0 广播地址:主机位全1 回环地址:127.0.0.1 核心要点 • 点分十进制是 32 位二进制的人性化表达 • A/B/C 类用于单播,D 类组播,E 类保留 • 网络地址和广播地址不能分配给设备 • 回环地址 127.0.0.1 用于本地协议栈测试

3.5 实战中的常见误区

聊了这么多理论,最后分享几个我踩过的坑:

  • 误区一:以为 0.0.0.0 是有效地址。其实它代表"所有网络"或"未知地址",不能配给设备。
  • 误区二:把 127.0.0.0 整个网段当普通地址用。记住,整个 127.0.0.0/8 都是回环。
  • 误区三:在配置静态路由时,把网络地址当成下一跳。网络地址不能作为下一跳使用。

我的习惯:每次配置完 IP 地址,我都会用 ping 和 tracert 验证一遍。先 ping 回环,再 ping 网关,最后 ping 远端。三步走,基本不会出大问题。

好了,IP 地址基础就聊到这儿。这些概念虽然基础,但它们是整个 IP 协议的基石。你想想看,如果连门牌号都搞不清楚,数据包怎么可能找到路?