在网络传输 IP 数据报的过程中,如果 IP 数据包的 TTL 值逐渐递减为 0 时,需要丢弃数据报。这时,路由器需要向源发送方发送 ICMP 超时报文,表示传输过程中超时了。
在超时 ICMP 数据包报文中,类型值为 11,代码值为 0。
用户可以通过 netwox 工具中编号为 83 的模块伪造请求超时 ICMP 数据包。
【实例】已知主机 A 的 IP 地址为 192.168.59.134,主机 B 的 IP 地址为 192.168.59.135,在主机 C 上伪造请求超时 ICMP 数据包。
1) 在主机 A 上 ping 主机 B,执行命令如下:
输出信息如下:
上述输出信息表示主机 B 是可达的,并且给出了传输的时间。例如,time=0.447ms,表示时间需要 0.447 毫秒。
2) 在主机 C 上伪造请求超时 ICMP 数据包,设置源 IP 地址为 192.168.59.135,执行命令如下:
执行命令后没有任何输出信息,但是成功伪造了请求超时 ICMP 数据包。
3) 再次在主机 A 上 ping 主机 B,执行命令如下:
输出信息如下:
从上述输出信息可以看到,主机 A 向主机 192.168.59.135 发送了 ping 请求。部分请求没有收到响应信息,而显示了 Time to live exceeded 信息,表示时间超时。
4) 为了验证伪造的请求超时 ICMP 数据包,可以通过捕获数据包查看,如图所示,捕获到了若干个 ICMP 超时数据包。
其中,第 3 个数据包的源 IP 地址为 192.168.59.134,目标 IP 地址为 192.168.59.135,是主机 A 向主机 B 发送的 ICMP 请求包;第 5 个数据包源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.134,Info 列显示的 Time-to-live exceeded 表示时间超时,说明该数据包为伪造的请求超时 ICMP 包。
5) 选择第 5 个数据包,查看包信息,如图所示。
在该数据包的 Internet Control Message Protocol 部分中,Type 值为 11,Code 值为 0,说明该数据包是请求超时 ICMP 数据包。