ARP是解决同网段PC间通信的协议,当知道对端IP地址,想要知道对端的MAC地址时,我们发ARP请求来得到对端的MAC地址
ARP协议包结构:
Hardware type: 硬件类型 2个字节
00 01: 以太网
Protocol type: 协议类型 2个字节
08 00: IP
Hardware size: 硬件地址长度 1个字节
06: 6字节
Protocol size: 协议长度 1个字节
04: 4字节
Opcode: 操作码 2个字节
00 01: request
00 02: reply
Sender MAC: 源MAC 6个字节
00 50 56 a1 0e 9a
Sebder IP: 源IP 4个字节
c0 a8 0a 67
Target MAC: 目的MAC 6个字节
00 00 00 00 00 00
Target IP: 目的IP 4个字节
c0 a8 0a 03
ARP request包
ARP Reply
ARP协议原理
ARP是在同网段中,如果只知道对方的IP地址,不知道MAC地址
1 发送端首先发起一个ARP request报文在本网段中广播
2 接收端收到该广播报文后查看报文中的destination-ip是否是自己的IP地址
是, 回复reply报文给发送端,此时是单播,因为在request报文中已经标明了发送端的MAC,没有必要再广播了
不是,丢弃
ARP cache
ARP缓存的出现是为了能够快速的处理数据包的转发,如果每次都需要学习,速度会很慢,如果是一些设备里缓存了这些刚学到的条目,那么下次还是遇到这个目的IP,则可以
不再进行学习,而直接根据缓存中的记录进行高效的转发,缓存中的条目是有时间限制的,会在一定的时间过后老化
免费的ARP
免费ARP是当设备IP地址改变后,网络主机中缓存的IP和MAC映射就失效了,为了防止通信错误,免费的ARP请求被广播到网络中,通
知其它主机及时更新ARP缓存映射,免费ARP的发送方和目标IP相同,目标MAC未知填0,接收方无需回复应答包,因此称之为免费