ARP 与 ICMP
在网络层中,除了核心的 IP 协议外,还有两个至关重要的辅助协议:ARP(地址解析协议)和 ICMP(互联网控制消息协议)。
ARP (Address Resolution Protocol)
什么是 ARP?
IP 地址用于在逻辑上标识网络中的设备,但在局域网(以太网)中,实际的数据传输需要依靠 MAC 地址(物理地址)。ARP 的作用就是:将 IP 地址解析为对应的 MAC 地址。
工作流程
- 请求 (ARP Request): 当主机 A 想要发送数据给同局域网的主机 B,但只知道 B 的 IP 地址时,它会发送一个以太网广播包,询问:“谁拥有这个 IP 地址?请告诉我你的 MAC 地址。”
- 响应 (ARP Reply): 主机 B 收到广播后,发现 IP 匹配,会向主机 A 发送单播包,告知自己的 MAC 地址。
- 缓存 (ARP Cache): 主机 A 收到响应后,会将 IP 和 MAC 的映射关系存入自己的 ARP 缓存表中,以便下次直接使用。
代理 ARP 与 动态 ARP 检测 (DAI)
- 代理 ARP: 允许路由器为不在同一网段的主机代答 ARP 请求。
- ARP 攻击 (ARP Spoofing): 攻击者伪造 ARP 响应,告诉受害者自己就是网关,从而截获流量。
ICMP (Internet Control Message Protocol)
什么是 ICMP?
ICMP 用于在 IP 主机、路由器之间传递控制消息,用于报告错误或检测网络状况。
常见的 ICMP 消息类型
| 类型 (Type) | 描述 | 应用场景 |
|---|---|---|
| 8 / 0 | 回显请求/响应 (Echo Request/Reply) | ping 命令 |
| 3 | 终点不可达 (Destination Unreachable) | 路径断开或端口关闭 |
| 11 | 超时 (Time Exceeded) | TTL 减至 0,常用于 tracert |
| 5 | 重定向 (Redirect) | 告知更好的路由路径 |
核心应用
1. Ping
通过发送 Echo Request 并等待 Echo Reply 来测试主机的可达性、延迟和丢包率。
2. Traceroute (Windows 下为 tracert)
通过故意设置从 1 开始逐渐增加的 IP 数据包 TTL (Time To Live) 值,强制沿途的每个路由器在丢弃包时返回 Time Exceeded 消息,从而探测数据包经过的完整路径。
ICMP 安全
由于 ICMP 消息可以被滥用于拒绝服务攻击 (DoS),许多现代防火墙会限制或禁用 ICMP。