Linux 中的 Ping 命令

2025年3月17日 | 阅读 7 分钟

Ping 命令简介

PingPacket Internet Groper 的缩写。此命令主要用于检查主机/服务器与主机之间的网络连接性。ping 命令以 URL 或 IP 地址作为输入,并将数据包与“PING”消息一起传输到指定的地址。然后,它会从主机/服务器收到回复。这段时间被称为“延迟”

注意:低延迟和快速 ping 意味着更快的连接。

大多数 Linux 用户都熟悉 ping 命令。几乎所有用户都知道如何以其常用形式使用此命令。但是,ping 命令还有一些其他的变体和选项。

在本文中,我们将通过一些最有用的 Linux ping 命令并附带示例进行解释。

这些 ping 命令 将适用于任何 Linux 或 Unix 发行版。我们用于提供输出样本和示例的测试系统是 Ubuntu 20.04 LTS。

前提条件

  • 可访问命令行
  • Unix 或类 Linux 系统
  • 拥有执行命令所需权限的用户

Ping 命令的工作原理

在 Linux 中,ping 命令是一个通用实用程序,用于检查网络是否存在以及主机是否可达。我们可以使用此命令测试服务器是否正在运行。此外,它还有助于排除各种连接问题。

ping 命令允许我们

  • 测试我们的互联网连接。
  • 检查远程机器是否处于活动状态。
  • 分析高延迟或丢包等网络问题。

当我们尝试“ping”远程主机时,我们的机器开始传输 ICMP 回显请求并等待响应。当连接建立时,我们将收到所有请求的回显响应。

ping 命令的结果包括所有数据包到达目标并返回所需的时间。此外,终端会持续打印回复,直到被中断。在所有会话结束后,会有几行显示 ping 统计信息。

Ping 命令用法

ping 命令的基本语法是 ping,后面跟主机名、网站名或精确的 IP 地址。

语法

因此,我们可以在终端中输入以下命令来检查远程主机是否在线


Ping command in Linux

要停止进程,我们可以使用 Ctrl+C 键。

  • 来自:它显示目标及其 IP 地址。
    重要提示:对于任何网站,IP 地址可能因我们的地理位置而异。
  • ttl=52:它显示值,即生存时间(Time to Live),范围为 1-255。它还指示一个数据包在被路由器删除之前可以经过的网络跳数。
  • icmp_seq=1:它显示所有 ICMP 数据包的序列号。对于所有后续的回显请求,它会增加一个数字。
  • time=7.68 ms:它显示一个数据包到达目标并返回源所需的时间。它以毫秒 (ms) 为单位。

ping 命令示例

ping "localhost" 以检查本地网络

如果我们遇到连接远程机器或网站的问题,我们可以 ping 本地主机以确保我们有网络连接。我们可以使用以下任何一种方法来检查本地网络接口:

  • ping 0:这是 ping 本地主机的最快选项之一。当您输入此命令时,终端将解析确定 IP 地址并给出响应。
  • ping localhost:我们可以使用 ping localhost 名称。此名称将指向我们的系统,当您输入此命令时,我们会说“ping 此系统”
  • ping 127.0.0.1:有些人更喜欢输入 IP 地址来 ping 本地主机。

注意:无论我们选择哪个选项,ping 的结果看起来都一样。

示例如下


Ping command in Linux

互联网协议规范

IPv6 是 IP 地址的字母数字格式,它取代了 IPv4。原因是 IPv4 地址数量有限。

要请求 IPv4 或 IPv6 地址,我们可以在 IP/主机名之前或 ping 命令之后添加 -4 或 -6。

修改 Ping 数据包之间的时间间隔

所有 ping 请求之间的时间间隔(默认)为一秒。我们可以使用称为“-i”的开关来减少或增加时间。

我们使用小于 1 的值来缩短 ping 时间间隔。


Ping command in Linux

我们使用大于 1 的值来增加 ping 时间间隔。

用 ping 泛洪网络

我们可以应用 ping 泛洪(flood)来测试我们在高负载下网络的性能。ping 泛洪的一个选项,即 -f,需要 root 权限才能运行。否则,我们也可以在 ping 命令中使用 sudo 选项来泛洪主机。它会尽快传输大量数据包。

命令如下:

结果会为每个传输的数据包打印一个点,为每个响应打印一个退格符。统计信息行显示 ping 命令的摘要。

更改 ping 数据包的大小

在这种情况下,我们可能希望使用 -s 将数据包大小从默认的 56 (84) 字节增加。括号中的数字表示传输的 ping 字节数,包括 28 字节的头部数据包。

例如,要将数据包大小增加到 1000 字节,我们可以使用以下命令


Ping command in Linux

如果分析网络性能,此命令很有帮助。如果我们把数据包的大小增加到几千字节,我们可以分析网络链路何时开始限速。

如何修复 ping 数量

ping 命令的设置(默认)是持续发送请求,直到我们中断它。我们可以通过以下两种方法来固定 ping 数量:

1. 限制 Ping 数据包的数量

我们可以使用 -c 选项和一个数字来自动使 ping 命令在传输完指定数量的数据包后停止。它设置了所需的 ping 请求数量,如下例所示:


Ping command in Linux

如上图所示,ping 命令将在两次请求后停止传输数据包。

2. 在 ping 命令中设置时间限制

我们可以将 -w 和一个以秒为单位的时间间隔添加到我们的命令中,以便在特定时间量后停止接收 ping 结果。

例如,我们可以键入 ping 命令,以便在 25 秒后停止打印 ping 输出:


Ping command in Linux

ping 命令的其他用途

抑制 Ping 结果,仅显示摘要统计信息

如果我们不想让屏幕被每个数据包的详细信息淹没,请使用 -q 选项仅显示摘要。

-q 开关会打印一行带有常规 ping 详细信息的摘要,然后最后给出统计信息。在此命令中,“q”字母是“quiet”(安静)结果的缩写。


Ping command in Linux

通常,我们将安静结果与其他选项结合使用。在这种情况下,我们将 ping 设置为发送 10 个数据包并抑制结果。

在每个行之前包含 Ping 结果的时间戳

如果我们想记住运行 ping 命令的时间,我们可以添加 -D 开关,如下所示:


Ping command in Linux

它会在每一行之前打印 Unix 格式的时间戳。

注意:我们需要使用大写的 D,因为这些命令区分大小写。

如果主机可达,则发出声音 Ping

当我们使用 -a 选项时,如果主机有回复,系统将播放声音。声音 Ping 对于我们在对网络问题进行故障排除时很有用,因为我们不想盯着屏幕,直到有回复为止。


Ping command in Linux

结果看起来与任何常规 ping 命令结果相似。

显示 Ping 版本

我们可以检查系统中 ping 工具的版本。我们也可以将 -V 选项附加到 ping 命令以显示此实用程序的版本。

命令如下:


Ping command in Linux

最常用的 Ping 命令

以下是一些常用的 ping 命令:

a- 如果对端可达,则发出声音。

b- 允许 ping 广播的 IP 地址。

B- 防止 ping 更改探测源地址。

c- 限制传输的 ping 请求数量。

d- 在使用的套接字上设置 SO-DEBUG 选项。

f- 通过每秒传输多个数据包来泛洪网络。

i- 描述连续数据包传输之间的时间间隔。一秒是默认值。

I- 将源的 IP 地址设置为接口的描述 IP 地址。如果 ping IPv6 链路的缺少地址,则需要此选项。我们可以使用设备名称或 IP 地址。

l- 指定要传输的多个数据包,而无需等待响应。

q- 在 ping 输出中显示 IP 地址而不是主机名。

T- 设置生存时间。

v- 提供详细的输出。

V- 显示 ping 版本并退出到新的命令提示符。


下一个主题Linux Source 命令