详解Linux系统中ping和arping命令的用法
ping
ping 程序使用 ICMP 协议的强制回显请求数据报以使主机或网关发送一份 ICMP 的回显应答。回显请求数据报(" pings ")含有一个 IP 及 ICMP 的报头,后跟一个``时间值关键字然后是一段任意长度的填充字节用于把保持分组长度为16的整数倍。以下是程序的选项:
ping [ -LRUbdfnqrvR ] [ -c count ] [ -i wait ] [ -l preload ] [ -p pattern ] [ -s packetsize ]
参数
-c
count 在发送(和接收)了正好数量为 count 的回显应答分组后停止操作。在发送了 count 个分组后没有收到任何分组的特别情况是发送导致了终止(选程主机或网关不可达)。
-d
在所用的套接字上使用SO_DEBUG 选项。
-f
以高速方式来作ping 。以分组返回的速度来输出其它分组或每秒输出百次。当收到每个回显应答并打印一个退格符时,对每个回显请求都打印一个句点``.。这可以快速显示出丢弃了多少个分组,只有超级用户可以用这个选项。这(操作)对网络要求非常苛刻,应该慎重使用。
-i
wait 在发送每个分组时等待 wait 个秒数。缺省值为每个分组等待一秒。此选项与-f选项不能同时使用。
-l
preload 如果指定 preload ,那么 ping 程序在开始正常运行模式前尽可能快地发送分组。同样只有超级用户可以用这个选项。
-n
只以数字形式输出信息。这样就不尝试去查找主机名了。
-p
pattern 可以指定最多16个填充字节用于保持分组长度为16的整数倍。在网络上诊断与数据相关问题时此选项很有用。例如``-p ff将使发出的分组都用全1填充数据区。
-q
静态输出。在程序启动和结束时只显示摘要行。
-R
记录路由。在回显请求分组中包含记录路由选项并在相应的分组返回时显示路由缓冲区。注意IP首部的容量只能存放9条这样的路由。很多主机忽略或禁用此选项。
-r
在所连接的网络上旁路正常的选路表,直接向主机发送分组。如果主机未处于直接相连的网络上,那么返回一个错误。此选项可用来通过无路由接口对一台主机进行检测(例如当接口已被routed 程序丢弃后)。
-s
packetsize 指定要发送数据的字节量。缺省值为 56 ,这正好在添加了 8 字节的 ICMP 首部后组装成 64 字节的 ICMP 数据报。
-v
详细模式输出。打印接收到的回显应答以外的ICMP分组。
-w
waitsecs 在 waitsecs 秒后停止 ping 程序的执行。当试图检测不可达主机时此选项很有用。
当用ping来隔离故障时,应首先在本地主机上运行,以检查本地网络接口有效 运行。然后,应该进一步检查主机和网关。计算出往返时间和分组丢失率。如 果收到重复的分组,虽然这些分组的往返时间要用于计算往返时间的最小/平均 /最大值,但是它们不应该算在刚才计算的丢失的分组中。当指定数量的分组已 经发送(和接收)时或如果程序被SIGINT信号终止,会显示一份简短的摘要。
如果ping程序根本没有收到任何返回分组,那它将以返回码1退出。出错时返回 2。否则返回0。这些值可能用于查看主机存在与否。
此程序专用于网络测试,度量和管理。因为它会使用网络的流量,在正常操作或 自动的脚本中使用它并不明智。
例1
例a,ping一下baidu
复制代码
代码如下:
[root@localhost ~]# ping baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144: icmp_seq=1 ttl=54 time=3.51 ms
64 bytes from 123.125.114.144: icmp_seq=2 ttl=54 time=6.03 ms
--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 3.515/4.775/6.036/1.262 ms
例b,指定次数和时间,间隔ping baidu
复制代码
代码如下:
[root@localhost ~]# ping -c 5 -i 0.5 baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144: icmp_seq=1 ttl=54 time=2.92 ms
64 bytes from 123.125.114.144: icmp_seq=2 ttl=54 time=2.97 ms
64 bytes from 123.125.114.144: icmp_seq=3 ttl=54 time=2.99 ms
64 bytes from 123.125.114.144: icmp_seq=4 ttl=54 time=6.98 ms
64 bytes from 123.125.114.144: icmp_seq=5 ttl=54 time=3.14 ms
--- baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 2011ms
rtt min/avg/max/mdev = 2.925/3.806/6.985/1.591 ms
例2
例:-i 指定发送数据包时间间隔,-c 指定一共发送多少个数据包,-I 指定源地址,-q指定直接显示程序的启动和最后结果
复制代码
代码如下:
# ping -i 0.2 -c 30 -I 192.168.10.208 180.149.132.47 -q
PING 180.149.132.47 (180.149.132.47) from 192.168.10.208 : 56(84) bytes of data.
--- 180.149.132.47 ping statistics ---
30 packets transmitted, 30 received, 0% packet loss, time 5858ms
rtt min/avg/max/mdev = 29.525/29.857/33.755/0.765 ms
arping
arping 命令: 在指定网卡上发送ARP请求指定地址,源地址 “-s” 参数指定,可用来直接 ping MAC 地址,以及找出那些 ip 地址被哪些电脑所使用了
-A ARP回复模式,更新邻居
-b 保持广播
-D 复制地址检测模式
-f 得到第一个回复就 退出
-q 不显示警告信息
-U 主动的ARP模式,更新邻居
-c <数据包的数目> 发送的数据包的数目
-w <超时时间> 设置超时时间
-I <网卡> 使用指定的以太网设备,默认情况下使用eth0
-s 指定源IP地址
-h 显示帮助信息
-V 显示版本信息
例:
例a,指定IP发送ARP请求
复制代码
代码如下:
[root@Blackghost ~] arping 192.168.1.11
ARPING 192.168.1.11 from 192.168.1.6 eth0
Unicast reply from 192.168.1.11 [08:00:27:7e:b8:08] 2.780ms
Unicast reply from 192.168.1.11 [08:00:27:7e:b8:08] 2.187m
例b,向指定主机发送ARP请求,当收到第一个包自动退出
复制代码
代码如下:
[root@Blackghost ~] arping -f 192.168.1.11
Unicast reply from 192.168.1.11 [08:00:27:7e:b8:08] 3.080ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
例c,指定发送次数
复制代码
代码如下:
[root@Blackghost ~] arping -c 4 192.168.1.11
Unicast reply from 192.168.1.11 [08:00:27:7e:b8:08] 3.080ms
Unicast reply from 192.168.1.11 [08:00:27:7e:b8:08] 2.670ms
Unicast reply from 192.168.1.11 [08:00:27:7e:b8:08] 1.850ms
Unicast reply from 192.168.1.11 [08:00:27:7e:b8:08] 4.120ms
Sent 4 probes (4 broadcast(s))
Received 4 response(s)