Ping命令 原理 详解(图)

ping命令 背后涉及网络层的ARP->ICMP->IP协议

!如图所示,有3台机器ABC ,分两情况,一种是A ping B同网段的情况,另一种A ping C不同网段的情况。
机器ABC 示意图

*A机器B机器路由器端口1路由器端口2C机器
IP1.1.1.11.1.1.31.1.1.22.1.1.22.1.1.1
MACmacAmacBmacR1macR2macC

1.A ping B同网段的情况

Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“1.1.1.3”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“1.1.1.3”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得到1.1.1.3的MAC地址(物理地址,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建数据帧。
“想办法找到B的MAC地址”就是通过ARP 协议。首先A找自己的ARP缓存表有没有缓存B的MAC地址,没有,A就发ARP请求 到交换机找,交换机发现自己的ARP缓存表也没有,就发ARP广播给自己所有连接的机器找,其它主机收到后,发现不是在找自己,就纷纷丢弃了该报文,不去理会。。直到主机B收到了报文后,就立即相应,我的MAC地址是多少,同时学到主机A的MAC地址,并按同样的ARP报文格式返回给主机A。

各阶段简化报文如下:

1>>A想办法找到B的MAC地址
ARP广播 : A->交换机->子机器

以太网目的MAC以太网源MAC帧类型硬件类型46OP发送端以太网MAC发送端IP地址目的MAC目的IP
FFmacA08060800461macA1.1.1.1001.1.1.3

*其中OP表示:1:表示ARP请求;2:表示ARP应答;3:表示RARP请求;4:表示RARP应答。
2>>B回复自己的mac给A
ARP回复 : B->交换机->A

以太网目的MAC以太网源MAC帧类型硬件类型46OP发送端以太网MAC发送端IP地址目的MAC目的IP
macAmacB08060800462macB1.1.1.3macA1.1.1.1

3>>A拿到MAC地址后开始ping
ICMP报文: A->交换机

目的地址源地址目的IP源IPICMP报文
macBmacA1.1.1.11.1.1.3Echo request

4>>B回应A的ping
ICMP报文: B->交换机->A

目的地址源地址目的IP源IPICMP报文
macAmacB1.1.1.31.1.1.1Echo answer

2.A ping C不同网段的情况

如果主机A要ping主机C,那么主机A发现主机C的IP和自己不是同一网段,他就去找网关转发。情况就变成Aping 网关了,此时A只要获得网关的MAC即可,至于网关如何联系上C ,A是不关心的 。A获得网关(路由器)MAC的方法跟上面一样,利用ARP协议.

当路由器收到主机A发过来的ICMP报文,发现报文目的地址(MAC)是路由器自身MAC地址,根据目的IP2.1.1.1,查路由表,发现2.1.1.1的MAC,去掉原来的MAC头部.加上自己的MAC地址向主机C转发…(如果网关也没有主机C的MAC地址,还是要向前面一个步骤一样,ARP广播一下即可相互学到….路由器端口2能学到主机C的MAC,主机C也能学到路由器端口2的MAC..)

各阶段简化报文如下:

1>>A通过ARP协议找到路由器的MAC地址
2>>A发ICMP报文到路由器(Aping路由器)
ICMP报文: A->交换机->路由器

目的地址源地址目的IP源IPICMP报文
macR1macA2.1.1.11.1.1.1Echo request

3.1>>路由器找到C的MAC地址
3.2>>路由器转发ICMP报文到C(路由器pingC)
ICMP报文: 路由器->C

目的地址源地址目的IP源IPICMP报文
macCmacR22.1.1.11.1.1.1Echo request

4>>C回复ping到路由器
ICMP报文: C->路由器->A

目的地址源地址目的IP源IPICMP报文
macAmacC1.1.1.12.1.1.1Echo answer

参考:
http://www.360doc.cn/article/1278923_43700893.html
http://www.360doc.cn/article/29273511_519167941.html
https://zhidao.baidu.com/question/567325786.html

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值