1、ARP简介
ARP<Address Resolution Protocol,地址解析协议>,用于实现从IP地址到MAC地址的映射。它是属于OSI七层模型中的网络层协议。
注明:ARP协议由IETF互联网工程任务组于1982年11月在RFC 826中描述并发布。在ARP协议的基础上,衍生出了反向ARP、代理ARP、免费ARP等。
2、ARP原理
在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。其工作原理如下:
从图中拓扑可以看出,PC1需要与PC2进行通信,此时PC1向整个局域网发送ARP Request即ARP请求包,此请求包为二层广播包,目的地址为ffff.ffff.ffff,保证同一局域网的所有主机都能够收到此请求包。PC2收到广播包请求后,向PC1发送单播的ARP Reply包即ARP回复包。此后,PC1将PC2的IP和MAC地址映射信息存储在本地ARP表项中,用于实现后续数据封装使用,如下:
从上图看出,当PC1需要访问PC2时,通过查看ARP映射表实现数据封装,之后再向外发送数据包。
【ARP实验步骤】
1、通过GNS3搭建实验拓扑,采用两台路由器模拟主机,开启接口,并配置IP地址,如下:
R1(config)#int f0/0 R1(config-if)#no shutdown R1(config-if)#ip address 12.1.1.1 255.255.255.0 R2(config)#int f0/0 R2(config-if)#no shutdown R2(config-if)#ip add 12.1.1.2 255.255.255.0
2、在GNS3上开启wireshark抓包,在R1和R2之间抓取ARP数据包,如下:
(1)在R1和R2的链路上,点击右键,弹出“开始抓包”=>
(2)弹出抓包对话框,点击OK,如下=>
(3)此时wireshark对话框出现,并开始进行实时流量监控
3、在R1上Ping R2的地址,如下:
R1#ping 12.1.1.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.1.1.2, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 32/38/44 ms
可以看到,此时R1 Ping通R2,从实验结果来看,在发送ICMP数据包时<即Ping包>,有一个包没有发送,所以显示为”.”而不是“!”。这说明在发生正常的ICMP数据包之前,有一个ARP的请求回复过程。
4、在wireshark软件界面中观察数据包
(1)通过拖拽wireshark右侧进度条,可以找到如下界面
(2)接下来我们来仔细分析ARP的分组内容,先将鼠标移至最上方的ARP请求包,得到下图:
以下表格详细解读了ARP请求包的内容。
字段 |
解释 |
Hardware type |
硬件类型,标识链路层协议 |
Protocol type |
协议类型,标识网络层协议 |
Hardware size |
硬件地址大小,标识MAC地址长度 |
Protocol size |
协议地址大小,标识IP地址长度 |
Opcode |
操作代码,标识ARP数据包类型 |
Sender MAC address |
发送者MAC,此处为R1的MAC |
Sender IP address |
发生者IP,此处为R1的IP |
Target MAC address |
目标MAC,此处全0表示在请求 |
Target IP address |
目标IP,此处为R2的IP |
当发送ARP请求时,会将【Target MAC address】字段置空,代表本地没有,邻居收到之后,需要将此字段填充并返回。
(3)接下来我们来观察下ARP的回复包,如下:此时可以看到,R2将自己的MAC置于【Sender MAC address】字段中,完成整个ARP过程。
5、在R1查看ARP表,如下:
R1#show arp Protocol Address Age (min) Hardware Addr Type Interface Internet 12.1.1.1 - cc00.2184.0000 ARPA FastEthernet0/0 Internet 12.1.1.2 68 cc01.2184.0000 ARPA FastEthernet0/0
可以看到,此时R1的ARP表除了有自己的地址映射信息,也具备R2的地址映射。此实验完成。
-
很清楚。(0) 回复 (0)