ARP协议

ARP协议

ARP协议能实现任意网络层地址到任意物理地址的转换,不过我们仅讨论从IP地址到以太网地址(MAC地址)的转换。其工作原理是:主机向自己所在的网络广播一个 ARP请求,该请求包含目标机器的网络地址。此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址。

以太网ARP请求/应答报文详解

以太网ARP请求/应答报文的格式如下图:

ARP协议
以太网ARP请求/应答报文各字段具体介绍如下:

  • 硬件类型字段定义物理地址的类型,它的值为1表示MAC地址。
  • 协议类型字段表示要映射的协议地址类型,它的值为0x800,表示IP地址。
  • 硬件地址长度字段和协议地址长度字段,顾名思义,其单位是字节。对MAC地址来说,其长度为6;对IP (v4) 地址来说,其长度为4。
  • 操作字段指出4种操作类型: ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)。
  • 最后4个字段指定通信双方的以太网地址和IP地址。发送端填充除目的端以太网地址外的其他3个字段,以构建ARP请求并发送之。接收端发现该请求的目的端IP地址是自己,就把自己的以太网地址填进去,然后交换两个目的端地址和两个发送端地址,以构建ARP应答并返回之(当然,如前所述,操作字段需要设置为2)。

由上图可知,ARP请求/应答报文的长度为28字节。如果再加上以太网帧头部和尾部的18字节,则一个携带ARP请求/应答报文的以太网帧长度为46字节。不过有的实现要求以太网帧数据部分长度至少为46字节,此时ARP请求/应答报文将增加一些填充字节,以满足这个要求。在这种情况下,一个携带ARP请求/应答报文的以太网帧长度为64字节。

ARP高速缓存的查看和修改

通常,ARP 维护一个高速缓存,其中包含经常访问(比如网关地址)或最近访向的机器的IP地址到物理地址的映射。这样就避免了重复的ARP请求,提高了发送数据包的速度。
Linux下可以使用arp命令来查看和修改ARP高速缓存。比如,楼主机器在某一时刻(注意,ARP 高速缓存是动态变化的)的ARP缓存内容如下(使用arp -a命令):
ARP协议
sudo arp -d xxx.xxx.xxx.xxx
sudo arp -s xxx.xxx.xxx.xxx xx:xx:xx:xx:xx:xx
上面两条命令分别用于删除、添加一个ARP缓存项。

上一篇:用图像识别玩Chrome断网小游戏


下一篇:华为设备配置VLAN内Proxy ARP