在网络应用中,ping速度和IP地址是很常见的命令,但是你知道ping是怎么工作的吗?要知道其中的奥秘,我们有必要看看Ping命令是如何工作的。接下来,今天,我将向您介绍ping命令的详细信息。
假设主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,两者都在同一个子网,那么在主机A上运行' Ping 192.168.1.2 '会发生什么?
首先Ping命令会构造一个固定格式的ICMP请求包,然后ICMP协议会把这个包连同地址‘192 . 168 . 1 . 2’一起交付给IP层协议(和ICMP一样,实际上是一组在后台运行的进程)。IP层协议将使用地址“192.168.1.2”作为目的地址,使用本地IP地址作为源地址,加上一些其他控制。构建一个IP数据包,在一个映射表中找出IP地址192.168.1.2对应的物理地址(也叫mac地址,熟悉网卡配置的朋友不会陌生,这是数据链路层协议构建数据链路层传输单元3354帧所必需的),交给数据链路层。后者构造一个数据帧,目的地址是IP层传来的物理地址,源地址是本地计算机的物理地址,并附加一些控制信息,按照以太网的介质访问规则传输。
接收到这个数据帧后,主机首先检查它的目的地址,并与主机的物理地址进行比较。如果匹配,它将接收它。否则,丢弃。在接收和检查数据帧之后,从帧中提取IP数据包,并将其移交给机器的IP层协议。类似地,在IP层检查之后,它提取有用的信息并将其提供给ICMP协议。后者处理后,立即构造ICMP响应包并发送给主机A,其过程与主机A向主机b发送ICMP请求包完全相同。
从Ping的工作过程中,我们可以知道主机A收到了主机B的回复包,这表明两台主机之间的往返路径是正常的。也就是说,无论是从主机A到主机B,还是从主机B到主机A都是正常的。那么,是什么导致了单向Ping?
首先,安装个人防火墙。
出于安全原因,大多数共享互联网的计算机都安装了个人防火墙软件,而作为客户端的其他计算机一般不安装。默认情况下,几乎所有的个人防火墙软件都不允许其他机器Ping这台机器。通常的做法是过滤掉来自外部的ICMP请求消息,但它不会对来自本地机器的ICMP请求消息和来自外部的ICMP回复消息施加任何限制。这样Ping,从这台机器ping其他机器的时候,如果网络正常,就不会有问题。但如果从其他机器Ping这台机器,即使网络正常,也会出现‘超时无响应’的错误。大多数单向Ping现象都源于此。解决方法也很简单,根据你使用的防火墙类型的不同,调整相应的设置即可。
第二,错误地设置IP地址
正常情况下,一台主机应该有一个网卡、一个IP地址,或者多个网卡和多个IP地址(这些地址必须在不同的IP子网中)。但是对于公共场所使用的电脑,尤其是网吧,人多手多,其中没有‘探索者’。曾经,这种单向Ping发生在两台计算机之间。仔细检查后发现,其中一台电脑的‘拨号网络适配器’(相当于软网卡)的TCP/IP设置设置了一个与网卡IP地址在同一子网的IP地址。这样,根据IP层协议,这台主机在同一个网段有两个不同的接口。当从这台主机Ping其他机器时,会出现这样的问题:
(1)主机不知道将数据包发送到哪个网络接口,因为同一个网段有两个网络接口相连;
(2)主机不知道使用哪个地址作为数据包的源地址。所以,如果你从这台主机Ping其他机器,IP层协议就处理不了。超时后,Ping会给出“超时后无响应”的错误消息。但是,当从其他主机Pinging该主机时,请求数据包来自特定的网卡。ICMP只需要交换目的地址和源地址,并更改一些标志,就可以顺利发出ICMP回复包,其他主机也可以ping通这台机器。
相信你在这里已经对ping命令有了详细的了解。对于ping命令,我们经常用它来检测局域网中网络信号的收发,网速的检测,3还可以判断网络是否有故障等等。对于经常接触网络的朋友来说,ping命令是大家经常需要用到的命令。