03网络交互与协议解析 | 青训营

125 阅读3分钟

网络接入——ARP

ARP(Address Resolution Protocol)是一种在局域网(LAN)中将IP地址转换为MAC地址的协议。在计算机网络中,通信的两个设备需要知道对方的MAC地址才能直接通信。ARP协议就是用来解决这种IP地址到MAC地址的映射问题的。

工作原理

ARP协议的主要目的是在局域网中查找给定IP地址对应的MAC地址,以便实现在数据链路层(MAC层)上直接通信。 假设有两台计算机A和B,A知道自己的IP地址,但不知道B的MAC地址,A想要直接向B发送数据。这时,A会执行以下操作来获取B的MAC地址:

  • A首先检查本地的ARP缓存表,其中存储了已解析的IP地址和对应的MAC地址。如果A在缓存表中找到了B的IP地址对应的MAC地址,就可以直接使用这个MAC地址来发送数据。
  • 如果ARP缓存表中没有B的IP地址对应的MAC地址,A会在局域网中广播一个ARP请求(ARP Request)消息,其中包含了A要解析的IP地址。
  • 所有局域网上的设备都会接收到这个ARP请求消息。当B收到请求后,会发现请求中的IP地址与自己的IP地址匹配。
  • B收到请求后,会通过ARP响应(ARP Reply)消息向A回复自己的MAC地址。
  • A接收到B的响应后,会将B的IP地址和对应的MAC地址添加到ARP缓存表中,并使用B的MAC地址来发送数据。

在上述描述中的ARP缓存表是每台计算机上用来存储IP地址和对应MAC地址的表格。当计算机执行ARP请求时,会将解析到的IP地址和MAC地址添加到这个缓存表中,以便后续直接使用,避免重复ARP请求。

ARP报文格式

ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。 arp.png

  1. 硬件类型:占两字节,表示ARP报文可以在哪种类型的网络上传输,值为1时表示为以太网地址。
  2. 上层协议类型:占两字节,表示硬件地址要映射的协议地址类型,映射IP地址时的值为0x0800。
  3. MAC地址长度:占一字节,标识MAC地址长度,以字节为单位,此处为6。
  4. IP协议地址长度:占一字节,标识IP得知长度,以字节为单位,此处为4。
  5. 操作类型:占2字节,指定本次ARP报文类型。1标识ARP请求报文,2标识ARP应答报文。
  6. 源MAC地址:占6字节,标识发送设备的硬件地址。
  7. 源IP地址:占4字节,标识发送方设备的IP地址。
  8. 目的MAC地址:占6字节,表示接收方设备的硬件地址,在请求报文中该字段值全为0,即00-00-00-00-00-00,表示任意地址,因为现在不知道这个MAC地址。
  9. 目的IP地址:占4字节,表示接受方的IP地址。

以上为本文对网络接入中ARP协议的内容介绍