第一次配网络,我只知道「IP 用来找主机,MAC 用来在链路上传数据」,却从没想过:当一个包要从 A 发到同网段的 B,机器怎么知道 B 的 MAC 地址?
答案是 ARP。而「新电脑插上网线怎么拿到 IP」靠 DHCP,「Ping 为什么能测通不通」靠 ICMP。这三个协议都依附在网络层、却又不直接传用户数据,是 408 最爱考的「辅助协议」。这篇一次讲透。
〇、先花两分钟:三个协议各管一桩事
-
ARP(地址解析协议):「我知道你 IP,但你网卡 MAC 是多少?」------把 IP 翻译成 MAC,让数据能在链路层发出去。
-
DHCP(动态主机配置协议):「我刚联网,还没 IP,给我分配一个吧」------自动下发 IP、掩码、网关、DNS。
-
ICMP(网际控制报文协议):「报告!这个包超时/不可达/丢了」或「回个话证明你活着」------负责网络层的差错和诊断,Ping 就靠它。
一句话:ARP 找 MAC,DHCP 发 IP,ICMP 报状态。
图示:主机 A 广播 ARP 请求「谁是 192.168.1.2?」,同网段所有主机收到,只有 B 单播回应自己的 MAC;A 据此填写 ARP 表
一、ARP:IP → MAC 的翻译官
ARP 解决「同网段内,已知 IP 求 MAC」:
-
A 要发数据给同网段 B(IP 已知),但不知 B 的 MAC;
-
A 在本网段广播一个 ARP 请求:「谁的 IP 是 192.168.1.2?请告诉你的 MAC」;
-
同网段所有主机都收到广播,但只有 B 认领 ,于是 B 向 A 单播回应:「我是 192.168.1.2,MAC 是 xx:xx:xx」;
-
A 把 (IP, MAC) 写进ARP 高速缓存表(有 TTL,过期重查);
-
之后 A 直接查表发帧,不再广播。
⚠️ 易错 :ARP 请求是广播 ,ARP 应答是单播。还有「免费 ARP」(主机主动广播自己的 IP-MAC 映射,用来检测 IP 冲突),它不算请求也不算应答。
二、DHCP:自动拿 IP 的四步舞
主机刚联网时还没有 IP(用 0.0.0.0 占位),通过 DHCP 从服务器租一个:
| 步骤 | 报文 | 源 IP | 目的 IP | 说明 |
|---|---|---|---|---|
| 1 | Discover | 0.0.0.0 | 255.255.255.255(广播) | 客户端「谁给我 IP」 |
| 2 | Offer | 服务器 IP | 广播/客户端 | 服务器「这个 IP 给你」 |
| 3 | Request | 0.0.0.0 | 广播 | 客户端「我要这个 IP」 |
| 4 | ACK | 服务器 IP | 广播/客户端 | 服务器「确认,租给你」 |
关键点 :在拿到 IP 之前,客户端没有地址,所以源 IP 一律是 0.0.0.0,目的用广播 255.255.255.255------这也是 2025(36) 的考点。
⚠️ 易错 :DHCP 请求/确认阶段,源 IP 是 0.0.0.0 不是 192.168.x.x;目的多半是广播。客户端的「已分配 IP」要等 ACK 之后才正式生效。
三、ICMP:网络层的「状态播报员」
ICMP 报文封装在 IP 数据报里(IP 协议号 1),分两大类:
1. 差错报告报文(报告问题):
-
终点不可达(网络/主机/端口不可达)
-
源点抑制(拥塞时通知源主机降速,现已基本弃用)
-
时间超过(TTL=0 时丢弃并报告------Traceroute 就靠这个)
-
参数问题、重定向
2. 询问报文(主动探测):
-
回送请求 / 回送应答(Ping 用的就是它)
-
时间戳请求 / 应答
⚠️ 易错 :ICMP 是封装在 IP 里 的,所以「直接为 ICMP 提供服务的协议是 IP」(2012(33))。另外 Ping 用的是 ICMP 的回送报文,不是 TCP/UDP。
四、真题拆解 1:ARP 的功能(2012(38),答案 A)
ARP 协议的功能是?
直接选:根据 IP 地址查询 MAC 地址(A)。反方向「MAC 查 IP」叫 RARP(已淘汰),别混淆。
五、真题拆解 2:路由器拥塞丢包发什么 ICMP(2010(36),答案 C)
路由器 R 因拥塞丢弃 IP 分组,可向源主机发送的 ICMP 报文类型是?
选 源点抑制(C)。虽然该类型实际已弃用,但考题仍按传统分类出。注意它和「终点不可达」「超时」的区别:拥塞→源点抑制;找不到主机/端口→不可达;TTL 到 0→时间超过。
六、真题拆解 3:DHCP REQUEST 的地址(2025(36),答案 C)
新主机通过 DHCP 请求 IP,封装 DHCP REQUEST 报文的 IP 数据报,目的 IP 和源 IP 分别是?
此时客户端仍未获得 IP ,故源 IP = 0.0.0.0;请求仍用广播,目的 IP = 255.255.255.255。
答案:C(255.255.255.255, 0.0.0.0)。
七、真题拆解 4:ARP 表不会出现的项(2024(35),答案 D)
支持 VLAN 划分的交换机,部分主机 IP/MAC 如图所示,ARP 表结构为 <IP, MAC, TTL>。不会出现在 H4 的 ARP 表中的是?
H4 只会在同网段、实际通信过 的主机里学到 ARP 表项。选项 D 的地址 192.168.3.129 既不在 H4 同子网、又跨了 VLAN/网段(跨网段通信走网关,不直接 ARP),所以不会出现在 H4 的 ARP 表。
答案:D。
八、17 年真题考在哪
| 年份(题号) | 考法 | 答案 |
|---|---|---|
| 2010(36) | 拥塞丢包对应的 ICMP 类型 | C(源点抑制) |
| 2012(33) | 直接为 ICMP 服务的协议 | B(IP) |
| 2012(38) | ARP 的功能 | A(IP 查 MAC) |
| 2024(35) | VLAN 下 ARP 表不出现的项 | D |
| 2025(36) | DHCP REQUEST 的源/目的 IP | C(广播、0.0.0.0) |
命题规律:①ARP 的「广播请求/单播应答」几乎年年考变体;②DHCP 的 0.0.0.0 与广播地址是近年的新热点;③ICMP 报文类型匹配是经典题;④Ping/Traceroute 对应哪种 ICMP 报文要记牢。
九、易错点清单
| 易错点 | 正确说法 |
|---|---|
| ARP 请求和应答都是广播 | 错,请求广播、应答单播 |
| RARP 是 IP 查 MAC | 错,ARP 是 IP→MAC;RARP 反过来(已淘汰) |
| ICMP 直接跑在数据链路层 | 错,ICMP 封装在 IP 里,IP 协议号 1 |
| Ping 用的是 TCP | 错,Ping 用 ICMP 回送请求/应答 |
| DHCP 请求时源 IP 已分配 | 错,拿 IP 前源 = 0.0.0.0,目的 = 255.255.255.255 |
| 源点抑制还在广泛使用 | 错,已弃用,但考题仍按传统分类 |
| Traceroute 靠 ICMP 不可达 | 错,靠时间超过(TTL 逐跳递增触发) |
速查表(文末收藏版)
ARP :IP → MAC。请求=广播,应答=单播,结果存 ARP 表(有 TTL)
DHCP:四步 Discover/Offer/Request/ACK
未获 IP 前 源=0.0.0.0,目的=255.255.255.255(广播)
ICMP:封装在 IP 里(协议号 1)
差错:不可达 / 源点抑制(弃用) / 时间超过 / 参数问题 / 重定向
询问:回送请求·应答(Ping) / 时间戳
Traceroute 靠 时间超过(TTL=0) 逐跳探测
真题:2010(36) 2012(33) 2012(38) 2024(35) 2025(36)
本文依据 :谢希仁《计算机网络(第 8 版)》第 4 章 4.2.3(ARP)、4.4.2(ICMP)、第 6 章 DHCP 相关;真题年份题号来自 zhenti_all.json(2009--2025 计网 no 33--40)。
图示:主机 A 广播 ARP 请求「谁是 192.168.1.2?」,同网段所有主机收到,只有 B 单播回应自己的 MAC;A 据此填写 ARP 表