Skip to content

1.3 IPv4 编址与通信原理

📚 核心学习框架:“四位一体”

本章节提倡 “理论 → 实验 → 抓包 → 场景” 的闭环学习法。 不要死记硬背,要通过 Ping 的过程来串联 IP、ARP、MAC路由 的关系。

1.‌ 底层基础:进制与模型

在深入 IP 地址之前,我们需要掌握计算机的“语言”和通信的“规则”。

1.‌1 进制扫盲 (The Language of Machines)

  • 二进制 (Binary):机器语言,只有 01
    • 单位bit (位)。8 bit = 1 Byte (字节)。
    • 带宽换算:网络带宽单位是 bps (bits per second)。注意换算率为 1000 (1 Gbps = 1000 Mbps),而非 1024。
  • 十六进制 (Hex):二进制的“缩写”,用于 MAC 地址和 IPv6。
    • 规则0-9A-F1位十六进制 = 4位二进制
🧮 进制转换心法(点击展开)

1. 二进制 → 十进制 (加法) 每位数字乘以 2 的幂(对应位置)然后求和。

  • 示例 11000011
    • (1 \times 2^7 = 128)
    • (1 \times 2^6 = 64)
    • (1 \times 2^1 = 2)
    • (1 \times 2^0 = 1)
    • 结果:(128 + 64 + 2 + 1 = \mathbf{195})

2. 十进制 → 二进制 (减法) 用这个数依次减去最大的 2 的幂 (128, 64, 32...),能减则对应位记 1,否则记 0。

1.‌2 网络模型:数据的“打包运输”

理解 TCP/IP 四层模型 是排错的基础:

层级核心协议功能类比关键动作
应用层HTTP, SSH, FTP发快递产生数据,通过端口号区分应用 (HTTP:80)。
传输层TCP, UDP选物流TCP (可靠, 三次握手, 像打电话); UDP (快, 不可靠, 像发传单)。
网络层IP, ICMP, ARP查地图负责编址寻址。核心是 IP 地址。
链路层Ethernet跑货车封装成,用 MAC 地址在局域网内传输。

2.‌ IPv4 编址详解

2.‌1 IP 地址结构

  • 定义:32位二进制,点分十进制表示 (如 192.168.1.1)。
  • 组成网络位 (社区名) + 主机位 (门牌号)。

2.‌2 地址分类 (Classful & Private)

  • A类 (0-127): 0.0.0.0 ~ 127.255.255.255。默认掩码 /8
    • 0.0.0.0: 未指定地址。
    • 127.0.0.0/8: 本地环回 (Localhost)。
  • B类 (128-191): 128.0.0.0 ~ 191.255.255.255。默认掩码 /16
  • C类 (192-223): 192.0.0.0 ~ 223.255.255.255。默认掩码 /24
  • D类 (224-239): 组播 (Multicast)。
  • E类 (240-255): 保留。

必背:私有地址范围 (RFC 1918)

这些地址在公网上无法路由,专门用于局域网内部 (NAT)。

  • A类私网10.0.0.0/8 (10.0.0.0 ~ 10.255.255.255)
  • B类私网172.16.0.0/12 (172.16.0.0 ~ 172.31.255.255)
  • C类私网192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)

3.‌ 子网划分 (Subnetting) 实战

这是 HCIA 的重难点。我们放弃死记硬背,使用 “三步法” 进行计算。

3.‌1 核心概念

  • CIDR (无类域间路由):使用 /N (如 /24) 表示掩码。
  • VLSM (可变长子网掩码):把大网段切成小网段 (掩码变长,如 /24/27)。
  • 超网/汇总:把小网段合并成大网段 (掩码变短,如 /26/24)。

3.‌2 计算神器:“三步法”

假设题目:计算 192.168.1.133/26 的网络信息。

第一步:确定“跨度” (Block Size)

  • 公式:(跨度 = 2^{(32 - 掩码位数)})
  • 计算:(32 - 26 = 6) 位主机位。
  • 跨度 = (2^6 = \mathbf{64})。
    • 这意味着子网是按 64 跳变的:0, 64, 128, 192...

第二步:找“网络号” (Network ID)

  • 方法:找到比目标 IP (133) 小,且最接近的“跨度倍数”。
  • 比较:0, 64, 128, 192...
  • 结论:128 是最接近 133 的基准数。
  • 网络地址192.168.1.128

第三步:推算其他信息

  • 广播地址:下一个网络号 (192) 减 1 = 192.168.1.191
  • 可用 IP 范围:网络号+1 ~ 广播地址-1 = 192.168.1.129 ~ 192.168.1.190

掩码速查表 (第四字节)

/25 (.128)/26 (.192)/27 (.224)/28 (.240)/29 (.248)/30 (.252)
2个子网4个子网8个子网16个子网32个子网互联专用

这段代码利用 Mermaid 的甘特图特性,形象地展示了 /26 掩码是如何从主机位里“抢”走 2 位作为子网位的。

图解:掩码是如何“切”IP的

我们以 192.168.1.100/26 为例。标准的 C 类地址只有 24 位网络位,但 /26 意味着我们向主机位借了 2 位


4.‌ 终极实战:Ping 通原理 (The Ping Flow)

当你在 PC1 (172.16.12.1) 上输入 ping 172.16.12.2 时,网络内部发生了什么?这是串联所有知识的绝佳案例。

阶段一:查路由与封装 (网络层)

  1. 查路由:PC1 检查目的 IP 172.16.12.2。发现掩码是 /24,计算出在同一网段
  2. 准备发包:构建 ICMP Echo Request
    • 源 IP:172.16.12.1
    • 目的 IP:172.16.12.2
  3. 封装受阻:要发数据帧,必须知道对方的 MAC 地址。此时 PC1 查本地 ARP 表,如果没找到,通信暂停。

阶段二:ARP 寻址 (关键步骤)

  1. 发送 ARP 请求 (广播)
    • PC1 大喊:“谁是 172.16.12.2?请告诉 172.16.12.1!”
    • 报文特征:目的 MAC 为 FF:FF:FF:FF:FF:FF (广播)。
  2. ARP 应答 (单播)
    • PC2 收到广播,发现是找自己的。
    • PC2 回复:“我是 172.16.12.2,我的 MAC 是 BB-BB。”
  3. 记录:PC1 收到后,将映射关系写入 ARP 缓存表

阶段三:正式通信 (链路层)

  1. 发送 ICMP:PC1 补全数据帧的目的 MAC,将 Ping 包发出。
  2. 回显:PC2 收到包,原路回复 ICMP Echo Reply
  3. 结果:屏幕显示 Reply from 172.16.12.2: bytes=32 time<1ms...

💡 学习建议

  • 死磕子网划分:找 10 个不同的 IP/掩码组合,反复用“三步法”练习。
  • 模拟器实践:在 eNSP/EVE 中配置两台路由器,Ping 通后使用 display arp 查看 ARP 表,验证上述流程。