我目前正在做一项作业,要求我们生成具有各种类型和代码的 ICMP 数据包。我已经咨询了 RFC 以及其他各种地方。我得到的许多类型和代码都很有意义;除了这个。
我以某种方式生成了一个类型为 8(回显请求)和代码为 9 的数据包。问题是类型 8 ICMP 只能有一个代码为 0。请参阅下面的数据包作为来自 wireshark 的十六进制转储:
0000 a8 39 44 fa 14 e0 94 de 80 6b ab 74 08 00 45 00 0010 00 94 92 7b 40 00 28 01 fb 61 c0 a8 01 40 68 83 0020 9a 20 08 09 ac c9 4a 06 01 27 00 00 00 00 00 00 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00a0 00 00
回复也可以在下一个十六进制转储中看到。也很奇怪,因为它是一个代码为 9 的 ICMP echo 回复。一个 ICMP echo 只能有一个代码 0。
0000 94 de 80 6b ab 74 a8 39 44 fa 14 e0 08 00 45 00 0010 00 94 98 af 00 00 39 01 24 2e 68 83 9a 20 c0 a8 0020 01 40 00 09 b4 c9 4a 06 01 27 00 00 00 00 00 00 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00a0 00 00
我要问的问题是这怎么可能,代码 9 是什么意思?它可以被忽略还是值得进一步调查?
我在之前的回答中读到,当 ICMP 隧道进入播放包含在回声中的数据是任意的时,这可以延续到标头吗?
提前致谢!