【技巧】掌握 Linux ping 命令,轻松排查网络问题 (linux ping命令技巧)

作为网络管理员,经常需要排查网络故障和针对性的调试。所以我们需要多掌握一些诸如 ping 等命令,以此来更好地调试网络命令的各种问题。本篇文章将会特别讲述如何使用 Linux 中的 ping 命令。

一、ping 命令简介

ping 命令是Linux系统的常用网络工具之一,可用于测试本地与目标网络机器之间的连通性。ping 命令主要用于测试目标 IP 是否可以连通,并可以通过结果分析网络连接的问题。 ping 命令默认是连续执行,除非通过CTRL+C键退出。

以下展示ping命令的常用语法。

“`

ping [参数] [主机名或IP地址]

“`

二、ping 命令的使用及常见参数

1. 基本的ping 命令执行

输入 `ping IP或域名`,即可简单地执行一个ping命令。例如:

“`

[root@tech documents]# ping www.bdu.com

PING www.bdu.com (220.181.38.148) 56(84) bytes of data.

64 bytes from 220.181.38.148: icmp_seq=1 ttl=55 time=5.19 ms

64 bytes from 220.181.38.148: icmp_seq=2 ttl=55 time=5.70 ms

64 bytes from 220.181.38.148: icmp_seq=3 ttl=55 time=5.17 ms

64 bytes from 220.181.38.148: icmp_seq=4 ttl=55 time=5.47 ms

“`

其中, `PING` 表示 `ping` 命令正在执行,后面的 `(220.181.38.148)` 是被ping检测的IP地址或域名对应的IP地址,`56(84)` 中的 56 是数据的长度,84是总长度,也就是数据块加上IP头和ICMP头的总长度,后面的一段则是 ~4个~ ICMP 包的回显信息,它们的序列号、TTL(生存时间)、延迟时间。

2. 指定ping命令执行次数

可以通过使用 `-c`(count) 参数来指定ping命令执行的次数。例如:

“`

[root@tech documents]# ping -c 5 www.bdu.com

PING www.bdu.com (220.181.38.148) 56(84) bytes of data.

64 bytes from 220.181.38.148: icmp_seq=1 ttl=54 time=7.90 ms

64 bytes from 220.181.38.148: icmp_seq=2 ttl=54 time=7.77 ms

64 bytes from 220.181.38.148: icmp_seq=3 ttl=54 time=7.63 ms

64 bytes from 220.181.38.148: icmp_seq=4 ttl=54 time=8.86 ms

64 bytes from 220.181.38.148: icmp_seq=5 ttl=54 time=7.78 ms

— www.bdu.com ping statistics —

5 packets tranitted, 5 received, 0% packet loss, time 4005ms

rtt min/avg/max/mdev = 7.632/7.997/8.865/0.407 ms

“`

以上 微调参数 使得只向 bdu.com 发出 5 个ping,收到 5 个ping响应。

可以看到, 执行了 5 次ping命令。在输出的会显示得到的统计信息。这里的意思是,ping命令执行了 5 次,没有发生任何的丢包,延迟时间的最小值、平均值、更大值以及平均偏差分别是 7.843ms、9.933ms、16.401ms 和 3.524ms。

3. 自定义ping命令发送的数据包大小

可以通过 `–s` 参数指定 ping命令发送的数据记包的大小,此命令使用这个参数时要小心!因为指定太大的数据包,将可能引起网络拥堵等问题。

“`

[root@tech documents]# ping -s 1024 www.bdu.com

PING www.bdu.com (220.181.38.149) 1024(1052) bytes of data.

1032 bytes from 220.181.38.149: icmp_seq=1 ttl=54 time=7.23 ms

1032 bytes from 220.181.38.149: icmp_seq=2 ttl=54 time=7.21 ms

1032 bytes from 220.181.38.149: icmp_seq=3 ttl=54 time=7.26 ms

“`

可以看到,输出数据包的大小为 1024 字节。

4. 等待回应超时时间

在网络环境中,任何通信都需要遵守通信协议规定的时间,这个时间我们一般称之为超时时间。如果目的主机在超时时间内未响应ping请求,ping命令将终止等待。一般情况下,超时时间为 1 秒,但可以使用 `-w` 参数来改变它。

“`

[root@tech documents]# ping -c 5 -w 10 www.bdu.com

PING www.bdu.com (220.181.38.149) 56(84) bytes of data.

64 bytes from 220.181.38.149: icmp_seq=1 ttl=54 time=9.43 ms

64 bytes from 220.181.38.149: icmp_seq=2 ttl=54 time=8.87 ms

64 bytes from 220.181.38.149: icmp_seq=3 ttl=54 time=7.56 ms

64 bytes from 220.181.38.149: icmp_seq=4 ttl=54 time=7.89 ms

64 bytes from 220.181.38.149: icmp_seq=5 ttl=54 time=8.66 ms

— www.bdu.com ping statistics —

5 packets tranitted, 5 received, 0% packet loss, time 4010ms

rtt min/avg/max/mdev = 7.562/8.682/9.431/0.672 ms

“`

5. 快速ping网络测试

如果ping命令可以在多个网络地址之间快速地跳转以进行测试,将非常有用,可以使用 `–flood` 参数来测试网络速度。但这一点需要注意,因为它可能会扰乱网络稳定性,导致网络波动等问题。

“`

[root@tech documents]# ping -f www.bdu.com

PING www.bdu.com (220.181.38.148) 56(84) bytes of data.

“`

6. 指定ping命令的接口名称

ping 命令默认是直接使用进程执行的主机IP地址。并且在多网卡情况下,默认使用的是系统分配的默认网络接口进行ping网络测试。可以使用 `-I` 参数来指定网卡接口名称来与目标网络机器进行数据收发。

“`

[root@tech documents]# ping -I eth0 www.bdu.com

PING www.bdu.com (220.181.38.148) from 172.16.6.254 eth0: 56(84) bytes of data.

64 bytes from 220.181.38.148: icmp_seq=1 ttl=54 time=6.12 ms

64 bytes from 220.181.38.148: icmp_seq=2 ttl=54 time=6.08 ms

64 bytes from 220.181.38.148: icmp_seq=3 ttl=54 time=6.20 ms

64 bytes from 220.181.38.148: icmp_seq=4 ttl=54 time=5.99 ms

“`

三、结论

本篇文章简单介绍了ping命令的使用及常见参数,包括基本的ping命令执行、指定ping命令执行次数、自定义ping命令发送的数据包大小、等待回应超时时间、快速ping网络测试以及指定ping命令的接口名称。掌握这些常用的ping命令技巧,将在网络故障排除和网络调试时为您提供强有力的帮助。


数据运维技术 » 【技巧】掌握 Linux ping 命令,轻松排查网络问题 (linux ping命令技巧)