Appearance
题目
若路由器 R 因为拥塞丢弃 IP 分组,则此时 R 可向发出该 IP 分组的源主机发送的 ICMP 报文类型是( )。
错因
A
"路由重定向"(ICMP 类型 5)—— 路由器告诉源主机"你应该走另一条路径",用于告诉源主机更优下一跳。与拥塞无关,是路径优化提示。错的根源:把"路由器主动发 ICMP"误等同为"路由重定向",但拥塞和路由优化是两件事。
B
"目的不可达"(ICMP 类型 3)—— 路由器查路由表找不到路径,不能到达目的地。本题是"能到达但因拥塞丢",不是"无法到达"。错的根源:把"丢弃"误等同为"不可达",但丢弃可以有多种原因。
D
"超时"(ICMP 类型 11)—— TTL 减到 0 时路由器丢弃分组并发此报文,常见于 traceroute 命令。本题是因拥塞丢弃(不是 TTL 耗尽),不发"超时"。错的根源:把所有"路由器丢弃"统一归类为"超时",但具体丢弃原因不同对应不同 ICMP 类型。
总解析
第一步:明确路由器拥塞丢包的处理
路由器队列满时主动丢弃新到分组,并向源主机发送 ICMP 源点抑制报文(Source Quench,类型 4)——告诉源主机"我现在拥塞,请放慢发送"。
第二步:ICMP 报文类型对照(拥塞 / 丢弃 / 错误场景)
| 场景 | ICMP 类型 | 名称 | 用途 |
|---|---|---|---|
| 拥塞丢包 | 4 | 源点抑制(Source Quench) | 请源主机放慢 |
| 找不到路径 | 3 | 目的不可达(Destination Unreachable) | 路由表无匹配 |
| TTL = 0 | 11 | 超时(Time Exceeded) | TTL 耗尽,traceroute 用 |
| 路径优化提示 | 5 | 路由重定向(Redirect) | 改走其他下一跳 |
题面"因为拥塞丢弃" → 直接对应 源点抑制。
第三步:核对
最终答案是 C(源点抑制)。
编者注(生僻术语):ICMP 源点抑制报文(Source Quench)的现状——RFC 6633(2012)已正式弃用这条 ICMP 类型:
- 被弃用原因:源点抑制让"路由器告诉源放慢"——但这种反向信号容易被滥用攻击(伪造 Source Quench 让目标放慢成为 DoS 工具);且现代拥塞控制(TCP 自带 + ECN 显式拥塞通知)已能更优雅处理拥塞
- 替代方案:ECN(Explicit Congestion Notification,RFC 3168)——路由器在 IP 头里设置 ECN 位标记拥塞,让 TCP 端点主动调整 cwnd
但 408 教材仍把 Source Quench 作为标准 ICMP 类型考——题面问的是教材意义上的"拥塞 ICMP",仍选 C。