我的 Ping 命令似乎永远不会完成。这是否意味着它正在成功?

ber*_*436 10 networking ping

我正在 ping 一个远程 IP。我对 Ping 命令知之甚少。当我 ping IP 时,它一直在继续……我没有使用-t 选项

Me$ ping 137.30.124.104
PING 137.30.124.104 (137.30.124.104): 56 data bytes
64 bytes from 137.30.124.104: icmp_seq=0 ttl=62 time=3.378 ms
64 bytes from 137.30.124.104: icmp_seq=1 ttl=62 time=3.825 ms
64 bytes from 137.30.124.104: icmp_seq=2 ttl=62 time=4.882 ms
64 bytes from 137.30.124.104: icmp_seq=3 ttl=62 time=1.822 ms
64 bytes from 137.30.124.104: icmp_seq=4 ttl=62 time=4.572 ms
....
64 bytes from 137.30.124.104: icmp_seq=290 ttl=62 time=3.273 ms
Run Code Online (Sandbox Code Playgroud)

这是否意味着它成功地ping IP?或者它正在尝试失败并再次尝试?我如何让它停止?

slm*_*slm 17

这就是 ping 命令的工作原理。您可以使用计数开关来控制它,-c

例子

$ ping -c 2 skinner
PING skinner.bubba.net (192.168.1.3) 56(84) bytes of data.
64 bytes from skinner.bubba.net (192.168.1.3): icmp_req=1 ttl=64 time=1.00 ms
64 bytes from skinner.bubba.net (192.168.1.3): icmp_req=2 ttl=64 time=1.13 ms

--- skinner.bubba.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.001/1.069/1.138/0.075 ms
Run Code Online (Sandbox Code Playgroud)

产量细分

像这样的行表示它正在成功 ping 另一台主机:

64 bytes from skinner.bubba.net (192.168.1.3): icmp_req=2 ttl=64 time=1.13 ms
Run Code Online (Sandbox Code Playgroud)

这些行显示了每个“ping”的详细信息,因为它发生在您的主机和您尝试 ping 的主机之间。

第 6 列

包含此值的列icmp_req=2告诉您这是关于哪个 ICMP 数据包。该ping命令制造网络数据包。有很多类型,您可能听说过 TCP 或 UDP 数据包。另一种类型是ICMP。ICMP 类似于手机网络中的 SMS。它的主要目的是对网络进行命令和控制。

第 7 列

有趣的第三列是TTL=64. TTL - “aka. Time to Live”,意味着数据包在超时前最多只能通过 64 个节点。因此,如果系统距离您的系统超过 64 个“跃点”,您将无法 ping 通它,除非您增加 TTL。

第 8 列

此列显示 ping 发生所用的时间(以毫秒为单位)。这将是如下所示的列:time=1.13 ms

其他列是不言自明的。

Ping 版本

不同的ping命令在各种 Unix 上的实现方式不同。所以你需要注意版本。

$ ping -V
ping utility, iputils-sss20100418
Run Code Online (Sandbox Code Playgroud)

我在 Fedora 14、Linux 系统上。