ARP基本原理

相关概念
  • ARP报文

    ARP报文分为ARP请求报文和ARP应答报文,报文格式如图1所示。

    图1 ARP报文格式

Ethernet Address of destination(0–31)和Ethernet Address of destination(32–47)分别表示Ethernet Address of destination字段的前32个比特和后16个比特,Ethernet Address of destination字段的总长度是48比特

ARP报文的长度是42字节。前14字节的内容表示以太网首部,后28字节的内容表示ARP请求或应答报文的内容。ARP报文中相关字段的解释如表1所示。

  • 表1 ARP报文各字段的含义

    字段

    长度

    含义

    Ethernet Address of destination

    48比特

    以太网目的MAC地址。发送ARP请求报文时,为广播的MAC地址:0xFF-FF-FF-FF-FF-FF。

    Ethernet Address of sender

    48比特

    以太网源MAC地址。

    Frame Type

    16比特

    数据的类型。对于ARP请求或应答来说,该字段的值为0x0806。

    Hardware Type

    16比特

    硬件地址的类型。对于以太网,该类型的值为“1”。

    Protocol Type

    16比特

    发送方要映射的协议地址类型。对于IP地址,该值为0x0800。

    Hardware Length

    8比特

    硬件地址的长度。对于ARP请求或应答来说,该值为6。

    Protocol Length

    8比特

    协议地址的长度。对于ARP请求或应答来说,该值为4。

    OP

    16比特

    操作类型。OP的值与操作类型的关系如下:
    • 1表示ARP请求
    • 2表示ARP应答
    • 3表示RARP请求
    • 4表示RARP应答

    Ethernet Address of sender

    48比特

    源MAC地址。这个字段和ARP报文首部的以太网源MAC地址字段是相同的信息。

    IP Address of sender

    32比特

    源IP地址。

    Ethernet Address of destination

    48比特

    目的MAC地址。发送ARP请求报文时,该处填充值为0x00-00-00-00-00-00。

    IP Address of destination

    32比特

    目的IP地址。

  • ARP表

    如果每次主机在向外发送数据报文前都要先发送ARP请求报文,会大幅增加网络的通信量。而且网络上的所有设备都必须接收和处理该ARP请求报文,极大地影响了网络的运行效率。为了解决上述问题,每台主机上都维护着一个ARP表,这是ARP高效运行的关键。在这个ARP表中,存放着最近获得的IP地址和MAC地址之间的映射关系,这种映射关系称为ARP表项。

    根据ARP表项的生成方式不同,可以将ARP表项分为动态ARP表项和静态ARP表项。两者的区别仅在于:

    • 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的动态ARP表项更新,也可以被静态ARP表项覆盖。
    • 静态ARP表项由网络管理员通过手工配置生成和维护,不会被老化,也不会被动态ARP表项覆盖。
    主机在每次发送数据报文前,都会先在ARP表中查找目的IP地址所对应的MAC地址。
    • ARP表中有对应的MAC地址时,主机就不会再发送ARP请求报文,而是直接将数据报文发至这个MAC地址。

    • ARP表中没有对应的MAC地址时,主机才会发送ARP请求报文,请求目的主机的MAC地址。

  • 逆地址解析协议RARP(Reverse Address Resolution Protocol)

    当一台主机只知道自己的MAC地址时,可以通过发送和接收RARP报文,找出本设备的IP地址。

    网络管理员先在网络中的网关路由设备上创建一个MAC地址和与其对应的IP地址的映射关系。当用户需要对一台新的主机进行配置时,该设备的RARP客户机程序就会向网关路由设备上的RARP服务器请求相应的IP地址。

实现过程
  • 同网段内ARP的实现

    以HostA向HostB发送数据报文为例,结合图2详细介绍同网段内ARP是如何实现的。

    图2 同网段HostA和HostB之间地址解析的实现过程

  1. HostA查看自己的ARP表,发现没有目的主机HostB的IP地址和MAC地址的映射关系。于是,HostA对外发送ARP请求报文,请求HostB的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为HostA的IP地址和MAC地址,目的IP地址和目的MAC地址分别为HostB的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为HostA的MAC地址和广播MAC地址。

  2. CE1收到ARP请求报文后,将该报文在本网段内广播。

  3. HostB收到ARP请求报文后,更新自己的ARP表,将HostA的MAC地址添加到ARP表,同时向该ARP请求报文的发送方HostA发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为HostB的IP地址和MAC地址,目的IP地址和目的MAC地址为HostA的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为HostB的MAC地址和HostA的MAC地址。

    由于ARP请求报文的目的IP地址不是设备PE的IP地址,所以PE在收到ARP请求报文后,直接将其丢弃。

  4. CE1收到该ARP响应报文后,将该报文转发给目的主机HostA。

  5. HostA收到ARP响应报文后,更新自己的ARP表,将HostB的MAC地址添加到ARP表中,同时将数据报文发送给HostB。

以HostA向HostC发送数据报文为例,结合图3图4详细介绍不同网段间ARP是如何实现的。

图3描述了同网段的HostA和PE之间ARP的实现过程。通过这个网段内ARP的实现,HostA可以将数据报文发送到PE。

图3 同网段内HostA和PE之间地址解析的实现过程

  1. HostA查看自己的ARP表,发现没有到达目的主机HostC的默认网关PE的接口Interface1的IP地址和MAC地址的映射关系。于是,HostA对外发送ARP请求报文,请求PE的接口Interface1的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为HostA的IP地址和MAC地址,目的IP地址和目的MAC地址分别为PE的接口Interface1的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为HostA的MAC地址和广播MAC地址。

  2. CE1收到ARP请求报文后,将该报文在本网段内广播。

  3. 网关PE收到ARP请求报文后,更新自己的ARP表,将HostA的MAC地址添加到ARP表,同时向该ARP请求报文的发送方HostA发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为PE的接口Interface1的IP地址和MAC地址,目的IP地址和目的MAC地址为HostA的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为PE的接口Interface1的MAC地址和HostA的MAC地址。

    由于ARP请求报文的目的IP地址不是HostB的IP地址,所以HostB在收到ARP请求报文后,直接将其丢弃。

  4. CE1收到该ARP响应报文后,将该报文转发给目的主机HostA。

  5. HostA收到ARP响应报文后,更新自己的ARP表,将PE的接口Interface1的MAC地址添加到ARP表中,同时将数据报文发送给PE。

图4描述了同网段的PE和HostC之间ARP的实现过程。通过这个网段内ARP的实现,PE可以将数据报文发送给HostC。

图4 同网段内PE和HostC之间地址解析的实现过程

首先,PE通过查询路由表,将数据报文从Interface1发送到Interface2。

  1. PE查看自己的ARP表,发现没有目的主机HostC的IP地址和MAC地址的映射关系。于是,PE发送ARP请求报文,请求HostC的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为PE的接口Interface2的IP地址和MAC地址,目的IP地址和MAC地址分别为HostC的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为PE的接口Interface2的MAC地址和广播MAC地址。

  2. CE2收到ARP请求报文后,将该报文在本网段内广播。

  3. HostC收到ARP请求报文后,更新自己的ARP表,将PE的接口Interface2的MAC地址添加到ARP表,同时向该ARP请求报文的发送方PE发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为HostC的IP地址和MAC地址,目的IP地址和目的MAC地址为PE的接口Interface2的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为HostC的MAC地址和PE的接口Interface2的MAC地址。

    由于ARP请求报文的目的IP地址不是HostD的IP地址,所以HostD在收到ARP请求报文后,直接将其丢弃。

  4. CE2收到该ARP响应报文后,将该报文发送给目的设备PE。

  5. PE收到ARP响应报文后,更新自己的ARP表,将HostC的MAC地址添加到ARP表中,同时将数据报文发送给HostC。

通过以上两个同网段内ARP的实现,不同网段间的主机HostA和HostC可以进行数据报文的传送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值