01
ARP 是什么?
ARP【Address Resolution Protocol 】 ,即地址解析协议,负责把目的主机的IP 地址解析成目的MAC地址。当发送者 知道目的主机的IP地址之后, 就可以使用这个IP地址去解析对方的MAC地址。
为什么需要ARP?
在发送者给其他的网络设备发送数据的时候, 是以数据帧的形式发送的,数据帧被网卡解析成电信号或者光信号传递到对端。
数据帧是由源MAC地址和目的MAC地址组成的,如果发送者只知道目的主机的IP地址, 不知道目的主机的MAC地址, 就不能把这个数据包转化成数据帧发走,而ARP 协议就是负责地址解析的, 使用目的主机IP地址来解析对方的MAC地址。
如果发送者和接收者在同一个网络内,arp解析的就是接收者的MAC地址。
如果发送者和接收者不在同一个网络内, arp解析的就是这个网络内网关的接口MAC地址。
02
arp 工作流程
在网络设备中会存在一个ARP缓存表,这个缓存表记录着这个IP 地址和MAC地址的映射关系,可以在设备终端使用arp -a 来查看本地的arp 缓存表的缓存信息。
arp 协议的作用, 就是形成这个arp缓存表,那么,交换机是如何形成这个缓存表的呢?
设备需要解析一个IP地址时, 会发出一个arp 请求报文的广播帧,2层报文中目的MAC地址为全F ,目的设备在收到ARP请求报文之后,会向源设备发送一个单播帧,该单播帧是一个ARP的应答报文,该应答报文中包含了目的设备的MAC地址。
下面配图分析一下:
同一个网络内的ARP请求和应答过程如下:
如图:PC 1 只知道PC3 的IP地址是10.1.1.3, 但是不知道PC3的MAC, 现在想获取PC3 的MAC地址:
1、发送者PC1:PC 1 会发送一个广播帧, 源IP和源MAC是PC1, 目的IP是PC3,目的MAC为FF-FF-FF-FF-FF-FF, 这个帧是广播发送的, 该网络内所有主机都会接收到,这个报文的载荷内容是一个ARP请求报文,意思是我的MAC地址是MAC1,我想给10.1.1.3发送数据, 谁是10.1.1.3, 请回复一下我。
2、非目的主机PC2:由于这个广播帧网络内主机都可以收到,PC2 收到这个帧, 提取IP地址, 发现, 它要找的IP地址是10.1.1.3, 我的IP地址是10.1.1.2, 这个数据包不是发给我的, 丢弃, 不回复。
3、 目的主机PC3:PC 3 收到这个广播数据帧后,拆开数据帧, 提取IP地址, 发现和我本地IP地址是一样的, 这个数据包就是发给我的, 然后再拆, 提取报文后, 了解到对方要请求我自己的MAC地址,然后就打包一个ARP的应答报文,源IP和源MAC都是自己的,目的IP和目的MAC是对方的,单播的发送给接收者,这样PC1 就有了PC3的MAC地址。
03
代理ARP
如果这两个主机不在同一个网络内, 被3层设备隔离了, 怎么通信呢?
目的IP地址与本机的IP地址位于不同网络, 由于主机A没有配置网关,所以它将会以广播形式发送ARP Request报文,请求主机B的MAC地址。但是,广播报文无法被路由器转发,所以主机B无法收到主机A的ARP请求报文,当然也就无法应答。
在路由器上启用代理ARP功能,就可以解决这个问题。
启用代理ARP后, 主机A解析网关MAC 地址过程:
1、主机A发送arp 请求网关MAC: 在电脑主机要先配置网关地址,主机A给主机B发送数据,发现是不同网段的数据通信,而我本地是没有这个关于B的ARP映射关系的,就会发送一个arp请求报文,解析网关MAC地址,源IP和源MAC地址都是主机A,目的IP是网关IP地址,目的MAC地址是全0。
2、网关回复自己的MAC 地址:网关收到这个arp请求报文后, 检查目的主机是否可达,可达,就会把自己的MAC地址以arp reply报文回复给主机A,目的主机不可达就不回复。
3:主机A 给主机B 发送数据:主机A收到这个arp应答报文就会把网关MAC和网关的IP地址添加进arp表,A要给主机B发送数据,需要先解析B的MAC地址,发送一个arp请求报文,源IP 和源MAC是A的信息,目的IP地址是B的IP地址,目的MAC是网关MAC。
4: 网关收到数据包后的处理:网关收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器将会使用自己的G0/0/0接口的MAC地址来回应该ARP request。主机A收到ARP reply后,将以路由器的G0/0/0接口MAC地址作为目的MAC地址进行数据转发。
04
课后作业:
实验一:配置静态ARP
命令:[Huawei]arp static 10.1.1.4 AA-BB-CC
查看结果:display arp all
实验二 : 在华为交换机S5700配置 代理arp
实验环境:S5700交换机上创建VLAN10 和VLAN20, 把这两个PC放到不同的VLAN, 然后使用vlanif下配置IP 和代理arp功能
拓扑如下:
[SW1]display current-configuration
#
sysname SW1
#
vlan batch 10 20 创建VLAN
interface Vlanif10 进入这个VLAN的网关接口
ip address 10.1.1.254 255.255.255.0
#
interface Vlanif20
ip address 10.1.2.254 255.255.255.0
arp-proxy enable
#
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
查看效果
1, 先不开启arp代理, PC1 ping PC2 , 发现是不通的
2, 分别进入这两个vlanif 接口, 开启代理arp功能
3, 检查效果, 发现 PC 1 和PC2 可以通信了,
4, 接下来进入vlnif 10, 关闭代理arp功能,
在PC1 和PC2 上使用 arp -d 来清理本地缓存的ARP表,检查连通性。
可以发现,关闭arp代理后, 主机就不可以解析到对方的MAC地址表,也就不能完成通信,
可以多次验证检验效果。
以上就是今天分享的内容。
END