ICMP协议是“Internet Control Message Ptotocol”(因特网控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。缓存
Ping(Packet Internet Groper),因特网包探索器,用于验证网络链接(TCP/IP)的连通性。使用Ping命令向目标主机或IP地址发送ICMP回应请求,验证主机可否链接到TCP/IP网络和网络资源,也能够用其隔离网络硬件和不兼容配置。根据返回的信息,能够推断TCP/IP参数是否配置正确,以及运行是否正常、网络是否通畅等。服务器
其实,Ping就是一个测试程序,一般用Ping目标主机的IP地址或域名地址,看它是否响应,来判断网络的连通性。若是Ping运行正确,大致上就能够排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障,从而缩小问题范围。但因为能够自定义所发数据报的大小及无休止的高速发送,ping也被某些别有用心的做为DDOS(拒绝服务攻击)的工具;网络
命令格式以下:工具
ping 目标主机地址(IP或者域名)[参数]测试
下图显示了一些有用的Ping命令选项spa
测试方式:code
出现提示消息以下:blog
示例:有A、B、C、D四台机子(其中A、B的IP分别为192.168.0.4-192.168.0.5,子网掩码均为255.255.255.0;C、D的IP分别为192.168.1.3-192.168.1.4,子网掩码均为255.255.255.0),一台路由RA链接以上两个子网。进程
1)、在同一网段ip
在主机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地址、本身的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返回一个超时的信息。