多次Ping相同的地址

我只是想知道是否有可能从相同的源多次ping相同的IP地址(即足够快,所以他们得到stream水线),仍然得到一个有效的结果。 通过有效的结果,我的意思是你logging所有ping数据包的有效往返时间。

我所得到的是有可能数据包会混合,因此接收者不知道哪个数据包是哪个数据包,因此logging的往返时间不准确。 是否有任何机制使用ICMP或IP来对ping数据包进行编号,以便与其他ping区分开相同的地址。

在ICMP报头中有一个标识符和一个序列号,用于这个目的。 它们占据字节5-7。

请参阅RFC792第15页:

回声发送者可以使用标识符和序号来帮助匹配回复和请求。 例如,标识符可以像TCP或UDP中的端口那样用于标识会话,并且序列号可以在每次发送的请求时递增。 目的地在回复中返回这些相同的值。

标准的ping(1)命令甚至包括一个-f flood参数,它要求尽可能快地发送ping包; ping尽可能快地丢失数据包。 (确保你的networking不是非常糟糕的工具,只是不要在OS X机器之间做,它们会限制ICMP回复,你会怀疑可怕的丢包率。)

ICMP头部包含足够的信息来跟踪两个主机之间的2 ^ 16个未完成的ICMP分组。 从我的/usr/include/linux/icmp.h

 struct icmphdr { __u8 type; __u8 code; __sum16 checksum; union { struct { __be16 id; __be16 sequence; } echo; __be32 gateway; struct { __be16 __unused; __be16 mtu; } frag; } un; };