品牌型网站开发,开发公司虚列成本,中山市网站制作,志愿者协会网站建设转自#xff1a;http://wanicy.blog.51cto.com/509018/335207/ 如果你想了解ping命令的原理#xff0c;看了这篇文章#xff0c;你会从对网络一窍不通#xff0c;到豁然开朗。 先看拓朴图#xff1a; 在这里讲ping的两情况#xff1a;一种是同一网段内#xff0c;一种… 转自http://wanicy.blog.51cto.com/509018/335207/ 如果你想了解ping命令的原理看了这篇文章你会从对网络一窍不通到豁然开朗。 先看拓朴图 在这里讲ping的两情况一种是同一网段内一种是跨网段的ping。 一、同一网段内 首先如果主机A要去ping主机B那么主机A就要封装二层报文他会先查自己的MAC地址表如果没有B的MAC地址就会向外发送一个ARP广播包如图: 其中ARP报文格式如下: 其中OP 1表示ARP请求 2表示ARP应答 3表示RARP请求 4表示RARP应答 首先交换机会收到这个报文后交换机有学习MAC地址的功能所以他会检索自己有没有保存主机B的MAC地址如果有就返回给主机A如果没有就会向所有端口发送ARP广播其它主机收到后发现不是在找自己就纷纷丢弃了该报文不去理会。直到主机B收到了报文后就立即响应我的MAC地址是多少同时学到主机A的MAC地址并按同样的ARP报文格式返回给主机A。如图 ARP报文格式为 这时候主机A学到了主机B的MAC地址就把这个MAC地址封装到ICMP协议的二层报文中向主机B发送报文格式如下 当主机B收到了这个报文后发现是主机A 的ICPM回显请求就按同样的格式返回一个值给主机A这样就完成了同一网段内的ping过程。 在这里讲了这么久的局域网内的PING实际过程的发生不到1毫秒。 二、不同网段内如果主机A要ping主机C那么主机A发现主机C的IP和自己不是同一网段他就去找网关转发但是他也不知道网关的MAC地址情况下呢他就会向之前那个步骤一样先发送一个ARP广播学到网关的MAC地址再发封装ICMP报文给网关路由器.。报文格式如下 当路由器收到主机A发过来的ICMP报文发现自己的目的地址是其本身MAC地址根据目的的IP2.1.1.1查路由表发现2.1.1.1/24的路由表项得到一个出口指针去掉原来的MAC头部加上自己的MAC地址向主机C转发。(如果网关也没有主机C的MAC地址还是要向前面一个步骤一样ARP广播一下即可相互学到。路由器2端口能学到主机D的MAC地址主机D也能学到路由器2端口的MAC地址。)报文格式如下 最后在主机C已学到路由器2端口MAC地址路由器2端口转发给路由器1端口路由1端口学到主机A的MAC地址的情况下他们就不需要再做ARP解析就将ICMP的回显请求回复过来。报文格式大致如下: