我正在学习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输出中都打印了它?那有什么用?
-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