What is ping?---什么是ping

本文详细介绍了Ping命令的功能、用途、参数详解以及如何利用Ping命令进行网络故障排查。包括了本地网络、网关和远程网络的Ping命令使用示例,并深入探讨了参数如-t、-a、-n、-l、-f、-i、-v、-r、-s、-j、-k、-w等的含义和作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

是DOS命令,一般用于检测网络通与不通

PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP回声清求消息给目的地并报告是否收到所希望的ICMP回声应答.

它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。

Ping 是Windows系列自带的一个可执行命令。利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障。应用格式:Ping IP地址。该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。

1.Ping本机IP

例如本机IP地址为:172.168.200.2。

则执行命令Ping 172.168.200.2。

如果网卡安装配置没有问题,则应有类似下列显示:

Replay from 172.168.200.2 bytes=32 time<10ms

Ping statistics for 172.168.200.2

Packets Sent=4 Received=4 Lost=0 0% loss

Approximate round trip times in milli-secondsMinimum=0ms

Maxiumu=1ms Average=0ms

如果在MS-DOS方式下执行此命令显示内容为:Request timed out,则表明网卡安装或配置有问题。将网线断开再次执行此命令,如果显示正常,则说明本机使用的IP地址可能与另一台正在使用的机器IP地址重复了。如果仍然不正常,则表明本机网卡安装或配置有问题,需继续检查相关网络配置。

2.Ping网关IP

假定网关IP为:172.168.6.1,则执行命令Ping 172.168.6.1。在MS-DOS方式下执行此命令,如果显示类似以下信息:

Reply from 172.168.6.1 bytes=32 time=9ms TTL=255

Ping statistics for 172.168.6.1

Packets Sent=4 Received=4 Lost=0

Approximate round trip times in milli-secondsMinimum=1ms

Maximum=9ms Average=5ms

则表明局域网中的网关路由器正在正常运行。反之,则说明网关有问题。

3.Ping远程IP

这一命令可以检测本机能否正常访问Internet。比如本地电信运营商的IP地址为:202.102.48.141。在MS-DOS方式下执行命令:Ping 202.102.48.141,如果屏幕显示:

Reply from 202.102.48.141 bytes=32 time=33ms TTL=252

Reply from 202.102.48.141 bytes=32 time=21ms TTL=252

Reply from 202.102.48.141 bytes=32 time=5ms TTL=252

Reply from 202.102.48.141 bytes=32 time=6ms TTL=252

Ping statistics for 202.102.48.141

Packets Sent=4 Received=4 Lost=0 0% loss

Approximate round trip times in milli-secondsMinimum=5ms

Maximum=33ms Average=16ms

则表明运行正常,能够正常接入互联网。反之,则表明主机文件(windows/host)存在问题。

--PING命令参数详解

-a 将目标的机器标识转换为ip地址

-t 若使用者不人为中断会不断的ping下去

-c count 要求ping命令连续发送数据包,直到发出并接收到count个请求

-d 为使用的套接字打开调试状态

-f 是一种快速方式ping。使得ping输出数据包的速度和数据包从远程主机返回一样快,或者更快,达到每秒100次。在这种方式下,每个请求用一个句点表示。对于每一个响应打印一个空格键。

-i seconds 在两次数据包发送之间间隔一定的秒数。不能同-f一起使用。

-n 只使用数字方式。在一般情况下ping会试图把IP地址转换成主机名。这个选项要求ping打印IP地址而不去查找用符号表示的名字。如果由于某种原因无法使用本地DNS服务器这个选项就很重要了。

-p pattern 拥护可以通过这个选项标识16 pad字节,把这些字节加入数据包中。当在网络中诊断与数据有关的错误时这个选项就非常有用。

-q 使ping只在开始和结束时打印一些概要信息。

-R 把ICMP RECORD-ROUTE选项加入到ECHO_REQUEST数据包中,要求在数据包中记录路由,这样当数据返回时ping就可以把路由信息打印出来。每个数据包只能记录9个路由节点。许多主机忽略或者放弃这个选项。 -r 使ping命令旁路掉用于发送数据包的正常路由表。

-s packetsize 使用户能够标识出要发送数据的字节数。缺省是56个字符,再加上8个字节的ICMP数据头,共64个ICMP数据字节。

-v 使ping处于verbose方式。它要ping命令除了打印ECHO-RESPONSE数据包之外,还打印其它所有返回的ICMP数据包。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++

==============================================================================

===

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++《

ping的参数!》

Ping 命令可以用来验证与远程计算机的连接。(该命令只有在安装了TCP/IP协议后才能使用)

ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list

参数说明:

-t :一直Ping指定的计算机,直到从键盘按下Control-C中断。

-a :将地址解析为计算机NetBios名。

-n :发送count指定的ECHO数据包数。,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助。能 够测试发送数据包的返回平均时间,及时间的快慢程度。默认值为 4。

-l :发送指定数据量的ECHO数据包。默认为 32 字节;最大值是65500byt。

-f :在数据包中发送“不要分段”标志,数据包就不会被路由上的网关分段。通常你所发送的数据包都会通过路由分 段再发送给对方,加上此参数以后路由就不会再分段处理。

-i :将“生存时间”字段设置为TTL指定的值。指定TTL值在对方的系统里停留的时间。同时检查网络运转情况的。

-v :tos 将“服务类型”字段设置为 tos 指定的值。

-r :在“记录路由”字段中记录传出和返回数据包的路由。通常情况下,发送的数据包是通过一系列路由才到达目 标地址的,通过此参数可以设定,想探测经过路由的个数。限定能跟踪到9个路由。

-s :指定 count 指定的跃点数的时间戳。与参数-r差不多,但此参数不记录数据包返回所经过的路由,最多只记 录4个。

-j :利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源) IP 允许的 最大数量为 9。

-k :computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格 源)IP 允许的最大数量为 9。

-w:timeout 指定超时间隔,单位为毫秒。

destination-list: 指定要 ping 的远程计算机。

一般情况下,通过ping目标地址,可让对方返回TTL值的大小,通过TTL值可以粗略判断目标主机的系统类型是Windows还是UNIX/Linux,

一般情况下Windows系统返回的TTL值在100-130之间,而UNIX/Linux系统返回的TTL值在240-255之间。但TTL的值是可以修改的。故此种方法可作为参考.

一般操作方法如下:

C:\>ping www.yahoo.com

Pinging www.yahoo.akadns.net [66.218.71.81] with 32 bytes of data:

Reply from 66.218.71.81: bytes=32 time=160ms TTL=41

Reply from 66.218.71.81: bytes=32 time=150ms TTL=41

Reply from 66.218.71.81: bytes=32 time=160ms TTL=41

Reply from 66.218.71.81: bytes=32 time=161ms TTL=41

Ping statistics for 66.218.71.81: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 150ms, Maximum = 161ms, Average = 157ms

### 关于 'Network is unreachable' 的原因分析 当执行 `ping` 命令时如果遇到 `'Network is unreachable'` 错误,通常表明目标网络不可达。这可能是由于以下几个原因之一: 1. **私有网络未正常工作** 如果私有网络存在问题,则可能导致无法访问目标主机。可以通过尝试 `ping` 或者 `traceroute` 来确认是否存在路径上的阻塞或者防火墙干扰的情况[^1]。 2. **路由配置错误** 路由表可能缺少到达目标网络的正确条目。可以使用命令 `route -n` 查看当前系统的路由表,并验证是否有到目标子网的有效路由。 3. **接口状态异常** 网络接口可能存在物理层或链路层问题(例如断线、交换机端口禁用)。可运行 `ifconfig` 或 `ip addr show` 检查相关网络接口的状态是否为 UP 和 RUNNING。 4. **防火墙阻止通信** 防火墙可能会拦截 ICMP 数据包从而导致 `ping` 失败。即使 `ping` 不通,也可以通过其他工具如 `telnet` 测试特定端口连通性来进一步排查问题。 5. **DNS 解析失败** 若目标地址是一个域名而非 IP 地址,则需确保本地 DNS 设置无误并能成功解析该名称至对应 IP 地址;否则也会引发类似的错误提示。 针对上述情况的具体解决方案如下所示: #### 方法一:检查网络连接性和硬件状况 ```bash # 使用 ethtool 工具检测以太网卡的工作模式以及信号质量等参数 ethtool eth0 ``` #### 方法二:调整超时设置避免长时间等待响应 对于某些场景下因服务器主动切断闲置链接所引起的 “MySQL server has gone away”,可通过修改客户端会话保持时间参数规避此现象发生[^3]: ```sql SET SESSION wait_timeout=28800; -- 将 session timeout 设定为 8小时 ``` 另外,在程序设计层面考虑加入重试机制以便自动恢复失效的数据库连接资源池管理策略亦非常重要。 --- ### 提供一段 Python 实现简单的 Ping 功能代码作为辅助诊断手段之一 下面给出了一段基于 socket 库模拟发送 ICMP 请求的小型应用程序例子用于初步判断远程主机可达性的可能性: ```python import os, sys, struct, time, select from socket import * def checksum(source_string): sum = 0 count_to = (len(source_string)/2)*2 count = 0 while count<count_to: this_val = ord(source_string[count + 1])*256 + ord(source_string[count]) sum += this_val sum &= 0xffffffffL count+=2 if count_to<len(source_string): sum += ord(source_string[len(source_string)-1]) sum &= 0xffffffffL sum = (sum >> 16) + (sum & 0xffff) sum += (sum >>16) answer = ~sum & 0xffff answer = htons(answer) return answer ICMP_ECHO_REQUEST = 8 def do_one(dest_addr, timeout): try: my_socket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP) my_ID = os.getpid() & 0xFFFF header = struct.pack('bbHHh', ICMP_ECHO_REQUEST, 0 ,my_checksum, my_ID, 1 ) data = struct.pack('d',time.time()) packet = header +data delay = receive_one_ping(my_socket, my_ID, timeout) my_socket.close() return delay except Exception as e : print(e) def receive_one_ping(my_socket, ID, timeout): time_left = timeout while True: started_select = time.time() what_ready = select.select([my_socket], [], [], time_left) how_long_in_select = (time.time()-started_select) if what_ready[0]==[] : return None recPacket,addr=my_socket.recvfrom(1024) icmpHeader =recPacket[20:28] type, code,checksum,packetID,sequence=struct.unpack('bbHHh',icmpHeader ) if type !=8 and packetID ==ID: bytesInDouble = struct.calcsize('d') timeSent = struct.unpack('d', recPacket[28:28+bytesInDouble])[0] return (time.time()-timeSent)*1000 time_left -=how_long_in_select if time_left<=0: return if __name__=='__main__': dest="www.google.com" print(do_one(dest,1)) ``` 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值