-T 选项导致 ping 命令

6 linux ping

我正在学习ping命令。

我无法理解ping带有-T tsonly和的命令的输出-T tsandaddr

输出是:

$ ping -T tsonly 192.168.1.52
PING 192.168.1.52 (192.168.1.52) 56(124) bytes of data.
64 bytes from 192.168.1.52: icmp_req=1 ttl=63 time=0.470 ms

 TS:    43448298 absolute
        1
        31
        0
        -31
        0
$ ping -T tsandaddr 192.168.1.52
PING 192.168.1.52 (192.168.1.52) 56(124) bytes of data.
64 bytes from 192.168.1.52: icmp_req=1 ttl=63 time=0.434 ms

TS: 192.168.2.64    43461227 absolute
    192.168.2.10    0
    192.168.1.52    32
    192.168.1.52    0
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索。但我没有找到答案。在手册页中我也没有找到答案。

我知道它打印的绝对时间是从 ut 24 小时午夜时间戳开始的毫秒数。
除此之外,剩下的三遍是什么时候?为什么在两个ping输出中都打印了它?那有什么用?

J36*_*363 6

-T 选项要求节点(每跳)在收到 ping 时在 IP 数据包中插入时间戳。它通过使用RFC791指定的 IP 数据包的 TS 选项来工作

ping -T 需要 tsonly、tsandaddr 或 tsprespec 中的一个参数。tsonly 仅返回时间戳。tsandaddr 返回时间戳和发送数据包的地址。

从手册页:

-T timestamp option
      Set special IP  timestamp  options.   timestamp  option  may  be
      either  tsonly  (only  timestamps),  tsandaddr  (timestamps  and
      addresses) or tsprespec host1 [host2 [host3 [host4]]] (timestamp
      prespecified hops).
Run Code Online (Sandbox Code Playgroud)

例如,当我从 192.168.1.191 ping 本地网络上的 192.168.1.10 时,我收到以下输出:

ping -T tsandaddr 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(124) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=4.32 ms
TS:     192.168.1.191   31636378 absolute
192.168.1.10    6
192.168.1.10    0
192.168.1.191   -1
Run Code Online (Sandbox Code Playgroud)

更新 01


当您发出 tsandaddr 标志时,会返回四个时间值。在下面的示例中,我们看到 31636378 绝对值、6、0 和 -1。

ping -T tsandaddr 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(124) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=4.32 ms
TS:     192.168.1.191   31636378 absolute
192.168.1.10    6
192.168.1.10    0
192.168.1.191   -1
Run Code Online (Sandbox Code Playgroud)

大值 (31636378) 是自 UTC 午夜以来的毫秒数,这就是使用 -T 标志时第一个数字继续向上计数的原因。这个大数字是一个参考时间。

第一个值 (6) 是传输 ping 所花费的时间(以毫秒为单位)。第二个值 (0) 是目标接收 ping 所用的时间(以毫秒为单位)。第三个值 (-1) 是将回复传输给发送者所花费的时间。

我相信 0 和 -1 毫秒值表明我 ping 的目标没有响应,因此我得到了无用的值。

随意在一些网站上测试这个命令,一些回复带有合法值。

--timestamp 发送 ICMP_TIMESTAMP 数据包,从而请求目标主机的定时响应。

在成功的情况下,会返回三个时间值。预计所有人都将说明自 UTC 午夜以来的毫秒数。其中第一个“icmp_otime”包含发送请求的原始时间。然后是'icmp_rtime',目标接收的时间,最后是'icmp_ttime',将应答发送回发起者的时间。

在此处查看 --timestamp:https ://www.gnu.org/software/inetutils/manual/html_node/Ping-options.html