ARP 协议

357 阅读2分钟

作用

链路层传输实际上是根据mac地址识别目标地址.只有目的ip地址,链路层是无法传输数据的。必须找到ip地址对于的mac地址。而ARP(Address Resolution Protoco)协议是用来查询ip所属网络接口的mac地址。其实现原理是通过向子网内发送广播信息,询问持有查询ip地址的host返回其自身的mac地址。

ARP 报文格式

ARP 协议是构建在链路层协议之上,从分层结构上来说,和ip 协议属于同一层。

image.png

图中的数字单位是byte,比如硬件类型字段占据2bytes

硬件类型,协议类型.

分别标识需要转换的两种地址类型是什么。常用的是ethernetip, 由此我们也可以看出来,ARP协议是一种通用的地址查询协议。可以在各种不同的地址类型直接相互查询。

硬件地址长度 和 协议地址长度

代表硬件地址和协议地址分别代表多少长度。对于mac和ip,分别为6,4如果没有这两个字段,处理者将没有办法知道整个arp报文的长度。也不知道报文中的那一段是属于硬件地址和协议地址

操作类型

既然是一种请求/回复模式,那么肯定有一个字段来区分是请求还是回复,还是其他啥操作的。

发送方的地址信息

记录发送者的地址信息,用来给回复者回复地址以及更新其ARP表(下次回复者就不需要发送arp请求来查询询问者的mac地址信息)

目标地址信息

回复者会将自己的mac地址信息填入此字段,然后返回给询问者

tips

  1. 发送者请求时使用的是广播。而回复是使用的是点对点。

ARP 表

host发送一个ip地址时,首先判断通过子网掩码判断是否是同一子网,但是同一子网的时候,查询其ARP表,如果能通过ip查询到mac地址。则直接发送。否则发送ARP广播请求,询问mac地址,并根据回复信息更新自身ARP表。

表项如下

ipmac有效期

ARP的其他

代理ARP

启动时发送ARP

当一个网络接口启动的时候,他会发送一个请求自身ip地址的arp请求信息。有两个作用

  1. 本质上发送者不希望接受到回复,如果有回复的话,则代表ip冲突了。
  2. 当一个host的ip对于的硬件接口更换重启后,可以发送一个ARP请求,接受者可以以此来更新自己过期的arp中对应ip的记录信息。