ARP协议概述
ARP:即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址.
ARP分组格式
以太网目的地址(MAC) | 以太网源地址(MAC) | 帧类型 | 硬件类型 | 协议类型 | OP | 发送端目的地址 | 发送端IP地址 | 目的以太网地址 | 目的IP地址 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
6(位) | 6 | 2 | 2 | 2 | 1 | 1 | 2 | 6 | 4 | 6 | 4 |
- 以太网目的地址:ARP请求的目的以太网地址,全1时为广播地址
- 以太网源地址:发送端自己的地址
- 帧类型:ARP请求/应答 此字段为0x0806
- 硬件类型:1为以太网地址
- 协议类型:
- 硬件地址长度:
- 协议地址长度:
- OP:1ARP请求,2ARP应答,3RARP请求,4RARP应答
- 发送端目的地址:
- 发送端IP地址:
- 目的以太网地址:
- 目的IP地址:
ARP过程
主机A要和主机B通信,主机A已知自己的IP,MAC和主机B的IP地址.
此时,他们还不能直接通信.这种情况ARP就派上用场了.
主机A先检测自己的ARP Crash 缓冲区,查询主机B的IP对应的MAC,如果没找到,发送ARP请求.
主机A-----ARP request---->主机B(广播)
主机B-----ARP respond—>主机A(单播)
获得主机B的MAC.
网络中所有主机收到这个请求之后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包,如果相同,该主机首先将发端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP列表中已经存在该IP信息,则将其覆盖,然后给源主机发送一个ARP相应数据包,告诉对方自己是他需要查找的MAC地址,源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据传输,如果源主机一直没有收到ARP的响应数据包,表示ARP查询失败
免费ARP
主机发送ARP查找自己的IP.
在免费ARP报文中,源协议地址和目的协议地址都为自己的IP,而源硬件地址和目标硬件地址都是自己的MAC地址。
1,广播,宣告目前这个IP对应的MAC是什么.
2,查询广播域内有没有别的主机使用自己的IP地址,如果有,弹出 “IP冲突”.
不希望收到回应,只起宣告作用,
代理ARP
ARP跨网关时,路由器会把自己的MAC返回给请求着.
A(A ip, A mac, B ip) ----> AP
AP(A ip, AP mac , B ip) ----> B
ARP缓存表
记录MAC于IP对应关系.