为什么Ping的RTT来自Echo Reply?

这是为什么不显示RTT的跟进?

我看了一下BSD,Linux和BusyBox ping的实现。 所有这三个function共享他们计算往返时间的function,方法是发送一个时间戳作为回显请求,将其接收为回显应答,然后从当前时间中减去接收到的时间戳。

很显然,目标主机可以修改时间戳,然后回显它,给出奇怪的ping输出。 除此之外,icmp协议规范根本不谈论时间戳。 它只存储在有效载荷字段中。 如果将有效负载的大小修改得太小而无法存储时间戳,则ping无法计算往返时间。

我已经修补了一个ping实现来保存时间戳,而不是依靠回显。 这似乎是完美的工作,但我不确定是否打破了任何事情(在现实生活中,补丁完全服从标准)。

我的问题:
1)我打破了什么?
2)ping的devise者有什么理由以这样一个不明显的方式实现它?