Chinaunix首页 | 论坛 | 博客
  • 博客访问: 401813
  • 博文数量: 41
  • 博客积分: 696
  • 博客等级: 上士
  • 技术积分: 727
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-04 20:41
文章分类

全部博文(41)

文章存档

2012年(41)

分类: LINUX

2012-03-24 09:22:52

Ping过程详解

         Ping命令的主要作用的是检查网络的连通情况和检测网络的速度。相信大家都用过Ping命令,下面主要介绍一下Ping命令是怎样一个执行过程。

         主要的Ping有两种情况,一种是同一网段,一种是跨网段的。

         首先看一个拓扑图:

首先,如果主机APing主机B,那么主机A就要封装二层报文,他会先检查自己的MAC地址,如果没有BMAC地址,就会向外发送一个ARP广播包,如图:

        

         其中ARP报文格式如下:

        

         其中OP表示:1:表示ARP请求;2:表示ARP应答;3:表示RARP请求;4:表示RARP应答。

         首先交换机会收到这个报文后,交换机有学习MAC地址的功能,所以他会检索自己有没有保存主机BMAC地址,如果有的,就直接返回给A主机,如果没有,就会向所有端口发送ARP广播,其他主机收到后,发现不是在找自己,就纷纷丢弃了改报文,不去理会,直到主机B收到了报文后,就立即响应,我的MAC地址是多少,同时学到主机AMAC地址,并按同样的ARP报文格式返回给主机A。如图:

        

         ARP报文的格式为:

        

         这时候主机A 学到了主机BMAC地址,就把这个MAC封装到ICMP协议的二层报文中向主机B发送,报文格式如下:

        

         当主机B收到了这个报文后,发现是主机AICMP回显请求,就按同样的格式,返回一个值给主机A,这样就完成了同一网段内的Ping过程。

        

 

如果主机APing主机C,那么主机A发现主机CIP和自己的IP不是同一个网段,他就去找网管转发,但是他也不知道网管的MAC情况下呢?这是就会像前面那个步骤一样,先发送一个ARP广播,学到网关的MAC地址,再发封装包,报文的格式如下:

        

         当路由器收到主机A发过来的ICMP报文,发现自己的母的地址是其本身MAC地址,根据母的地IP地址2.1.1.1,查找路由表,发现2.1.1.1/24的路由表项,得到一个出口指针,去掉原来的MAC头部,加上自己的MAC地址向主机C转发,报文格式如下  

         最后主机C已学到路由器2端口MAC,路由器2端口转发给路由器1端口,路由器端口学到主机AMAC地址的情况下,他们就不需要再做ARP解析,就将ICMP的回显请求恢复过来,报文格式如下:

        

阅读(18870) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~