1.ARP作用
ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。
在网络中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址是不够的,因为IP数据报必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。ARP就是实现这个功能的协议。
2 ARP报文结构
ARP报文分为ARP请求和ARP应答报文,报文格式如图1-1所示。
图1-1 ARP报文结构
· 硬件类型:表示硬件地址的类型。它的值为1表示以太网地址;
· 协议类型:表示要映射的协议地址类型。它的值为0x0800即表示IP地址;
·硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;
· 操作类型(OP):1表示ARP请求,2表示ARP应答;
· 发送端MAC地址:发送方设备的硬件地址;
· 发送端IP地址:发送方设备的IP地址;
·目标MAC地址:接收方设备的硬件地址;
·目标IP地址:接收方设备的IP地址。
3 ARP地址解析过程
假设主机A和B在同一个网段,主机A要向主机B发送信息。如图1-2所示,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据报进行帧封装,并将IP数据报发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该IP数据报,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据报进行封装后发送出去。
图1-2 ARP地址解析过程
当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。
4 ARP表
设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址和MAC地址映射关系的表项,以用于后续到同一目的地报文的转发。
ARP表项分为动态ARP表项、静态ARP表项和OpenFlow ARP表项。
1. 动态ARP表项
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口状态down时,系统会删除相应的动态ARP表项。
2. 静态ARP表项
静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。
配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。
静态ARP表项分为短静态ARP表项、长静态ARP表项和多端口ARP表项。
在配置长静态ARP表项时,除了配置IP地址和MAC地址项外,还必须配置该ARP表项所在VLAN和出接口。长静态ARP表项可以直接用于报文转发。
· 在配置短静态ARP表项时,只需要配置IP地址和MAC地址项。如果出接口是三层以太网接口,短静态ARP表项可以直接用于报文转发;如果出接口是VLAN虚接口,短静态ARP表项不能直接用于报文转发,需要对表项进行解析:当要发送IP数据报时,设备先发送ARP请求报文,如果收到的响应报文中的发送端IP地址和发送端MAC地址与所配置的IP地址和MAC地址相同,则将接收ARP响应报文的接口加入该静态ARP表项中,此时,该短静态ARP表项由未解析状态变为解析状态,之后就可以用于报文转发。
·配置多端口ARP表项时,除了配置IP地址和MAC地址外,还必须配置该ARP表项所在的VLAN,当多端口ARP表项中的MAC地址和VLAN信息与多端口单播MAC/组播MAC地址表项中的MAC地址和VLAN相同时,该多端口ARP表项可用来指导IP转发。多端口ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。组播MAC的相关介绍,请参见“IP组播”的“组播路由与转发”。
一般情况下,ARP动态执行并自动寻求IP地址到以太网MAC地址的解析,无需管理员的介入。当希望设备和指定用户只能使用某个固定的IP地址和MAC地址通信时,可以配置短静态ARP表项,当进一步希望限定这个用户只在某VLAN内的某个特定接口上连接时就可以配置长静态ARP表项。
3. OpenFlow ARP表项
OpenFlow ARP表项由OpenFlow添加,不会被老化,不能通过ARP报文更新,可以被静态ARP表项覆盖。可以直接用于转发报文。关于OpenFlow的介绍,请参见“OpenFlow”中的“OpenFlow”。