ARP协议

ARP协议

ARP(Address Resolution Protocol),即地址解析协议,用于实现从IP地址到MAC地址的映射。整个ARP协议交互过程仅需要两个包,一问一答即可搞定。

报文格式

  • 硬件类型(2字节):arp底层使用的物理网络协议,比如1代表以太网协议。
  • 协议类型(2字节):arp上层使用的网络协议,比如0x0800代表IPv4。
  • 硬件长度(1字节):物理地址(MAC)的长度,以字节为单位,对于以太网地址为6。
  • 协议长度(1字节):逻辑地址(IP)的长度,以字节为单位,对于IPv4为4。
  • 操作码(1字节):用来定义报文的类型,ARP请求(1),ARP响应(2)。
  • 源硬件地址:发送方的物理地址。
  • 源逻辑地址:发送方的逻辑地址。
  • 目的硬件地址:目标的物理地址。
  • 目的逻辑地址:目标的逻辑地址。

ARP协议流程

  1. 当A向本局域网中的B发送IP报文时,现在自己本地的ARP缓存中查看,是否有B的IP地址对应的MAC地址,有就将该MAC填在以太帧的目的地址中,否则进入流程2;
  2. 局域网广播ARP请求报文(以太帧的目的地址为ff:ff:ff:ff:ff:ff),广播的主要内容是:“我的IP地址是IP_A,我的硬件地址是MAC_A,我要知道IP地址为IP_B的主机的硬件地址”,进入流程3;
  3. B接收到ARP请求报文,并发现要找的人就是自己,那么回复ARP响应报文:“我的IP是IPB,我的硬件地址是MACB”,进入流程4;
  4. A接收到ARP响应报文,那么更新本地ARP缓存,然后就可以正常发送IP报文了。

为什么有的arp请求报文不是广播

有时在用wireshark抓包会发现,有的arp请求报文中以太帧的目的地址不是ff:ff:ff:ff:ff:ff,而是一个确定的MAC地址(准确的说就是要查找的IP对应的MAC地址),这是因为这是ARP在删除本地的ARP缓存的一条记录时(到了存活时间),那么不会选择广播的方式来重新获取该IP对应的MAC地址,而是直接将现有的MAC地址作为以太帧的目的地址,这样可以减少ARP广播对网络资源的消耗。

原文地址:https://www.cnblogs.com/HachikoT/p/13701164.html