以太网ARP协议

ARP介绍

在以太网中,一个主机和另一个主机进行通信,必须要知道目的主机的MAC 地址(物理地址),而目的MAC 地址的获取由ARP 协议完成。

ARP(Address Resolution Protocol),即地址解析协议,是根据IP 地址(逻辑地址)获取MAC 地址的一种TCP/IP 协议。

MAC 地址在网络中表示网卡的ID,每个网卡都需要并有且仅有一个MAC 地址。在获取到目的MAC 地址之后,将目的MAC 地址更新至ARP 缓存表 会有过期时间,过期后需要重新通过ARP协议进行获取。

ARP 映射是指将IP 地址和MAC 地址映射起来,分为静态映射和动态映射。
        静态映射指手动创建一张ARP 表,把IP 地址和MAC 地址关联起来。手动绑定之后,源主机在通信之前,就可以直接从ARP 表中直接找到IP 地址对应的MAC 地址,但这样做有一定的局限性,因为MAC 地址可能会变化,要避免这些问题出现,必须定期维护更新ARP 表,此类比较麻烦而且会影响网络性能。

        动态映射指使用协议来获取相对应的物理地址,之所以用动态这个词是因为这个过程是自动完成的,一般应用程序的用户或系统管理员不必关心。已经设计出用于实现动态映射协议的有ARP 和RARP(逆地址解析协议)两种,ARP 把IP 地址映射为物理地址,RARP 把物理地址映射为IP 地址。。其中RARP 应用场景很少,这里不做展开。下面详细介绍一下ARP

ARP协议介绍

        ARP 协议分为ARP 请求和ARP 应答,源主机发起查询目的MAC 地址的报文称为ARP 请求,目的主机响应源主机并发送包含本地MAC 地址的报文称为ARP 应答。
当主机需要找出这个网络中的另一个主机的物理地址时,它就可以发送一个ARP 请求报文这个报文包含了发送方的MAC 地址和IP 地址以及接收方的IP 地址。因为发送方不知道接收方的物理地址,所以这个查询分组会在网络层中进行广播,即ARP 请求时发送的接收方物理地址为广播地址,用48'hff_ff_ff_ff_ff_ff表示。

        由于发送ARP请求的主机在网络中发送的报文,目的MAC地址为广播地址,因此所有网络设备都会接受这个报文,并将报文中的目的IP与自己的IP 进行对比,如果不同则忽略,如果相同则发送一个ARP应答报文。

        ARP应答报文采用的单播形式,利用ARP请求中的请求方IP地址和MAC地址,发送回ARP 请求发送方,告诉ARP请求方自身的MAC地址。

        ARP请求方接收到ARP应答之后,解析报文中的MAC地址,将目的MAC 地址和目的IP 地址更新至ARP 缓存表中。当再次和主机A 通信时,可以直接从ARP 缓存表中获取,而不用重新发起ARP 请求报文。ARP 缓存表中的表项有过期时间(一般为20 分钟),过期之后,需要重新发起ARP 请求以获取目的MAC地址。

ARP数据包格式 

硬件类型(Hardware type):硬件地址的类型,1 表示以太网地址。
协议类型(Protocol type):要映射的协议地址类型,ARP 协议的上层协议为IP 协议,因此该协议类型为IP 协议,其值为0x0800。
硬件地址长度(Hardware size):硬件地址(MAC 地址)的长度,以字节为单位。对于以太网上IP 地址的ARP 请求或者应答来说,该值为6。
协议地址长度(Protocol size):IP 地址的长度,以字节为单位。对于以太网上IP 地址的ARP 请求或者应答来说,该值为4。
OP(Opcode):操作码,用于表示该数据包为ARP 请求或者ARP 应答。1 表示ARP 请求,2 表示ARP应答。
源MAC 地址:发送端的硬件地址。
源IP 地址:发送端的协议(IP)地址。

目的MAC 地址:接收端的硬件地址,在ARP 请求时由于不知道接收端MAC 地址,因此该字段为广播地址,即48’hff_ff_ff_ff_ff_ff。
目的IP 地址:接收端的协议(IP)地址

由于以太网帧数据段最少46字节长度,而ARP数据包总长度为28字节,因此在ARP 数据段后面需要填充18 个字节的数据,以满足以太网传输格式的要求。这个填充的过程称为Padding(填充),填充的数据可以为任意值,但一般为0。

(注:参考正点原子FPGA教程,仅作学习记录使用)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值