两机只能单向Ping通的原因、ping的原理

今天遇到一个问题,本机ping通虚拟机,但是虚拟机ping不通本机。请教后才知道是我的防火墙开了,挡掉了。特此学习一个ping

一、什么是 PING:

        它是用来检查网络是否通畅或者网络连接速度的命令,使用ICMP(Internet控制报文协议)。 它所利用的原理是这样的:网络上 的机器都有唯一确定的 IP 地址,我们给目标 IP 地址发送一个数据包,对方就要返回一个同 样大小的数据包, 根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机 的操作系统等。

Ping 是 Windows 、linux自带的一个可执行命令。ping 指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行 ping 命令抢占你的网络资 源,导致系统变慢,网速变慢。严禁 ping 入侵作为大多数防火墙的一个基本功能提供给用 户进行选择。通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保 护你的电脑

二、PING的工作流程

我们以下面一个网络为例:有 A、B、C、D 四台机子,一台路由 RA,子网掩码均为 255.255.255.0,默认路由为 192.168.0.1 [1]

1.在同一网段内

 在主机 A 上运行“Ping 192.168.0.5”后,都发生了些什么呢? 首先,Ping 命令会构建一个 固定格式的 ICMP 请求数据包, 然后由 ICMP 协议将这个数据包连同地“192.168.0.5”一起 交给IP 层协议(和 ICMP 一样,实际上是一组后台运行的进程),IP 层协议将以地址 “192.168.0.5”作为目的地址,本机 IP 地址作为源地址,加上一些其他的控制信息,构建一 个 IP 数据包,并想办法得到 192.168.0.5 的MAC 地址(物理地址,这是数据链路层协议构 建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建一个数据帧。关键就 在这里,IP 层协议通过机器 B 的 IP 地址和自己的子网掩码,发现它跟自己属同一网络,就 直接在本网络内查找这台机器的 MAC,如果以前两机有过通信,在 A 机的 ARP 缓存表应该 有 B 机 IP 与其 MAC 的映射关系,如果没有,就发一个 ARP 请求广播,得到 B 机的 MAC, 一并交给数据链路层。后者构建一个数据帧,目的地址是 IP 层传过来的物理地址,源地址 则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送 出去。 主机 B 收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合, 则接收;否则丢弃。接收后检查该数据帧,将 IP 数据包从帧中提取出来,交给本机的 IP 层 协议。同样,IP 层检查后,将有用的信息提取后交给 ICMP 协议,后者处理后,马上构建 一个 ICMP 应答包,发送给主机 A,其过程和主机 A 发送 ICMP 请求包到主机 B 一模一样。

2.不在同一网段内

在主机 A 上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到 MAC 地址时,IP 协议通过计算发现 D 机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的 MAC 取过来,至于怎样得到路由的 MAC,跟上面一样,先在 ARP 缓存表找,找不到就广 播吧。路由得到这个数据帧后,再跟主机 D 进行联系,如果找不到,就向主机 A 返回一个 超时的信息。

计算机网络的学问很多啊,要把课本拿出来翻一翻了

(参考自:http://blog.csdn.net/zhuying_linux/article/details/6770730)




你可能感兴趣的:(网络)