多次 ping 同一地址

多次 ping 同一地址

我只是想知道是否可以从同一源多次 ping 同一 IP 地址(即速度足够快,以便它们被流水线化),并且仍然获得有效结果。有效结果是指您记录所有 ping 数据包的有效往返时间。

我的意思是,数据包可能会混在一起,导致接收方无法知道哪个数据包是哪个数据包,因此记录的往返时间不准确。ICMP 或 IP 中是否有任何机制可以对 ping 数据包进行编号,以便将它们与对同一地址的其他 ping 进行区分。

答案1

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

RFC792第 15 页:

标识符和序列号可被回显发送者用来辅助匹配回复和请求。例如,标识符可能像 TCP 或 UDP 中的端口一样用来标识会话,而序列号可能在每次发送请求时递增。 目的地在答复中返回这些相同的值。

答案2

标准ping(1)命令甚至包括-f 洪水参数,要求尽快发送 ping 数据包;ping尝试尽可能快地发送而不丢失数据包。(这款工具非常实用,可以确保您的网络状况不会很糟糕,但不要在 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;
};

相关内容