🌐 深入理解 IPv4:基础协议架构
**IPv4(Internet Protocol version 4,互联网协议第四版)**是互联网运作的核心基础协议之一,定义于 1981 年的 RFC 791 标准中。它工作在 OSI 模型的第三层(网络层),主要负责为网络中的设备分配逻辑地址,并将数据包从源节点路由到目的节点。
尽管互联网正在向下一代协议演进,但 IPv4 依然是当今局域网(LAN)和广域网(WAN)中最普遍、最重要的通信基石。本指南将全面拆解 IPv4 的底层逻辑与配置规范。
1. IPv4 地址的物理结构
Section titled “1. IPv4 地址的物理结构”在计算机的底层世界里,IPv4 地址并非我们常见的十进制数字,而是一串 32 位(bit) 的二进制代码。
1.1 容量上限
Section titled “1.1 容量上限”因为地址长度固定为 32 位,所以 IPv4 所能提供的理论地址总数为 $2^32$ 个,即 4,294,967,296 个。这近 43 亿个地址就是整个 IPv4 互联网的全部“门牌号”库存。
1.2 点分十进制表示法(Dotted-Decimal Notation)
Section titled “1.2 点分十进制表示法(Dotted-Decimal Notation)”为了让人类能够方便地阅读和记忆这 32 位的二进制数字,工程师们引入了“点分十进制”格式:
- 将 32 位二进制数平均分为 4 组,每组 8 位(称为一个八位元 / Octet)。
- 将每个八位元转换为十进制数字(范围必定在 0 到 255 之间)。
- 使用英文句号(
.)将它们连接起来。
通用换算示例:
假设一台电脑的底层 IPv4 地址为:
11000000 10101000 00000001 00001010
按照每 8 位转换十进制后:
11000000= 19210101000= 16800000001= 100001010= 10
最终呈现给用户的 IPv4 地址就是:192.168.1.10。
2. 逻辑拆分:网络位与主机位
Section titled “2. 逻辑拆分:网络位与主机位”一个 IPv4 地址不能孤立地看作一个整体,它在逻辑上被划分为两部分。这就像我们的邮政地址必须包含“街道名”和“门牌号”一样。
- 网络部分(Network ID):标识该设备所在的子网或“街道”。如果两台设备的网络 ID 相同,说明它们在同一个局域网内,可以直接通信(通过交换机)。
- 主机部分(Host ID):标识该子网内的具体设备或“门牌号”。网络 ID 相同的设备,其主机 ID 必须唯一,否则会导致 IP 冲突。
2.1 子网掩码(Subnet Mask)
Section titled “2.1 子网掩码(Subnet Mask)”计算机如何知道这 32 位地址中,哪几位是网络 ID,哪几位是主机 ID 呢?这完全依赖于子网掩码。
子网掩码也是一个 32 位的数字。它的规则是:掩码中为 1 的位对应 IP 地址中的网络位,掩码中为 0 的位对应主机位。
通用案例:
假设你的电脑 IP 是 192.168.1.10,子网掩码是 255.255.255.0。
将掩码化为二进制:11111111.11111111.11111111.00000000
这表示前 24 位是网络 ID,后 8 位是主机 ID。
- 网络地址:
192.168.1.0(代表这个网段本身) - 设备地址:在这个网段中,这台电脑的编号是
10。
2.2 CIDR 表示法
Section titled “2.2 CIDR 表示法”在现代网络配置中,为了书写简便,通常不写长串的子网掩码,而是用 CIDR(无类别域间路由) 格式,即在 IP 地址后加一个斜杠 /,然后写上子网掩码中连续 1 的个数。
例如,192.168.1.10 掩码为 255.255.255.0,可以简写为:192.168.1.10/24。
3. IPv4 的地址分类与特殊保留网段
Section titled “3. IPv4 的地址分类与特殊保留网段”IPv4 并非所有的地址都可以随意在互联网上分配和使用。IANA(互联网号码分配局)对地址空间进行了严格的规划。
3.1 早期分类网络(Classful Network)
Section titled “3.1 早期分类网络(Classful Network)”在早期设计中,IP 地址被硬性分为五类(目前已被 CIDR 灵活划分取代,但概念依然常考):
- A 类(/8):0.0.0.0 到 127.255.255.255。用于超大型网络,支持上千万台主机。
- B 类(/16):128.0.0.0 到 191.255.255.255。用于中型网络,支持 65534 台主机。
- C 类(/24):192.0.0.0 到 223.255.255.255。用于小型网络,支持 254 台主机。
- D 类:224.0.0.0 起,专用于组播(Multicast)。
- E 类:240.0.0.0 起,保留用于研究和测试。
3.2 私有地址(Private IP - RFC 1918)
Section titled “3.2 私有地址(Private IP - RFC 1918)”由于全球只有约 43 亿个公网 IP,为了避免地址枯竭,RFC 1918 规定了三块私有 IP 网段。 这些地址无法在互联网上路由,专供企业内部或家庭局域网免费、重复使用:
- 10 局域网:
10.0.0.0-10.255.255.255(即10.0.0.0/8) - 172 局域网:
172.16.0.0-172.31.255.255(即172.16.0.0/12) - 192 局域网:
192.168.0.0-192.168.255.255(即192.168.0.0/16)
场景说明:无论你在北京的咖啡馆还是在纽约的图书馆,连上 Wi-Fi 后获取的 IP 可能都是
192.168.1.x。它们在各自的内网互不干扰。当这些设备需要访问互联网时,必须通过路由器上的 NAT(网络地址转换) 技术,将私有 IP 伪装成路由器的公网 IP 发送出去。
3.3 其他特殊保留地址
Section titled “3.3 其他特殊保留地址”除了私有 IP,还有几个极其特殊的网段在排错时必须了解:
127.0.0.0/8(环回地址 / Loopback):主要指127.0.0.1,代表“本机”。无论有没有网卡或网线,只要ping 127.0.0.1能通,说明操作系统的 TCP/IP 协议栈工作正常。169.254.0.0/16(APIPA):链路本地地址。当一台电脑设置为自动获取 IP,但网络中的 DHCP 服务器宕机或不存在时,操作系统会无奈地给自己随机分配一个169.254.x.x的地址。看到这个网段,通常意味着 DHCP 分配失败。0.0.0.0:在路由表中代表“默认路由”(发往未知目的地的流量都走这条路);在服务监听中代表“监听本机所有网卡”。255.255.255.255:全局广播地址。发往此地址的数据包会被局域网内的所有设备接收。
4. IPv4 数据包基础(Packet Header)
Section titled “4. IPv4 数据包基础(Packet Header)”IPv4 不仅仅是“一个地址”,它还定义了数据在网络中传输时的包裹格式。每个 IPv4 数据包都包含一个报头(Header),通常为 20 个字节,包含以下关键字段:
- 源 IP 与 目的 IP:标注是谁发出的,要发给谁。
- TTL(Time to Live,生存时间):这是一个极其巧妙的设计。数据包每经过一个路由器(一跳),TTL 值就减 1。当 TTL 减到 0 时,路由器会直接丢弃该包,并返回一个错误信息。这有效防止了路由配置错误导致数据包在网络中无限循环(路由环路)。
- 协议号(Protocol):告诉目标计算机,这个包里装的是 TCP(协议号 6)、UDP(协议号 17)还是 ICMP(协议号 1,如 Ping 命令)。
📚 延伸参考与 RFC 标准
Section titled “📚 延伸参考与 RFC 标准”- RFC 791: Internet Protocol (1981 标准制定)
- RFC 1918: Address Allocation for Private Internets (私有地址规范)
- RFC 4632: Classless Inter-domain Routing (CIDR 规范)
- Wikipedia: IPv4