地址解析协议(ARP)

1. 简介

同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。如果知道其IP地址,则可以通过ARP(Address Resolution Protocol,地址解析协议)查询到其MAC地址。ARP仅用于IPv4,IPv6使用ICMPv6

2. ARP帧格式

ARP帧格式

上图是一个以太网封装上层ARP包后的以太网帧,其中的一些字段,如

  • 硬件类型:硬件地址类型,如以太网的值为0x0001
  • 协议类型:映射的协议的地址类型,如IPv4的值为0x0800
  • 硬件地址长度:硬件地址占多少个字节的长度,如以太网占6个字节,该值就为6
  • 协议地址长度:协议地址占多少个字节的长度,如IPv4占4个字节,该值就为4
  • OP:指出这个ARP包是一个请求或响应包,请求为1,响应为2

3. 原理

ARP抓包结果

以主机A(192.168.1.103)向所在子网的主机B(192.168.1.101)发送数据为例:

  1. 当主机A发送数据时,主机A会在本机的ARP缓存表中寻找是否有主机B的IP地址。

    • 如果找到就知道主机B的MAC地址为主机B的MAC地址,直接把主机B的MAC地址写入帧首部发送数据。
  2. 如果在ARP缓存表中没有找到主机B的MAC地址,主机A就会在网络上广播一个ARP请求帧。如下图:


    地址解析协议(ARP)_第1张图片
    ARP请求结果
  3. 同一子网上的主机都会收到这个帧,并且根据ARP包的内容更新自己的ARP缓存表。但只有主机B接收到这个帧时,单播一个目的IP地址为192.168.1.103的ARP响应帧,其他主机则丢弃这个请求帧。


    地址解析协议(ARP)_第2张图片
    ARP响应结果

ARP缓存表采用老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

你可能感兴趣的:(地址解析协议(ARP))