【技巧】掌握 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命令技巧,将在网络故障排除和网络调试时为您提供强有力的帮助。