如何测试我的 ping 应用程序以正确检测 ICMP 返回类型和代码

网络工程 icmp 测试 错误
2022-02-15 06:50:10

我开发了一个应用程序,它部分复制了内置 ping 应用程序的功能,本质上是发送 ICMP 数据包、接收响应和解析标头。

但是,我想报告收到的任何错误消息。我遇到的问题是尝试以某种方式对主机/地址进行 ping 操作,以使我得到带有某种类型 ICMP 代码的 ICMP 类型 3(大概是代码 0-7,但我并不挑剔)。

我尝试在一个不同的、不存在的地址上 ping 一个虚假地址,以为我的路由器会发送此消息,但它没有发生,它只是超时。不过, Windowsping的行为方式相同。

除了设置一个运行服务的 linux 机器,该服务使用类型 3 和随机代码响应所有 ping,有没有一种方法可以测试这个功能?这些代码是神秘的、过时的还是未被使用的?

1个回答

看看 scapy:http ://www.secdev.org/projects/scapy/和 tcpdump/wireshark。使用前者,您可以生成任何 ICMP 数据包,使用后者,您可以查看生成的数据包的样子。

您的路由器肯定有默认路由。删除它,它应该会生成您正在寻找的 ICMP 消息。或者,在没有 DNS 服务的主机上尝试以下命令:

dig example.com @[host]

服务器将使用 ICMP 类型 3 进行应答。

这些代码仍在使用中。我会专门看一下time exceeded