ARP协议及其在VLAN间的应用详解
ARP协议及其在VLAN间的应用详解
ARP(Address Resolution Protocol)协议是网络通信中不可或缺的一部分,它负责将IP地址解析为对应的MAC地址。本文将详细介绍ARP协议的基本概念、工作原理以及在VLAN间的应用,帮助读者深入理解这一重要的网络协议。
1、ARP
ARP(Address Resolution Protocol)用于将一个IP地址映射到正确的MAC地址。
应用场景:本地无mac地址缓存记录,用来获取目的ip对应的mac地址。分为同网段直接获取和跨网段通过网关代理获取。
特性:ARP不能穿越广播域,就是不能穿越路由器或VLAN。三层设备路由器不转发ARP广播。
1.1、arp代理
一个物理网络的子网(Subnet)中的源主机向另一个物理网络的子网中的目的主机发ARP request,和源主机直连的网关用自己接口的MAC地址代替目的主机回ARP reply,这个过程称为ARP 代理。
1.2、地址解析过程
1.2.1、同一网段内
- 在同一广播域内,所有主机处于同一网段,主机A要向主机C发送信息,主机A的ARP表中没有对应的MAC地址,主机先以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的源IP地址和源MAC地址,目标IP地址和目标MAC地址为主机C的IP地址和全0的MAC地址。
- ARP的请求以广播方式发出,在同一广播域内所有主机都可以接收到该请求,但只有被请求的主机C才会对该请求进行处理。
- 收到ARP的主机C通过比较接收的目的IP地址与自己的IP地址相同,查询自己的ARP表有没有主机A的MAC地址,没有就添加主机A的MAC地址和IP地址。
- 响应是单播方式发出,包含有自己的MAC地址。
1.2.2、不同网段间
当主机A和主机D不在同一网段时,主机A就会先向网关(路由器)发出ARP请求, ARP请求报文中的目标IP地址为网关的IP地址。
当主机A从收到的响应报文中获得网关的 MAC地址后,将报文封装并发给网关。
如果网关没有主机D的ARP表项,网关会广播ARP请求,目标IP地址为主机D 的IP地址,当网关从收到的响应报文中获得主机D的 MAC 地址后,就可以将报文发给主机 D;
如果网关已经D 的 ARP 表项,网关直接把报文发给主机 D。
1.3、arp格式和表项
1.3.1、arp格式
ARP 协议是通过报文进行工作的,ARP 报文格式如图所示。
ARP 报文总长度为 28 字节,MAC 地址长度为 6 字节,IP 地址长度为 4 字节。
其中,每个字段的含义如下。
- 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为 1。
- 协议类型:表示要映射的协议地址类型。它的值为 0x0800,表示 IP 地址。
- 硬件地址长度和协议长度:分别指出硬件地址和协议的长度,以字节为单位。对于以太网上 IP 地址的ARP请求或应答来说,它们的值分别为 6 和 4。
- 操作类型:用来表示这个报文的类型,ARP 请求为 1,ARP 响应为 2,RARP 请求为 3,RARP 响应为 4。
- 发送方 MAC 地址:发送方设备的硬件地址。
- 发送方 IP 地址:发送方设备的 IP 地址。
- 目标 MAC 地址:接收方设备的硬件地址。
- 目标 IP 地址:接收方设备的IP地址。
ARP 数据包分为请求包和响应包,对应报文中的某些字段值也有所不同。
- ARP 请求包报文的操作类型(op)字段的值为 request(1),目标 MAC 地址字段的值为 Target 00:00:00_00:00:00(00:00:00:00:00:00)(广播地址)。
- ARP 响应包报文中操作类型(op)字段的值为 reply(2),目标 MAC 地址字段的值为目标主机的硬件地址。
1.3.2、表项
各列含义详解
列名 说明
Address IP 地址:目标设备的 IPv4 地址(-n 选项禁用 DNS 反向解析,直接显示 IP)。
HWtype 硬件类型:目标设备的网络接口类型,常见值:
- ether:以太网(Ethernet)
- loopback:本地回环接口。
HWaddress MAC 地址:目标设备的物理地址(格式为 xx:xx:xx:xx:xx:xx)。
Flags Mask 标志掩码:ARP 缓存条目的状态(详见下文)。
Iface 网络接口:本机用于与目标设备通信的接口(如 eth0、wlan0)。
Flags Mask 标志的详细解释
标志通过位掩码组合,常见标志如下:
标志符 掩码值 说明
C 0x1 Complete:条目已成功解析(MAC 地址有效)。
M 0x2 Permanent:静态条目(手动添加,不会被自动删除或更新)。
P 0x4 Published:代理 ARP 条目(本机可代表其他设备响应 ARP 请求)。
U 0x8 Used:条目正在被使用(活跃状态)。
1.4、免费arp
免费ARP:Gratuitous ARP,设备主动使用自己的IP地址作为目的IP地址发送ARP请求。此种方式称免费ARP。
免费ARP有如下作用:
- IP地址冲突检测:当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文。正常情况下不会收到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址。如果检测到IP地址冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除。
- 用于通告一个新的MAC地址:发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP。
- 在VRRP备份组中用来通告主备发生变换:发生主备变换后,MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换。
1.5、vlan间arp代理
代理ARP就是通过使用一个主机,来作为指定的设备使用自己的 MAC 地址来对另一设备的ARP请求作出应答。
代理ARP的作用:主机查询的对象不在同一个局域网内,路由器就提供了代理ARP为这个问题提供了解决方案。
主机A发送ARP请求主机D的MAC地址时,因为路由器不转发广播包的原因,ARP请求只能到达路由器。
这时路由器启用了代理ARP功能,并知道主机D属于它连接的网络,那么路由器就用自己接口的MAC地址代替主机D的MAC地址来对主机A进行ARP应答。主机A接收ARP应答,但并不知道代理ARP的存在。
Proxy ARP方式 作用
路由Proxy ARP 解决同一网段不同物理网络上计算机的互通问题。
Vlan内部Proxy ARP 解决相同Vlan内,且Vlan配置用户隔离的网络上计算机互通问题。
Vlan间Proxy ARP 解决不同Vlan之间对应计算机的三层互通问题。
1.5.1、同网段,不同广播域间主机
1.5.2、同网段,不同vlan之间主机
15.3、同网段,同vlan内由于配置了端口隔离
2、vlan之间的三层通信
实际网络部署:
- 在实际网络部署中常常会将不同的IP地址段划分为不同的Vlan。
- 在同Vlan并且相同的网段的PC之间可直接进行通信,就不需要三层转发设备,这种方式被称为二层通信。
- 在Vlan之间需要通过三层通信来进行互访,这时需要借助三层设备。
2.1、二层报文转发流程:
- 未知单播-泛洪 如果找不到,就向入端口以外的其它所有端口发送;
- 已知单播-转发 交换机在MAC地址表中查找数据帧中的目的MAC地址,如果找到,就将该数据帧发送到相应的端口;
- 同端口-不转发 如果交换机收到的报文中源MAC地址和目的MAC地址所在的端口相同,则丢弃该报文;
- 组播和广播-泛洪 交换机向入端口以外的其它所有端口转发广播报文。
Vlan间二层通讯被隔离了,不同VLAN之间的终端无法直接通讯。怎么解决?使用三层路由设备将不同的VLAN打通。使用路由器和三层交换机都可以,不过由于路由器成本太高,路由器也没有这么多接口,实际中使用三层交换机。
带VLAN报文转发流程:
类型 描述
转发报文 匹配VLAN和MAC地址,符合发送到相应的端口,不符合在VLAN内泛洪;
防环 报文中源MAC地址和目的MAC地址所在的端口相同,则丢弃该报文;
广播 交换机向(VLAN内)入端口以外的其它所有端口转发广播报文。
三层交换机的原理模型可以认为是:三层交换机 = 二层交换机+三层路由器。
在三层交换机上,可以在一个VLAN配置三层接口(cisco成为交换机虚拟接口 SVI:switch virtual interface),这个SVI接口就是上面原理模型中的那个路由模块对应的接口。它具备普通路由器接口的基本特性,比如:
- 该接口有自己的MAC地址;
- 在该SVI接口上,我们可以进行标准的三层协议的配置,包括IP地址,路由协议等等。
三层交换机内部既有MAC地址表,用以二层转发;又有IP路由表,用以三层转发。
2.2、三层交换机转发方式
1、软件三层转发
- 查找目的IP的网段路由(最佳匹配查找,次优路径),
- 如果路由不存在,报文丢弃。
- 如果存在,查找下一跳的ARP表,如果ARP不存在,进行ARP学习。
- 学习到ARP后,进行报文转发,并将转发信息写入硬件主机路由表,以后该目的IP的报文就可以通过硬件进行三层转发了
2、硬件二层交换
- 根据报文的目的MAC(精确匹配查找),查找二层MAC转发表:
- 如果不存在该MAC条目,则在所有端口上进行泛洪处理(广播组播也会泛洪)。
- 如果存在该MAC条目,并且该条目没有Route标志,则进行标准交换转发。
- 如果该MAC条目上有Route标记,则进行硬件三层转发。
3、硬件三层转发【表项由软件更新】
- 根据报文的目的IP地址(精确匹配查找,优选路径),查找三层主机路由表:
- 如果存在,直接转发(TTL–,目的MAC地址进行替换)
- 如果不存在,则进行标准的软件三层报文转发。
PC1跨网段访问PC3时,PC1会将数据交给网关R1,所以DMAC是R1,此时交换机发现DMAC是自己,拆开二层头部,查看三层头部的DIP进行三层转发。
2.3、三层交换机处理流程
收到数据流多个数据包,只有第一个数据包是有三层交换机的三层引擎来处理的,处理的方式是软件方式,查找目的IP的网段路由,查找下一跳的ARP表,三层引擎获取了新的2层封装信息后,然后进入硬件三层,先硬件二层后硬件三层。
在第一个数据包转发完成后,在硬件中创建一个MLS条目。MLS是基于CEF(一种基于拓扑转发的模型)的。
Cisco Catalyst 交换机使用传统的MLS(Multilayer Switching,多层交换)体系结构或基于CEF(Cisco Express Forwarding, Cisco 快速转发)的MLS体系结构。传统的MLS是一种老式结构,而所有新型的Catalyst交换机都支持CEF多层交换。
类型 描述
转发信息表 匹配VLAN和MAC地址,符合发送到相应的端口,不符合在VLAN内泛洪;
邻接关系表(FIB) 记录了主机MAC地址和交换机地址;
2.4、vlanif转发流程
虚接口概述:
路由器的物理接口上可以配置IP地址,那么三层交换机上面是否可以?答案是可以的。 SVI----交换虚拟接口,交换机上针对不同的VLAN可以设置的接口,充当对应VLAN之内的网关,为不同VLAN之间通信提供可能。
1、PC1发送数据包给PC3,计算机
网卡
比较目的IP地址不在同一网段,将数据发送给网关,目的MAC为MAC10。
2、路由模块解析发现目的IP为172.16.2.5,不是本地接口存在的IP地址,因此需要对该报文三层转发。查找目的IP的网段路由,根据报文的目的IP地址(精确匹配查找,优选路径),查找三层主机路由表,匹配中VLANIF20产生的直连路由,直接转发。