ping命令基本使用详解

article/2025/10/7 5:17:02

ping命令原理

ping命令是用来探测本机与网络中另一主机之间是否可通的命令,如果两台主机之间ping不通,则表明这两台主机不能建立起连接。
ping命令位于7层协议的网络层。
ping 命令是基于 ICMP 协议来工作的,ICMP为 Internet 控制报文协议。ping 命令会发送一份ICMP回显请求报文给目标主机,并等待目标主机返回ICMP回显应答。因为ICMP协议会要求目标主机在收到消息之后,必须返回ICMP应答消息给源主机,如果源主机在一定时间内收到了目标主机的应答,则表明两台主机之间网络是可达的。

对方服务器禁用ping 命令的原因

出于安全因素或避免网络拥堵等原因,禁用了ping。ping除了用在网络诊断上,还为网络攻击者查找潜在攻击目标提供了方便;不响应ping可以降低系统的安全风险。

操作方法
Linux系统可以通过系统内核参数或防火墙来禁止ping。

  • 内核参数禁用ping
    如果你想禁用ping,只需要设置内核参数icmp_echo_ignore_all,此参数如果设置为非0,Linux会忽略所有ICMP_ECHO请求包。
[root@ljh2020 ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

这个命令会立即生效,如果需要启用ping命令,将这个参数设置为0即可。

[root@ljh2020 ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

当然,这个设置只对当前环境生效,如果服务器重启时,这个设置就会失效。如果要永久生效,那么可以在配置文件/etc/sysctl.conf 增加参数net.ipv4.icmp_echo_ignore_all = 1,然后使用sysctl -p使之生效。当然,你也可以使用下面命令实现:

禁止ICMP包通行   echo net.ipv4.icmp_echo_ignore_all=1 >>/etc/sysctl.conf   
允许ICMP包通行   echo net.ipv4.icmp_echo_ignore_all=0 >>/etc/sysctl.con
  • 防火墙禁用ping
    通过防火墙层面禁用ping,可以使用下面命令
 # iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP 

执行上面命令后,就会在/etc/sysconfig/iptables里面多了下面专业这样一条规则。然后使用命令service iptables restart重启防火墙服务,就不能ping了

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited   

个人在测试时,发现如果/etc/sysconfig/iptables里面如果还有下面这样一条规则,那么上面命令就不会生效。所以在使用命令时,最后检查一下配置文件。

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT  

当然,你可以直接设置iptables的配置文件,在/etc/sysconfig/iptables里面,直接修改

-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT   #允许ping
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j DROP     #禁止ping   

注意,可能不同版本的防火墙设置有所区别,这里只在RHEL 5下面测试过,并没有测试其它平台。

ICMP协议

简述
ICMP(Internet Control Message Protocol)因特网控制报文协议。它是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是在网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP协议与ARP协议不同,ICMP靠IP协议来完成任务,所以ICMP报文中要封装IP头部。它与传输层协议(如TCP和UDP)的目的不同,一般不用来在端系统之间传送数据,不被用户网络程序直接使用,除了想Ping和Tracert这样的诊断程序。

格式
ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。
在这里插入图片描述
各字段说明
类型:占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。
代码:占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。
校验和:这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的。
标识:占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。

ping用法

1、用来检测网络的连通情况和分析网络速度
2、根据域名得到服务器 IP
3、根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。

命令参数:

  • -d 使用Socket的SO_DEBUG功能。
  • -f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。
  • -n 只输出数值。
  • -q 不显示任何传送封包的信息,只显示最后的结果。
  • -r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
  • -R 记录路由过程。
  • -v 详细显示指令的执行过程。
  • -c 数目:在发送指定数目的包后停止。
  • -i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
  • -I 网络界面:使用指定的网络界面送出数据包。
  • -l 前置载入:设置在送出要求信息之前,先行发出的数据包。
  • -p 范本样式:设置填满数据包的范本样式。
  • -s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
  • -t 存活数值:设置存活数值TTL的大小。

使用示例

1、我们通常会用它来直接 ping ip地址,来测试网络的连通情况。

[root@ljh2020 ~]# ping 127.0.0.1
PING 127.0.01 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.015 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.047 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.022 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.023 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.034 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.056 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.029 ms

参数说明:

  • bytes 值:数据包大小,也就是字节。
  • time 值:响应时间,这个时间越小,说明你连接这个地址速度越快。
  • TTL 值:Time To Live, 表示 DNS 记录在 DNS 服务器上存在的时间,它是 IP 协议包的一个值,告诉路由器该数据包何时需要被丢弃。可以通过 Ping 返回的 TTL 值大小,粗略地判断目标系统类型是 Windows 系列还是 UNIX/Linux 系列。
    注:
  • 默认情况下,Linux 系统的 TTL 值为 64 或 255,WindowsNT/2000/XP 系统的 TTL 值为 128,Windows98 系统的 TTL 值为 32,UNIX 主机的 TTL 值为 255。
  • 因此一般 TTL 值:100~130ms 之间为Windows 系统 ;240~255ms 之间为UNIX/Linux 系统。

2、Linux中需要手动终止命令ctrl+c,也可以使用-c 来指定次数

[root@ljh2020 ~]# ping -c 2 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.021 ms
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.013/0.017/0.021/0.004 ms

3、ping域名,获取ip

[root@ljh2020 ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=51 time=12.4 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=51 time=12.4 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 12.427/12.456/12.486/0.115 ms

4、-t 指定ttl(TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。)

[root@ljh2020 ~]# ping  -t 255 baidu.com  
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=51 time=12.4 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=51 time=12.4 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=51 time=12.4 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=4 ttl=51 time=12.4 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 12.461/12.477/12.497/0.137 ms   

5、-i 指定间隔时间
每2秒ping下百度

[root@ljh2020 ~]# ping  -i 2  baidu.com  
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=50 time=9.17 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=50 time=9.02 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 9.022/9.098/9.174/0.076 ms

6、-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。

[root@ljh2020 ~]# ping -f baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
.^C
--- baidu.com ping statistics ---
2062 packets transmitted, 2061 received, 0% packet loss, time 25232ms
rtt min/avg/max/mdev = 12.374/12.482/22.003/0.405 ms, pipe 2, ipg/ewma 12.242/12.465 ms

7、-s 设置发送包的大小

[root@ljh2020 ~]# ping -s 500  220.181.38.148
PING 220.181.38.148 (220.181.38.148) 500(528) bytes of data.
508 bytes from 220.181.38.148: icmp_seq=1 ttl=51 time=12.5 ms
508 bytes from 220.181.38.148: icmp_seq=2 ttl=51 time=12.5 ms
508 bytes from 220.181.38.148: icmp_seq=3 ttl=51 time=12.5 ms
508 bytes from 220.181.38.148: icmp_seq=4 ttl=51 time=12.5 ms
^C
--- 220.181.38.148 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 12.506/12.517/12.526/0.079 ms

8、多参数使用
-i 3 发送周期为 3秒 -s 设置发送包的大小为1024 -t 设置TTL值为 255

[root@ljh2020 ~]# ping -i 3 -s 1024 -t 255 220.181.38.148
PING 220.181.38.148 (220.181.38.148) 1024(1052) bytes of data.
1032 bytes from 220.181.38.148: icmp_seq=1 ttl=51 time=12.5 ms
1032 bytes from 220.181.38.148: icmp_seq=2 ttl=51 time=12.4 ms
^C
--- 220.181.38.148 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 12.476/12.497/12.518/0.021 ms

9、在pc端运行ping命令:
在这里插入图片描述
上图显示的内容包括目标ip地址、ping的包大小(btyes)、数据往返一次的用时(time)、发送的包数(Sent)、接收(Received)和丢失的包数(Lost:网络丢包多,tcp 协议会自动重发(tcp 三次握手,连接成功
连接成功后,开始数据交换,如果丢包了,重发一次),甚至重连),以及TTL值等。TTL值:是IP数据包在计算机网络中可以转发的最大跳数,根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量,也就是时长

3.什么情况下用这个命令

比如客户端程序在 pc 上运行,连接阿里云服务器程序不通, ping 一下阿里云主机IP,查看网络是否是通的。如果丢包次数过多,就说明服务端的网络不好


http://chatgpt.dhexx.cn/article/EhoNSYsC.shtml

相关文章

Linux ping命令详解

ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。 语法 ping(选项)(参数) 选项 -d:使用Socket的SO…

ping命令详解 ping不通处理方法

概述: Ping命令是一种用来测试ip层网络层可达的命令,属于icmp层的探查消息。当网络访问出现故障时,用来执行测试网络导通性,根据ping的结果回显来判断问题可能在哪里? ping命令发出包是icmp协议的查询消息&#xff0c…

ping 命令的基本使用

ping 命令的基本使用 一、主要作用二、返回值参数的意义三、ping参数四、常用1、-c2、-n3、-i4、-p5、-r6、-R7、-s8、-S9、-t10、批量ping网段 五、如何禁止他人ping你的IP 一、主要作用 1.用来检测网络的连通情况和分析网络速度 2.根据域名得到服务器ip 3.根据ping返回的TTL…

图解:Ping 命令的工作原理

目录 一、ping 命令使用的是 ICMP 协议 二、ping —— 工作原理分析 1、打个 ICMP 数据包 - 网络层 2、打个 IP 数据包 - 网络层: 3、加入 Mac 头信息 - 数据链路层 4、接收端 拆解包:物理层-数据链路层-网络层 5、接收端 构建响应包,…

ping命令整个过程详解

转自:http://wanicy.blog.51cto.com/509018/335207/ 如果你想了解ping命令的原理,看了这篇文章,你会从对网络一窍不通,到豁然开朗。 先看拓朴图: 在这里讲ping的两情况:一种是同一网段内,一种…

计算机网络——ping命令过程的详解、原理

目录 一、ping命令是用来做什么的? 1、ICMP是什么呢? 2、ping命令和icmp的关系 二、ping命令的使用 三、ping过程的原理 ping过程的详解 1、ping的是相同网段 2、使用 Cisco实验拓扑图来演示这个原理: 3、ping不同网段之间的ip 4、使…

ping命令讲解

ping命令个人讲解(日常使用) 最近正在复习、研究DOS命令时,了解到之前个人理解的ping命令时对其功能作用了解模糊不清,近日在教学视频和查找网络资料,对ping命令有了如下见解: ping命令的使用方式 使用&…

ping命令的使用

ping命令的使用 一、ping命令的基本概念 ping是一个十分基本但又十分重要的TCPIP网络工具。它的作用主要为: (1)通常用来检测网络的连通情况和测试网络速度; (2)也可以根据域名得到相应主机的IP地址; (3)根据ping返回的TTL值来判断对方所使用的操作系统…

ping 命令的用法大全(图文详解)

1、ping/? :ping命令使用帮助。(用法如下图) 2、无参数 ping :在默认情况下,一般都是只发送四个32字节数据包,通过这个命令从数据包返回的最短时间、最长时间、平均时间可以衡量网络速度、延迟&#xff0c…

Linux命令详解(1)ping命令

之前写过一个简版的ping命令介绍。看的人比较多。这次决心写一个新的,尽可能详细的版本。 -c选项,这个选项设定对目标主机地址发送请求次数。 例子1:对网关和一个不存在的主机地址执行ping -c2 如图,对网关发松了2个包&#xff…

【Ping命令的使用】

目录 前言1、Ping命令的使用方法总结 前言 ping命令常用来检测局域网内网络信号发送与接收的检测以及网络速度的检测,还可以用来判断网络是否存在故障等,对于网络运维人员来说,经常会用到,是最实用最常用的网络命令之一。 Ping命…

Ping命令详解(使用Ping这命令来测试网络连通)

相关知识点 BIOS 在计算机领域,BIOS是 "Basic Input Output System"的缩略语,译为"基本输入输出系统", 与前者读法相同。计算机在运行时,首先会进入BIOS,它在计算机系统中起着非常重要的作用。一块…

Ping 命令详解

简述: ICMP协议是“Internet Control Message Protocol”(因特网控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。 ping (Packet Internet Groper),因特网包探索器&#xf…

ping命令详解 ping命令入门详解

在这个时代,科技越来越发达,网络已经越来越成为人们不可缺少的一部分。计算机也已经是很多学校的课程了,因为计算机技术是非常有技术性的专业,它其中涉及到很多专业知识,需要通过学习才能掌握。今日小编就为大家介绍一…

ping命令(详解)

简述: ICMP协议是“Internet Control Message Protocol”(因特网控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。 ping (Packet Internet Groper),因特网包探索器&#xf…

Ubuntu系统中清理DNS缓存

在下一篇文章中,我们将看一看 我们如何在Ubuntu中刷新DNS缓存。 DNS被认为是Internet连接的关键部分之一。 目的是更快地访问访问的网站。更常见的是,我们的机器会跟踪DNS记录,或者将其缓存。 迄今为止,IP地址的命名是DNS协议中…

DNS 缓存查看以及清除(转载)

转载地址:https://blog.csdn.net/cogbee/article/details/27535039 你是否因修改网站DNS解析后,却因本机DNS缓存而需要等待... 你是否遇到修改了本机的hosts文件后,必须重起firefox和ie才起作用... 其实只要清空DNS缓存这些问题都可以解决。 …

【DNS】Linux上DNS缓存的开启和清理

DNS 缓存是一个临时数据库,用于存储有关以前的 DNS 查找的信息。 换句话说,每当你访问网站时,你的操作系统和网络浏览器都会保留该域和相应 IP 地址的记录。 这消除了对远程 DNS 服务器重复查询的需要,并允许你的 OS 或浏览器快…

如何刷新DNS缓存(Windows,Mac,Chrome)

对网站进行故障排除可能是一个令人生畏的责任。当涉及到诸如刷新域名服务器(DNS)缓存之类的任务时,在您开始之前就很容易感到不知所措和困惑。 幸运的是,即使没有什么技术经验,您也可以快速,轻松地执行此特…

如何清除浏览器的 DNS 缓存:Chrome、Edge、Firefox、Safari

请访问原文链接:https://sysin.org/blog/clear-browser-dns-cache/,查看最新版。原创作品,转载请保留出处。 作者:gc(at)sysin.org,主页:www.sysin.org 对普通用户而言,关闭后重新打开浏览器一…