一、题目
从源设备到目的设备之间有两台路由器RTA和RTB,使用Tracert命令来检测路径。检测第一跳RTA时,源设备对目的设备的某个较大的端口送一个TTL为1的UDP报文,当该报文到达RTB时,TTL将变为0,于是RTA
对源设备回应一个ICMP_______消息。
A. Echo Request
B. Port Unreachable
C. Time Exceeded
D. Echo Reply
二、答案
Correct Answer: C
三、解析
正确答案是 C. Time Exceeded。
解释:
当使用Tracert(或Traceroute)命令检测路径时,源设备会发送一个TTL(Time to Live)逐渐递增的UDP报文来探测每一跳的路由器。具体过程如下:
- 第一跳检测:
- 源设备发送一个TTL为1的UDP报文到目的设备。
- 当这个UDP报文到达第一跳路由器RTA时,TTL值减1变为0。
- 由于TTL值为0,RTA会丢弃该报文,并向源设备发送一个ICMP Time Exceeded 消息,通知源设备报文在该跳被丢弃。
- 后续跳检测:
- 源设备接着发送TTL为2的UDP报文,该报文通过RTA到达RTB时,TTL值变为0。
- RTB也会丢弃该报文,并向源设备发送一个ICMP Time Exceeded 消息。
- 通过这种方式,Tracert命令可以逐步探测到每一跳的路由器。
ICMP消息类型:
- Echo Request 和 Echo Reply:用于Ping命令,检测主机之间的连通性。
- Port Unreachable:当目标端口不可达时发送,通常用于UDP通信。
- Time Exceeded:当TTL值为0时发送,用于Traceroute命令。
因此,在Tracert命令中,当TTL值为0时,路由器会发送 ICMP Time Exceeded 消息。
四、扩展—ICMP 消息还有其他用途吗
ICMP(Internet Control Message Protocol,互联网控制消息协议)不仅用于常见的网络诊断工具(如Ping和Traceroute),还具有多种其他用途,主要用于错误报告、网络管理和故障诊断等。以下是ICMP消息的常见用途和类型:
1. 错误报告
ICMP用于报告网络通信中的错误,帮助网络管理员诊断问题:
- 目的不可达(Destination Unreachable):当数据包无法到达目标地址时,ICMP会发送此消息。常见的代码包括:
- 网络不可达(代码0)。
- 主机不可达(代码1)。
- 端口不可达(代码3)。
- 超时(Time Exceeded):当数据包的TTL(Time to Live)值为0时,ICMP会发送此消息。这在Traceroute工具中被广泛应用。
- 参数问题(Parameter Problem):当IP数据包中的某些参数无效时,ICMP会发送此消息。
2. 网络诊断
ICMP广泛用于网络诊断工具:
- Ping:通过发送ICMP回显请求(Echo Request)和接收回显应答(Echo Reply)来测试主机之间的连通性。
- Traceroute:通过逐跳增加TTL值并记录ICMP超时消息,来确定数据包经过的路径。
- MTR(My Trace Route):结合了Ping和Traceroute的功能,实时显示网络路径和丢包率。
- Fping:批量Ping多个主机,适用于大规模网络监控。
3. 流量控制
- 源抑制(Source Quench):当网络拥塞时,路由器会发送此消息通知源主机降低发送速率。不过,该消息类型已被废弃。
4. 辅助网络管理
- 时间戳请求(Timestamp Request)和时间戳应答(Timestamp Reply):用于同步网络设备的时间。
- 路由器发现:帮助主机发现网络中的默认网关。
5. 网络安全
- 防火墙配置:由于ICMP可能被滥用于攻击(如ICMP Flood攻击),许多防火墙会限制或阻止某些ICMP消息。
- 网络监控:通过定期发送Ping请求,监控网络设备的健康状态。
总结
ICMP协议在网络中扮演着重要角色,不仅用于常见的网络诊断工具(如Ping和Traceroute),还用于错误报告、流量控制和辅助网络管理等多种功能。了解ICMP消息的类型和用途,有助于更好地利用这些工具进行网络管理和故障诊断。