文章目录

  • 1.命令简介
  • 2.命令格式
  • 3.选项说明
  • 4.常用示例
  • 5.拓展知识
    • 5.1 TTL
    • 5.2 开启和禁用 ping 响应
  • 参考文献

1.命令简介

ping(Packet Internet Groper 命令是因特网包探索器,用于测试网络连通性,是常用的网络命令之一。

ping 命令用于向指定的网络主机发送特殊数据报 IMCP 回应请求报文(IMCP ECHO_REQUEST),多数网络设备收到该数据包后会回应 ICMP 回应回复报文 (ICMP Echo-Reply),以此来验证网络连接是否正常。

注意:Linux 系统下的 ping 命令与 Windows 系统下的 ping 命令稍有不同。Windows 下运行 ping 命令一般会发出 4 个请求就结束运行该命令;而 Linux 下不会自动终止,此时需要我们按 Ctrl+C 终止或者使用 -c 参数为 ping 命令指定发送的请求数目。

2.命令格式

ping
ping [OPTIONS] DESTINATION

不跟参数单独执行 ping 命令将显示简短用法。其中参数为零到多个,目标主机可以是主机 IP 或者域名。

3.选项说明

-4只使用 IPv4
-6只使用 IPv6
-A探测包发送间隔自适应往返时间,这样网络中存在的未应答的探测请求一般不会超过一个
-a每次发送数据时发出鸣响(Audible)
-B不允许 ping 改变包头的源地址
-b允许 ping 一个广播地址
-c COUNT发送 count 个 ECHO_REQUEST 数据包后结束 ping 程序
-D在每行前打印时间戳
-d使用 socket 的 SO_DEBUG 选项。实际上,Linux 内核不使用这个套接字选项
-F FLOW_LABEL仅 IPv6 有效。为请求包分配一个 20 比特的 flow label。如果 FLOW_LABEL 为 0,内核会随机分配
-f采用洪泛模式大量且快速地向目标发送数据包。如果发送间隔没有设置,则默认设置为 0,并按照报文接受的速度和一百次每秒的速度来发送报文(以最快的为准)。只有超级用户能够将此选项和 -i 0 选项一起使用
-h显示帮助信息
-I INTERFACE使用指定的网络接口地址发送数据包
-i INTERVAL每隔 INTERVAL 秒发送一次数据包,默认一秒 ping 一次。只有超级用户可以将间隔设置为小于0.2 秒的值
-L抑制组播报文回送,只适用于 ping 的目标为一个组播地址
-l PRELOAD在没有接受到回复报文之前能发送的最多报文。非超级用户最多只能设置为 3
-M PMTUDISC_OPT选择 Path MTU Discovery 策略模式。PMTUDISC_OPT 取值可以为 do(不允许分段,甚至不允许在本地分段)、want(找出 PMTU,在如果包太大就在本地分段) 或 dont(不要设置 IP 包首部中的 DF 位,即允许分段)
-m MARK使用标记来标记发送的数据包
-n只输出主机 IP 地址,不通过查询 DNS 获知 IP 地址对应的主机名,以节省时间
-O在发送下一个数据包之前报告未完成的 ICMP Echo 请求
-p PATTERN最多指定 16 个字节去填充发送的数据包,这对于诊断网络中数据依赖问题很有用。例如,-p ff 会将所有的填充数据设置为 1
-Q TOS用来设置服务质量(Quality of Service )。ICMP 协议有一个 8 bits 的区分服务(Differentiated Services)。低两位用于分离数据,高 6 位表示区分服务,一般有最小时延、最大吞吐量、最高可靠性、最小代价
-q静态输出。仅程序启动和结束时显示摘要行
-R记录路由过程
-r忽略正常的路由表,而直接向主机发送数据包。如果目标主机不再直连的网络上,则返回异常
-S SNDBUF设置套接字的发送缓冲区大小。如果没有设置,则被设定为不超过一个报文长度
-s PACKETSIZE指定要发送的数据的字节数。默认是 56 字节,与 8 字节的 ICMP 头部结合刚好是 64 字节的 ICMP 数据包
-T TIMESTAMP_OPTION设置 IP 报文的时间戳选项。选项可以是以下三种:(1)-T tsonly 只记录时间戳;(2)-T tsandaddr 收集时间戳和 IP 地址;(3)-T tsprespec [host1 [host2 [host3[host4]]]] 收集来自预定的网络地址的时间戳
-t TTL设置 IP 包的 TTL 值
-U打印完整的用户对用户延迟
-V显示版本信息并退出
-v详细模式输出
-W TIMEOUT设置等待 ICMP 响应的超时时间,单位秒
-w DEADLINEping 程序在 DEADLINE 秒后退出,不管发送或接收多少数据包

4.常用示例

(1)显示 ping 的简要用法。

ping
Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface][-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos][-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option][-w deadline] [-W timeout] [hop1 ...] destination

(2)测试能否 ping 通 IP。

ping 9.134.114.170
PING 9.134.114.170 (9.134.114.170) 56(84) bytes of data.
64 bytes from 9.134.114.170: icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from 9.134.114.170: icmp_seq=2 ttl=64 time=0.040 ms
...

回包正常,表示网络链路通畅。

(3)测试能否 ping 通域名。

ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148: icmp_seq=1 ttl=249 time=39.4 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=249 time=39.3 ms
...

回包正常,表示网络链路通畅。

(4)每隔 0.5 秒 ping 一次,一共 ping 3 次。

ping -i 0.5 -c 3 baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148: icmp_seq=1 ttl=249 time=39.3 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=249 time=39.3 ms
64 bytes from 220.181.38.148: icmp_seq=3 ttl=249 time=39.3 ms--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 39.375/39.390/39.399/0.010 ms

下面简单地介绍一下 ping 产生的响应内容的含义:

PING baidu.com (220.181.38.148) 56(84) bytes of data.表示 ping 目标主机的域名和 IP,以及不带包头的包大小和带包头的包大小,参考 -s 选项64 bytes from 220.181.38.148: icmp_seq=1 ttl=249 time=39.3 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=249 time=39.3 ms
64 bytes from 220.181.38.148: icmp_seq=3 ttl=249 time=39.3 msicmp_seq:ping 序列,从 1 开始;如果数字不是按顺序递增也就意味着丢包了ttl:剩余的 ttl;见下文的 TTL 解释time: 响应时间,数值越小,通信速度越快3 packets transmitted, 3 received, 0% packet loss, time 1001ms发出去的包数,返回的包数,丢包率,总耗费时间rtt min/avg/max/mdev = 39.375/39.390/39.399/0.010 ms最小/最大/平均响应时间和本机硬件耗费时间

(5)综合实例,每隔 0.5 秒 ping 一次,一共 ping 3 次,并且设置发送包的大小为 1024 和 TTL 值为 255。

ping -i 0.5 -c 3 -s 1024 -t 255 baidu.com
PING baidu.com (39.156.69.79) 1024(1052) bytes of data.
1032 bytes from 39.156.69.79: icmp_seq=1 ttl=249 time=44.8 ms
1032 bytes from 39.156.69.79: icmp_seq=2 ttl=249 time=40.5 ms
1032 bytes from 39.156.69.79: icmp_seq=3 ttl=249 time=40.4 ms--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 40.441/41.927/44.810/2.045 ms

(6)综合实例,使用 -i 指定发送数据包时间间隔,-c 指定一共发送多少个数据包,-I 指定源地址,-q 直接显示程序的启动和最后结果。

ping -i 0.2 -c 3 -I 9.134.114.170 baidu.com -q
PING baidu.com (39.156.69.79) from 9.134.114.170 : 56(84) bytes of data.--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 400ms
rtt min/avg/max/mdev = 40.476/40.541/40.588/0.171 ms

(7)以最快的速度,使用最大的包进行 ping,可用于测试目标主机的承压能力。

ping -f -s 65507 baidu.com

注意:此用法非常危险,65535(包头+内容)*100个包每秒=6.25MB,每秒发送 6.25MB 的数据,相当于 50Mbps 的带宽,完全可能导致目标主机拒绝服务,请谨慎使用。

(8)ping 不通的情况。

ping -c 3 9.9.9.9
PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.--- 9.9.9.9 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms

ping 不通目标主机的常见原因有:

No Answer:原因可能是,对方主机没工作,双方网络配置不正确,路由问题等
Request Time Out:对方主机已关机,路由问题或对端防火墙设置禁止ping
Unknown Host Name:DNS设置问题,或者对方主机不存在
Destination Net Unreachable:双方没有建立连接,或对方主机不存在
Bad IP Address:IP 地址不存在或 IP 不能被 DNS 服务器解析
transmit failed,error code:网卡驱动问题
no rout to host:网卡工作不正常
Ping 127.0.0.1 如果ping不通,表明本地机 TCP/IP 协议不能正常工作

5.拓展知识

5.1 TTL

当我们在使用 ping 命令时,返回结果里会带一个 TTL 值。这个东西的含义其实就是Time To Live,指的是报文在网络中能够存活的限制。以前这个限制方式是设定一个时间(Time To Live中的Time就是这样来的),当报文在网络中转发时,时间超过这个限制,最后一个收到报文的‘路由点’就会把它扔掉,而不继续转发。后来把时间限制改为了跳数限制,就是当报文在网络中转发时,每经过一个‘路由点‘,就把预先设定的这个TTL数值减 1,直到最后 TTL=1 时报文就被扔掉,不向下转发。

路由点:我这里是指完成路由功能的机器,因为并不是只有路由器才可以完成路由转发功能,比如主机可以配置路由转发。

所以,回包中的 TTL 表示目标主机返回的报文到达本机后,从它预设的 TTL 值减小到现在的值。

5.2 开启和禁用 ping 响应

有时为了保护主机,很多时候我们需要禁止 ICMP 协议,在这种情况下,终端再使用ping命令检测,服务器不会再做出任何响应。

(1)临时开启 ping。

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

(2)临时禁用 ping。

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

(3)永久禁用 ping。在配置文件 /etc/sysctl.conf 中增加如下一行。修改完成后执行sysctl -p使新配置生效

net.ipv4.icmp_echo_ignore_all=1          # 1 表示禁止

(4)永久开启 ping。在配置文件 /etc/sysctl.conf 中增加如下一行。修改完成后执行 sysctl -p 使新配置生效。

net.ipv4.icmp_echo_ignore_all=0          # 0 表示允许

参考文献

[1] ping(8) manual
[2] CSDN.ping命令详解
[3] CSDN.【Linux】一步一步学Linux——ping命令(150)

Linux 命令(109)—— ping 命令相关推荐

  1. linux怎么知道ping命令,教程方法;通过ping命令查看服务器类型(linux还是windows系列)电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;通过ping命令查看服务器类型(linux还是windows系列)电脑技巧,以下是给大家带来的教程方法;通过ping命令查看服务器类型(linux还是windows系列),大家 ...

  2. linux命令之ping命令

    Linux系统的ping 命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说"ping一下某机器,看是不是开着".不能打开网页时会说"你先ping网关地 ...

  3. linux下,fping命令与ping命令解析

    ping Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性. 1.命令格式: ping [参数] [主机名或IP地址] 2.命令功能: ping命令用于:确定网络和各外部 ...

  4. linux中ping命令详解,linux中的ping命令的详细解释

    linxu下的ping命令的主要功能就是确定网络状态,下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux的ping命令的详细解释的相关知识,希望对大家有帮助! 一.linux中的 ...

  5. linux fping参数,linux下,fping命令与ping命令解析

    ping Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性. 1.命令格式: ping [参数] [主机名或IP地址] 2.命令功能: ping命令用于:确定网络和各外部 ...

  6. linux ping程序设计与实现,一步步学Linux网络编程--ping命令的实现分析

    先来说说ping程序的原理吧,其实挺简单,就是一个主机系统向另外一个主机系统说:I love you(ICMP报文),然后那个主机如果相信你或者说想和你通信,和你心知心,那它就把收到的I love y ...

  7. linux使用ping命令ping本机,Linux下使用ping命令判断网络的好坏

    简介 在Linux系统里面如果想判断网络的好坏,脑海中蹦出的第一个命令就是ping了. ping命令基本是最常用的网络命令,它可以用来测试与目标主机的连通性. ping通过发送ICMP ECHO_RE ...

  8. linux系统怎么ping命令,Linux系统下的ping命令的使用

    学习计算机网络的时候,常用的网络诊断工具比如ping.ipconfig命令这些都是我们经常要使用的,主要是用来监测网络是否通顺,相信你在Windows中已经是有经常使用过,并且也可以在dos系统下面可 ...

  9. linux ping 命令_Linux ping命令示例

    linux ping 命令 The ping (Packet INternet Groper) command is one of the most widely used utility acros ...

  10. linux中的ping命令

    ping 命令入门详解:http://www.linkwan.com/gb/tech/htm/928.htm Ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议 ...

最新文章

  1. 使用oracle和sqlserver的几点区别【转】
  2. 数据的预处理与特征构建(申请评分卡模型)
  3. 音乐游戏 简单模拟,字符串,cin.get,getchar,流同步(女赛)
  4. manjaro笔记本显卡驱动_从入门到高端!AMD Radeon RX 500系列移动显卡全解析
  5. pyQt4 for mac OS 10.8
  6. 硬件:开机如何进BIOS,U盘启动快捷键一键查询!
  7. 中国版Azure 文件服务
  8. 射电天文谱线接收机和终端系统
  9. SQL Server中的登录触发器概述
  10. java只修改变的字段_修改Java中的最终字段
  11. 华为鸿蒙开源!敢为全球第一全场景分布式 OS,可替换 Android!
  12. xampp 中 mysql的相关配置
  13. 给你的页面加一个百度地图
  14. nginx cache 总结
  15. (李嘉诚)教你投资理财
  16. 区块链开发者观点: 来自 EOS 三国的 Jimmy Gong
  17. “超限效应”和“改宗心理效应”
  18. of vs 和 pj 2013各个版本
  19. 学历到底是敲门砖还是枷锁?—探讨“孔乙己文学”热搜背后的教育话题
  20. Python 黑帽编程1.2 基于VS Code构建Python开发环境 --转载---玄魂工作室

热门文章

  1. 联合国超10万名员工记录遭泄露
  2. H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器
  3. Mac 安装php redis扩展
  4. lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)
  5. 选择WebSockets还是REST?
  6. Xilinx产品与及开发工具2017
  7. 有关 !DOCTYPE HTML
  8. 考试全程指导读书笔记1 -Chap1 信息系统基础
  9. AD 组策略应用与排错(2排错)
  10. java 无法import_ImportError:无法导入名称X