(1)什么是ARP?
ARP(Address Resolution Protocol,地址解析协议):
是根据IP地址获取数据链路层地址的一个TCP/IP协议。
简单记忆:
根据已知的IP地址解析获得其对应的MAC地址。
(2)ARP(Address Resolution Protocol,地址解析协议)的主要功能:
①、将IP地址解析为MAC地址;
②、维护IP地址与MAC地址的映射关系的缓存,即ARP表项;
③、实现网段内重复IP地址的检测(学习DHCP的时候会经常遇到)。
(3)ARP表项的格式
IP地址 + MAC地址
(4)交换机的转发、泛洪以及MAC地址学习和MAC表项的管理。
①、转发
这里的转发一般指的是转发数据;通过读取数据帧中的目的MAC地址,将数据帧准确转发到对应端口(这一步通常依赖MAC表项)。
②、泛洪
当交换机接收到目的MAC地址为广播地址的数据帧时,会向除本身外的其他端口都发送一次该数据包。
③、MAC地址的学习
交换机每接收到一次目的MAC地址为广播MAC地址的数据帧,在泛洪之前会学习源MAC地址+对应端口映射到MAC表中;在泛洪之后并且有端口接收到了广播帧的回复,会把回复帧里的源MAC地址+对应端口映射到MAC表中。
④、MAC表项的管理
MAC表项的格式
MAC地址+对应端口
自己复习,重新写一遍技术文档,就当给自己讲课了。
实验1-top,二层ARP:

说明:该top图的交换机属于二层交换机(没有进行任何配置,除了改名称),PC1和PC2、PC-Other属于同网段(192.168.1.0/24网段,子网掩码24位)。
实验流程
配置好PC1和PC2
在开始使用PC1 ping PC2 之前,检查PC1和PC2的表项,以及交换机的MAC地址表。
PC1的ARP表项

PC2的ARP表项

PC-Other的表项

交换机的MAC地址表

实验结果
先抓包

用 PC1 ping PC2 的IP地址

查看PC1的ARP表项

查看PC2的ARP表项

查看PC-Other的ARP表项

查看交换机S1的MAC地址表项

可以看到,在PC1ping完PC2之后,PC1、PC2、交换机S1,都完成了各自的表项学习。
过程分析
首先查看交换机S1,GE0/0/1口
①、PC1 到 交换机S1
PC1 发送的 ARP Request

抓包主要关注,Source、Destination、Protocol、Info(有一些其他协议需要关注No.、Time、Length)
No.553就是ARP Request,Source(即源MAC地址)这里是PC1的MAC地址,关注源MAC地址尾号(3b:f7),和PC1的进行对照

分析ARP Request:

Destination(即目的MAC地址),这上面写的Broadcast,广播MAC地址的意思。
Protocol(协议),ARP协议(Address Resolution Protocol,地址解析协议)
Info(摘要信息),Who has 192.168.1.2?Tell 192.168.1.1
这一项是ARP Request的核心特征,这句话的意思是:谁是192.168.1.2?告诉192.168.1.1
查看ARP Request的详细信息:

Address Resolution Protocol(ARP协议)
这里主要关注Sender MAC address、Sender IP address、Target MAC address、Target IP address。
Sender MAC address:3b:f7(关注尾号),这里是指发送端的MAC地址,相当于源MAC地址(即PC1的MAC地址)
Sender IP address:192.168.1.1,发送端IP地址,相当于源IP地址,(即PC1的IP地址)
Target MAC address:broadcast(ff:ff:ff:ff:ff:ff),目的MAC地址,全为f属于广播MAC地址
Target IP address:192.168.1.2,目的IP地址,即PC2的IP地址
产生的原因
由于PC1和PC2第一次通信时,ARP缓存表中并不存在PC2的MAC地址,所以PC1会发送ARP Request来获取目的MAC地址(这里是获取PC2的MAC地址。),封装该报文的时候就会把PC1的IP和MAC放到Sender MAC和Sender IP中,
把PC2和广播MAC地址放到Target MAC和Target IP中。
Ethernet II(数据链路层),
主要关注:src/source MAC和Destination MAC
source MAC:PC1的MAC地址
destiation MAC:广播MAC全为f
Frame(物理层),该实验不用过多关注。
PC1 到 S1的过程
第一步封装ARP Request,封装过程上面写了
第二步发送ARP Request到S1的GE0/0/1接口

交换机接收到数据包之后·,会对ARP Request解封装,解封装到数据帧(由于是二层交换机,并不会解封高于数据链路层的头部)
观察数据链路层帧头的信息:
source MAC:54-89-98-70-3B-F7
destination MAC:ff:ff:ff:ff:ff:ff
交换机S1会进行MAC地址的学习,就是把源MAC地址和对应接口号映射成MAC表项,MAC表项的格式:MAC地址+对应接口
即:54-89-98-70-3B-F7 GE 0/0/1

学习完成之后,由于目的MAC地址是广播地址,所以就会进行泛洪,会向除发送端外的其他端口发送ARP Request。
图片示例:

PC-Other临时添加,以上是PC1 到 S1的过程。
交换机泛洪后会向GE 0/0/2接口,GE 0/0/3接口都发送ARP Request,为了方便理解,先说明S1 到 PC-Other
②、S1 到 PC-Other 的过程
由于此时交换机S1的身份变成了发送方,所以在接口GE0/0/3发送数据包之后,并不会进行MAC地址的学习。
当ARP Request从GE 0/0/3 到达 PC-Other的接口后,PC-Other会对该ARP Request进行解封装。
PC-Other主要看第三层ARP的信息

ARP Request:
Sender IP:192.168.1.1/24
Sender MAC:54-89-98-70-3B-F7
Target IP:192.168.1.2/24
Target MAC:ff:ff:ff:ff:ff:ff
查看了ARP Request协议的信息后,根据里面的Target IP来判断该数据包是不是发送给自己的。
Target IP:192.168.1.2/24;PC-Other/IP:192.168.1.3/24
发现IP地址不匹配,则PC-Other会丢弃该ARP Request数据包。
③、S1 到 PC2的过程
由于此时交换机S1的身份变成了发送方,所以在接口GE0/0/2发送数据包之后,并不会进行MAC地址的学习。
当ARP Request从GE 0/0/2 到达 PC2的接口后,PC2会对该ARP Request进行解封装。
PC2主要看第三层ARP的信息
ARP Request:
Sender IP:192.168.1.1/24
Sender MAC:54-89-98-70-3B-F7
Target IP:192.168.1.2/24
Target MAC:ff:ff:ff:ff:ff:ff
查看了ARP Request协议的信息后,根据里面的Target IP来判断该数据包是不是发送给自己的。
Target IP:192.168.1.2/24;PC-2/IP:192.168.1.2/24
发现IP地址匹配,则PC-Other会接收ARP Request数据包,并进行回复。
ARP reply

PC2在回复ARP Request数据包时,会先把ARP Request里面的Sender IP address和Sender MAC address,映射成ARP表项。
PC2的ARP表项

映射完成后,会进行ARP reply数据包的封装
由于此时PC2知道了PC1的IP和MAC地址,为了回复PC1的ARP Request请求,所以封装的ARP reply内容如下
ARP replay
Sender IP address:192.168.1.2,即PC2的IP地址
Sender MAC address:54-89-98-65-27-63,即PC2的MAC地址
Target IP address:192.168.1.1,根据ARP表项,把PC1的IP地址封装进去
Target MAC address:54-89-98-70-3B-F7,根据ARP表项,把PC1的MAC地址封装进去
数据链路层
source MAC:54-89-98-65-27-63
destination MAC:54-89-98-70-3B-F7
封装完成后,ARP reply从PC2的接口发送到交换机S1的GE0/0/2接口

交换机 S1 GE0/0/2 接收到之后,会对 ARP reply 进行解封装,解封装到数据链路层,查看里面的帧信息,把源MAC地址和接收到 ARP reply 的接口映射到 MAC地址表项 中
即:54-89-98-65-27-63 GE 0/0/2

学习完成后,再把帧信息中的目的MAC地址在MAC地址表中进行比对,发现目的MAC地址(即PC1的MAC地址)和接口GE 0/0/1绑定,所以交换机S1会把ARP reply从GE0/0/1口发送给PC1
④、S1 到 PC1
PC1接收到ARP reply后,解封装查看第三层信息,发现目的IP地址、目的MAC地址和自己IP地址、MAC地址相同,就会把里面的Sender IP address、Sender MAC address映射到自己的ARP表项中:

至此ARP的学习完成,然后才开始正式的通信,ping命令发送的协议包是ICMP

注意事项:
如果在ping了一次之后,过了一段时间再去查看ARP表项、MAC地址表项发现为空这是正常现象,再ping一次即可。
以上便是二层ARP的内容。








