一、为什么使用ARP(地址解析协议)
  • IP协议的设计目标是为跨越不同类型物理网络的分组交换提供互操作。这需要网络层软件使用的地址和底层网络硬件使用的地址之间进行转换。网络接口硬件通常有一个主要的硬件地址(例如以太网或802.Ⅱ无线接口的48位地址)。由硬件交换的帧需要使用正确的硬件地址定位到正确的接口;否则,无法传输数据
  • 但是,一个传统IPv4网络需要使用自已的地址:32位的IPv4地址。如果一台主机要将一个帧发送到另一台主机,仅知道这台主机的 IP地址是不够的,还需要知道主机在网络中的有效硬件地址
  • 操作系统软件(即以太网驱动程序)必须知道目的主机的硬件地址,以便直接向它发送数据。对于TCP/IP网络,地址解析协议( ARP) [RFCO826]提供了一种在IPv4地址和备种网络投术使用的硬件地址之间的映射

RARP

TCP/IP卷一:23---ARP之(ARP简介与ARP帧)_地址解析协议

二、ARP的一些特点
  • ARP仅用于IPv4。IPv6使用邻居发现协议,它被合并入ICMPv6
  • 地址解析是发现两个地址之间的映射关系的过程。对于使用IPv4的TCP/IP协议族,这是由运行的ARP来实现的
  • 动态:ARP提供从网络层地址到相关硬件地址的动态映射。我们使用动态这个术语是因为它会自动执行和随时间变化,而不需要系统管理员重新配置。也就是说,如果一台主机改变它的网络接口卡,从而改变了它的硬件地址(但保留其分配的IP地址),ARP可以在一定延时后继续正常运作
  • ARP操作通常与用户或系统管理员无关
三、ARP帧格式

TCP/IP卷一:23---ARP之(ARP简介与ARP帧)_字段_02

  • 前14字节构成标准的以太网头部,假设没有802.1p/q或其他标记,其余部分由ARP协议来定义
  • ARP帧的前8个字节是通用的,这个例子中的剩余部分专门用于将IPv4地址映射到48位的以太网地址

MAC(以太网)头部:

  • 前两个字段包含目的和源以太网地址(对于ARP请求,目的以太网地址ff:ff:ff:ff:ff:ff(全部为1)是广播地址,在同一广播域中的所有 以太网接口可接收这些帧。
  • 对于ARP (请求或应答),2字节的长度或类型字段必须为Ox0806

硬件类型、协议类型、硬件大小、协议大小:

长度/类型字段之后的前4个宇段指定了最后4个字段的类型和大小这些值由IANA来指定

  • 例如,一个ARP请求询问协议地址(在这种情况下是IPv4地址)对应的硬件地址(在这种情况下是以太网地址)。这些术语很少被用于ARP之外。相对来说,硬件地址的常见术语有MAC、物理或链路层地 址(或以太网地址,当网络基于IEE802.3/以太网的一系列规范时)
  • 硬件类型字段:指出硬件地址类型。对于以太网,该值为1
  • 协议类型字段:指出映射的协议地此类型。对于IPv4地址,该值为Ox800。当以太网帧包含IPv4数据报可.这可能与以太网帧的类型字段值一致
  • 硬件大小和协议大小:分别指出硬件地址和协议地址的字节数。 对于以太网中使用IPv4地址的ARP请求或应答,它们的值分别为6和4

Op字段:

  • Op字段指出该操作是ARP请求(值为1)、 ARP应答(2)、 RARP请求(3)、RARP应答(4)
  • 由于ARP请求和ARP应答的长度/类型字段相同,因此这个字段是必需的

发送方硬件地址(在这个例子中是以太网MAC地此)

发送方协议地址(lPv4地址)

目的硬件地址(MAC/以太网地址)

目的协议地址(IPv4地址)

  • 注意事项:这里存在一些重复的信息(以太网头部和ARP消息都包含发送方硬件地址。对于一 个ARP请求,除了目的硬件地址(设为0)之外,其他字段都需要填充。当一个系统接收到一个ARP请求,它填充自己的硬件地址,将两个发送方地址和两个接收方地址互换,将Op 字段设置为2,然后发送生成的应答)