关于Linux中ARP表的详解

ARP表原理详解:

       

        在二层网络中,若双方都知道彼此的MAC地址。

        在二层网络中,是以MAC地址进行传输的,交换机基于源MAC地址学习,目标MAC地址转发。例如图所示,PC1要给PC2发送消息,首先PC1会发送一帧数据,交换机为数据封装上二层帧头,到了交换机询问PC2的MAC地址,得到PC2的MAC地址后,,数据在到达PC2时解开二层帧头,读到帧内数据。

        

        在三层网络中,就需要IP地址进行传输。

        如果要跨网络传输,则需要IP地址之间通信。在帧数据发送时,会被封装上IP报文头以及二层帧头(二层帧头在IP报文头前),到达第二层会解开二层帧头,发现目标mac地址是属于自己的,便开始解析IP地址,通过路由进行查找,然后进行转发;找到正确的出口后,封装上二层帧头,传输到目的mac。

        那网络层都是通过IP地址来进行数据传输的,那岂不是我们要上网的话,都得记住对方的IP地址,才能与其通信?这样是很难的,那么多的网站,是很难都把IP地址记住的,这时候DNS服务器就发挥了它的作用。例如我们在访问www.baidu.com时,我们会首先向DNS服务器去询问这个域名的IP地址是多少,DNS服务器会根据这个域名去查询IP并返还给查询用户。

        这样我们就只需要记住目标网站的域名即可了。域名通过DNS协议获取IP地址,那么IP地址就可以通过ARP表获取MAC地址。

        在了解ARP表前,我们需要了解两个概念,IP地址以及MAC地址。

        假如有一天你被告知,需要去成都天府广场B栋301进行面试,但你只知道目的地,你还需要知道你如何才能到达这个目的地,也就是实际路线;这里的目的地就代表了IP地址,实际路线就代表了MAC地址。你要两者都知道,你才可以完成这次面试,这里的面试就类似于一段数据的传输。

        什么是ARP表:

        地址解析协议ARP(Address Resolution Protocol)是用来将IP地址解析为MAC地址的协议。

ARP表的作用就是将IP地址与MAC地址之间进行映射,将IP地址解析为MAC地址。ARP分别分为ARP请求和ARP响应。

        现在有员工小李(IP为:192.168.1.1),小王(192.168.1.2),小明(192.168.1.3)。他们都同属于192.168.1.子网下,现在小李想发送一串数据给小王。它首先会往这个子网发送一个广播去查询MAC地址。只要在这子网下的所有设备,都会收到这个广播请求,然后小王发现这帧数据中的IP地址是自己,就会发送ARP响应帧,里面就包含了MAC地址。小王在收到此ARP响应帧后ARP表就会记录下来。以后数据通路就通了。

        与此同时,其他收到这个广播的设备,也会把这个ARP请求存下来,但是不会去响应它,仅仅只是把小李的IP地址和MAC映射记录下来。

        开始正常通信:

        在这样ARP表确认下来过后,以后小李再跟小王通信,就不会发送广播了。就可以直接把数据封装成帧,通过ARP表里记录的小王的IP地址以及MAC地址,进行传输了。

假如没有ARP表项,那如果每发送一次IP数据报文,就得 进行一次ARP 请求,来确定 MAC 地址,这样势必造成不必要的流量及时延。

所以,就需要一个ARP表项,说白了,就是一个数据库,这个数据库记录 IP 地址和 MAC 地址的映射关系。

这样主机在发送报文时,会先查找一下它的 ARP 表,看看是否有相应的 MAC 地址。如果有,就直接使用;如果没有,就发起 ARP 请求获取。

但是这个ARP表项里的条目,也不一定是一直存在着,比如通过动态学习的,有期限的,即老化时间(aging time),在这个时间内,这个条目是有效的。超过老化时间,表项就会被删除,这样也可以释放点缓存空间。

此外,ARP表项可分为:动态ARP表项和静态ARP表项。

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。

静态ARP表项是由网络管理员手工建立的IP地址和MAC地址之间固定的映射关系。静态ARP表项不会被老化,静态ARP表项的优先级高于动态ARP表项,所以不会被动态ARP表项覆盖。

关于ARP表,仅仅是个人总结,原文来自: 肝了,整理了8张图详解ARP原理,连我妈都能看懂了! - 知乎 (zhihu.com)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值