windows的ping命令,windows操作系统下的ping命令
win10 ping命令:ping命令的作用和原理。
很多朋友不知道ping是做什么的,怎么用的。今天,边肖将向您介绍win10 ping命令:ping命令的功能和原理。我们遇到网络不通的情况,都知道要ping一下,看看网络情况。你知道ping命令背后的逻辑吗?知道是怎么实现的吗?
访问:
Win10 19h1原图免激活Win10纯版
一、「ping」命令的作用和原理?
简单地说,“ping”是一个命令,用于检测本地计算机是否可以到达网络中的另一台主机。如果两台主机之间的ping失败,这意味着两台主机无法建立连接。Ping是定位网络不通的重要手段。
Ping基于ICMP协议,该协议称为Internet控制消息协议。ping命令将向目标主机发送ICMP回应请求消息,并等待目标主机返回ICMP回应回复。由于ICMP协议要求目标主机在收到消息后,向源主机返回ICMP应答消息,如果源主机在一定时间内收到目标主机的应答,则表明两台主机之间的网络是可达的。
举一个例子来描述“ping”命令的工作过程:
假设有两台主机,主机A(192.168.0.1)和主机B(192.168.0.2)。现在我们想监控主机A和主机B之间的网络是否可达,因此我们在主机A上输入命令:ping 192.168.0.2。
这时ping命令会在主机A上建立一个ICMP请求包(包的内容后面会详细介绍),然后ICMP协议会把这个包和目标IP(192.168.0.2)等信息传递给IP层协议。
IP层协议得到这个信息后,从源地址(即本地IP)、目的地址(即目的IP: 192.168.0.2)和一些其他控制信息构造一个IP数据包。
IP包建好之后,还不够,还需要添加MAC地址。所以需要通过ARP映射表找到目标IP对应的MAC地址。当获得目标主机的MAC地址和本地MAC后,交给数据链路层,组装成数据帧,按照以太网的介质访问规则发送出去。
当主机B接收到这个数据帧时,它将首先检查它的目的MAC地址是否是本地的,如果是,它将接收并处理它。收到后,它会检查这个数据帧,取出数据帧中的IP包,交给主机的IP层协议。IP层协议检查完后,会取出互联网控制报文协议,交给ICMP协议处理。当这一步完成时,它将构造一个ICMP响应包,并将其发送回主机a。
在一定时间内,如果主机A收到响应包,说明主机A和主机B之间的网络是可达的;如果不是,则表示网络不可达。除了监视它是否可到达之外,响应时间和启动时间之间的差值也可以用于计算数据包的延迟时间。
通过ping的过程可以发现,ICMP协议是这个过程的基础,非常重要。因此,下面将详细解释ICMP协议。
二、什么是「 ICMP 」?
众所周知,ping命令是基于ICMP协议的。那么我们看下图就明白了,ICMP协议是通过IP协议发送的,也就是ICMP报文封装在IP包中。
IP协议是一种无连接和不可靠的数据包协议,它不能保证数据将被送达。因此,我们需要其他模块来帮助实现数据传输。这里介绍ICMP协议。
当传输的IP包异常时,ICMP会将异常信息封装在包中,然后发送回源主机。
详细拆解上图看看:
继续分解ICMP协议模块:
从图中可以看出,因特网控制消息协议包括8位类型字段、8位代码字段和16位校验字段以及选项数据。
ICMP协议大致可以分为两类:
查询消息类型
错误消息类型
查询消息类型:
消息主要用于ping查询、子网掩码查询、时间戳查询等。
上面提到的ping命令的过程,其实对应的是ICMP协议查询报文类型的使用。当主机A构建ICMP请求数据包时,其ICMP类型字段使用8(回应请求),当主机B构建ICMP回复数据包时,其ICMP类型字段使用0(回应回复)。更多类型请参考上表。
对于查询报文类型的理解,请参考文章开头的ping过程,这里不再赘述。
消息类型:
错误主要发生在数据传输发送不正确的时候。
包括:目标不可达(网络不可达、主机不可达、协议不可达、端口不可达、分片禁止等。)、超时、参数问题、重定向(网络重定向、主机重定向等。),等等。
该消息通常包含导致错误的IP数据包的第一个片段的IP报头,以及片段数据部分的前8个字节。
当IP包的传输出现错误时(比如主机不可达),ICMP协议会将错误信息打包后发回给源主机,这样源主机就知道如何处理了。
是否可以只在出现错误时使用错误消息类型?不一定。
Traceroute是个例外。Traceroute是一种常用工具,用于检测源主机和目标主机之间的路由。Traceroute的原理是利用ICMP规则制造一些错误事件,然后根据错误事件评估网络路由。
具体做法是:
Traceroute设置一个特殊的TTL值来跟踪源主机和目的主机之间的路由数量。首先,它向目标主机发送一个TTL=1的UDP数据包。那么这个包一旦在路上遇到路由器,TTL就会变成0(TTL规则是每经过一个路由器就减1)。因为TTL=0,所以路由器会把这个包扔掉,然后会生成一个错误类型(超时)的互联网控制报文协议并发回到源主机,这就是错误包。此时,源主机获得第一个路由节点的IP和相关信息。
然后,源主机向目标主机发送另一个TTL=2的UDP数据包。再经历一遍上面的过程,就知道第二个路由节点的IP和耗时信息了。
如此反复,Traceroute可以获得从主机A到主机b的所有路由器的信息。
但是,有一个问题。如果数据包到达目标主机,即使目标主机收到TTL值为1的IP数据包,也不会丢弃该数据包,也不会生成超时ICMP应答数据包,因为该数据包已经到达目的地。那么,我们如何确定数据包是否已经到达目标主机呢?
Traceroute方法是当源主机向目的主机发送UDP包时,会设置一个不可达的目的端口号(例如大于30000的端口号)。然后,当这个包真正到达目的主机时,目的主机发现没有对应的端口号,于是会产生一个“端口不可达”的错误ICMP报文,返回给源主机。
可见Traceroute的原理真的很棘手,很有意思。
三、怎样使用 Ping 这命令来测试网络连通呢?
连通性问题是由多种原因造成的,例如本地配置错误、远程主机协议故障等。当然也包括设备故障。
首先说一下使用Ping命令的步骤。
使用Ping检查连通性有六个步骤:
1.使用ipconfig /all观察本地网络设置是否正确;
2.Ping 127.0.0.1、127.0.0.1环回地址Ping环回地址是检查是否设置了本地TCP/IP协议;
3.Ping本机的IP地址,以检查本机的IP地址是否设置错误;
4.Ping这个网络的网关或者IP地址,从而检查硬件设备是否有问题,或者本地网络连接是否正常;(此步骤在非局域网中可以忽略)
5.Ping本地DNS地址。这样做是为了检查DNS是否可以传输IP。
6.Ping远程IP地址,主要是检查这个网络或者这个机器和外界的连接是否正常。
以上就是边肖今天给大家介绍的win10 ping命令:ping命令的功能和原理的详细内容。