1.3 IPv4 编址与通信原理
📚 核心学习框架:“四位一体”
本章节提倡 “理论 → 实验 → 抓包 → 场景” 的闭环学习法。 不要死记硬背,要通过 Ping 的过程来串联 IP、ARP、MAC 和 路由 的关系。
1. 底层基础:进制与模型
在深入 IP 地址之前,我们需要掌握计算机的“语言”和通信的“规则”。
1.1 进制扫盲 (The Language of Machines)
- 二进制 (Binary):机器语言,只有
0和1。- 单位:
bit(位)。8 bit = 1 Byte(字节)。 - 带宽换算:网络带宽单位是
bps(bits per second)。注意换算率为 1000 (1 Gbps = 1000 Mbps),而非 1024。
- 单位:
- 十六进制 (Hex):二进制的“缩写”,用于 MAC 地址和 IPv6。
- 规则:
0-9和A-F。1位十六进制 = 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 时,网络内部发生了什么?这是串联所有知识的绝佳案例。
阶段一:查路由与封装 (网络层)
- 查路由:PC1 检查目的 IP
172.16.12.2。发现掩码是/24,计算出在同一网段。 - 准备发包:构建 ICMP Echo Request。
- 源 IP:
172.16.12.1 - 目的 IP:
172.16.12.2
- 源 IP:
- 封装受阻:要发数据帧,必须知道对方的 MAC 地址。此时 PC1 查本地 ARP 表,如果没找到,通信暂停。
阶段二:ARP 寻址 (关键步骤)
- 发送 ARP 请求 (广播):
- PC1 大喊:“谁是
172.16.12.2?请告诉172.16.12.1!” - 报文特征:目的 MAC 为
FF:FF:FF:FF:FF:FF(广播)。
- PC1 大喊:“谁是
- ARP 应答 (单播):
- PC2 收到广播,发现是找自己的。
- PC2 回复:“我是
172.16.12.2,我的 MAC 是BB-BB。”
- 记录:PC1 收到后,将映射关系写入 ARP 缓存表。
阶段三:正式通信 (链路层)
- 发送 ICMP:PC1 补全数据帧的目的 MAC,将 Ping 包发出。
- 回显:PC2 收到包,原路回复 ICMP Echo Reply。
- 结果:屏幕显示
Reply from 172.16.12.2: bytes=32 time<1ms...
💡 学习建议
- 死磕子网划分:找 10 个不同的 IP/掩码组合,反复用“三步法”练习。
- 模拟器实践:在 eNSP/EVE 中配置两台路由器,Ping 通后使用
display arp查看 ARP 表,验证上述流程。