我正在研究 ICMP 协议和使用 ICMP 消息的 ping 程序。但我不确定 ping 程序究竟使用了哪些 ICMP 消息
我知道
echo reply
echo request
time exceeded - TTL
但我不确定是否destination unreachable使用过,或任何其他 ICMP 消息
谢谢
我正在研究 ICMP 协议和使用 ICMP 消息的 ping 程序。但我不确定 ping 程序究竟使用了哪些 ICMP 消息
我知道
echo reply
echo request
time exceeded - TTL
但我不确定是否destination unreachable使用过,或任何其他 ICMP 消息
谢谢
如果发出命令:
ping 8.8.8.8
然后,本地设备生成一个 ICMP Echo(类型 8,代码 0),并向外发送。然后设备等待接收 ICMP Echo 回复(类型 0,代码 0)。
如果数据包 TTL 在到达其目的地之前到期,则将一个 ICMP Time Exceeded(类型 11,代码 0)数据包发送到 ICMP Echo 的发起者。
当使用 Traceroute 并且 ICMP 数据包到达最终目的地时,通常会向源发送回 ICMP Port Unreachable(类型 3,代码 3)。
如果转发路径中的设备不知道如何路由到目的地,它将发送 ICMP Net Unreachable(类型 3,代码 0)。无论从一开始就发送什么样的数据包,无论是否是 ICMP,这都是正确的。
请注意,许多管理员会过滤 ICMP(通常是在缺乏知识的情况下),因此可能无法接收回 ICMP 数据包。