需求:
在以太网中,一个主机和另一个主机进行通信,需要对数据进行封装,当封装到数据链路层时,需要知道对方的MAC地址才能完成最终的标准。但这个目标MAC地址是如何获得的呢?它就是通过ARP(地址解析协议)获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
概述及原理
ARP(Address Resolution Protocol),地址解析协议;作用:把IP地址解析为MAC地址,也就是已知IP求对方MAC。ARP协议分为代理ARP,反向ARP,免费ARP。
同一网段
1、查看ARP表。PC要和目标通信就要知道目标的MAC地址,ARP表记录了网段内IP地址和MAC地址的映射关系,所以PC 会首先查看自己的ARP表,如果表中有记录,则会使用记录中的MAC地址通信,如果没有,就会使用ARP 协议,获取MAC地址
2、发送ARP请求,源MAC地址是自己,目标MAC地址是全F的广播地址
3、交换机收到目标地址为全F的数据帧,会将该数据帧洪泛,从其他端口转发
4、收到该数据帧的PC,会检查目标IP地址是不是自己,如果不是则丢弃,如果目标IP是自己,则会回复一个 ARP应答,源MAC地址是自己,目标MAC地址对方 。
5、PC收到ARP应答消息后,将该IP地址和MAC地址的映射添加到ARP表中,然后使用请求到的MAC地址与对方通信
不同网段
不同网段之间的通信会使用代理ARP,如果通信的双方不再同一个网段,网关会代理通信双方的MAC地址,进行通信
1、解析网关。如果向不同网段通信,首先查看本地是否有网关IP地址及网关的MAC地址,如果有,则将数据帧发往网关,交给网关处理
2、ARP请求。如果本地不存在网关,那么会发送ARP请求,该请求仍是广播
3、ARP应答。网络中的PC收到后数据包后,查看目标IP地址不是自己直接丢弃;
网关看到目标IP,若该ARP请求的目标IP地址为自己的直连网段,并且目标的MAC地址在自己的缓存表中,则会把自己的接口MAC地址伪装成被请求的MAC,然后向请求者发送ARP应答;如果缓存表中没有请求的内容,网关会向局域网中发送ARP请求得到该内容。
如果该目标IP不是本地的直连网段,则网关设备会代理请求者根据路由表寻找直连目标IP网段的设备(每经过一台路由器,源目MAC都会被替换),找到直连设备后继续上步操作。
4、PC通信。PC收到ARP应答后,就会向目标MAC地址发送数据帧,该数据帧的目标MAC地址是网关
ARP请求过程
ARP表
ARP表:记录了MAC地址和IP地址的映射关系。
表项分类:
动态表项:通过ARP协议学习,能被更新,缺省老化时间120s
静态表项:手工配置,不能被更新,无老化时间的限制,静态表项可以防止ARP的毒化攻击
ARP报文
ARP报文:
Hardware type:二层协议
Protocol type:三层协议
Hardware size:6字节-地址大小
Protocol size:4字节-地址大小
Opcode : 报文类型
Sender MAC address :发送者MAC地址
Sender IP address :发送者IP地址
target MAC address :目标MAC地址
ARP请求包 :
ARP应答包:
免费ARP
设备主动使用自己的IP地址作为目的IP地址发送ARP请求 ,这也是一个广播报文。
免费ARP的作用
1、IP地址冲突检测: 当设备接口变为UP时,会主动发送免费ARP,如果收到ARP应答,则表明网络中有IP地址冲突,设备周期 性发送免费ARP,直到冲突解除
2、通告新的MAC地址: 如果MAC地址发生变更,为了快速的告知其它设备,可以发送免费ARP
3、VRRP备份: 发生主备变换后,MASTER设备会广播发送一个免费ARP
数据包
代理ARP
一般在不同网段通信之间使用,由启动了代理ARP功能的网关/下一跳设备代为应答ARP请求,该ARP请求的是其他IP对应的MAC地址。
回应ARP请求的条件:
本地有去往目的IP的路由表
收到该ARP请求的接口与去往目的IP的出接口不是同一个接口
在不同网段的主机进行通信时,首先会使用ARP请求网关设备的MAC,然后网关设备代理完成后续的工作,当我们使用192.168.1.1去ping 192.168.2.1时,可以看到主机会先使用ARP请求网关192.168.1.254的MAC地址,然后直接完成ping的操作,这我们就可以知道是网关设备完成了代理。
反向ARP
RARP(Reverse Address Resolution Protocol )反向地址解析协议
作用:把MAC地址解析为IP地址
场景:用于无盘工作站