ARP原理及双网卡设备arp、ping查询问题

声明下,因为对底层协议不是很了解,如有错误,麻烦指正,谢谢!

1、先来简单了解下ARP地址解析协议的用途

设备存在网络层地址(即IP地址)和链路层地址(即MAC地址),MAC地址是适配器(即网卡)出场就固定了的,以16进制格式表示:“XX:XX:XX:XX:XX:XX”,48位。IP地址是人为划分的,以点分十进制表示:“192.168.1.1”,32位。

IP地址是可以变动的,好比人的姓名,可以有多个别名;而MAC地址就好比人的身份证是固定的。发送数据就好比找陌生人一样,首先要确认是不是你所要找的人,最终是查看身份证号是否匹配,而不是查看他的姓名是否匹配。所以一台设备往另一台设备发送数据,必须要确认对端的MAC地址是目的地址。但就如生活中我们只叫人的姓名,而不喊他的身份证号一样,因为好记;在上层编码发送数据的时候,也只记得对端的IP地址,而不知道它的MAC地址,这时候就需要使用ARP协议来查询自己所要找的IP地址对应的MAC地址了。

总结:内核以太网驱动,必须知道目的端的硬件地址才能发送数据


2、接着来说下ARP的操作过程。在发送ARP请求前,都会在本机的ARP缓冲中查看是否已经存在了所要查询的IP对应的MAC地址,因为ARP缓存是自动建立的(别人发送据过来,本机收到都会记录该数据包的源IP地址和其MAC地址到ARP缓存中),如果在本机查到了,则不需要发送ARP请求了。下面说下没有找到的情况(一般ARP的一条记录的缓存时间是20分钟),分两种情况:目的端在同一子网和目的端在不同子网。

(注:ARP包是广播发送的,即电缆上的所有以太网接口都要接收广播的数据帧,即你把两台不同网段的设备用交换机接在一起,都能收到对方的ARP请求和应答。不过并不能发送数据,所以正常情况同一子网都是同网段的设备,不同网段的设备通过路由器隔开。所以可以说,ARP只为同一个子网上的节点解析IP地址)

虽然ARP是链路层数据包,但设备在询问目的IP并发送ARP请求时,是经过第三层网络层的路由表来决定的。
1、同一子网
目的IP经路由表查询得知是在同一子网的,适配器在链路层帧中封装这个ARP分组,用MAC广播地址作为帧的目的地址,目的IP作为帧的目的地址,将该帧传输进子网。目的IP收到该广播包后单播回应ARP包。发送端接收到该ARP回应包后,自动在ARP缓存中增加一条对应记录,最后将数据包发送到目的设备。

2、不同子网
目的IP经路由表查询得知不是在同一个子网的,则之后数据是默认发送给网关的,一般也就是路由器。
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值