当我在 boost asio icmp 示例中的 icmp 请求数据包中设置一个小的 ttl 时,icmp 回复数据包中的标识符为零

The identifier in icmp reply packet is zero when I set a small ttl in icmp request packet in boost asio icmp example

当我使用 boost asio icmp 示例时 http://www.boost.org/doc/libs/1_40_0/doc/html/boost_asio/example/icmp/ping.cpp to ping some ip address, I set a small ttl.I set ttl to 1 in boost icmp example 当我收到回复 icmp 数据包时,我发现 header 中的标识符与 PID 不匹配(我在 icmp 中将标识符设置为 PID请求数据包)且标识符为零(icmp header 中的类型为 11)。但是当我设置一个 ttl 例如 128 时,回复 icmp header 中的标识符匹配 PID。有谁知道为什么? 我会感谢你的帮助。

我在 http://www.zytrax.com/tech/protocols/tcp.html 中找到了答案。 当 icmp 中的类型 header 设置为 11 时,即表示 time_exceeded.ICMP TIME EXCEEDED。八位字节 4-7 必须为零。