APP下载

基于GNS3+Wireshark的网络协议分析实验教学改革

2022-11-03彭玉兰代琪怡李佳芮李宗雷

现代信息科技 2022年18期
关键词:数据包软件实验

彭玉兰,代琪怡,李佳芮,李宗雷

(1.电子科技大学成都学院 网络空间安全系,四川 成都 611731;2.西南交通大学 自动化与智能工程系,四川 成都 611756)

0 引言

“复旦共识”“天大行动”和“北京指南”新工科建设“三部曲”的推进,使得工科教育新路径的开拓迫在眉睫。加之以大数据、人工智能、云计算、物联网及区块链等技术为驱动力的新经济蓬勃发展,对科技人才的需求进一步增加,对转型中的高校应用型人才培养提出了挑战。

“网络协议分析”是计算机网络与高级编程语言相互融合而形成的一门综合课程,在网络工程、信息安全等专业的本专科生教学中占据重要地位。“网络协议分析”分为理论课程和实验课程,理论课程侧重于讲解TCP/IP 协议簇、协议分析技巧等,实验课程重点是协议解析。当前高校的“网络协议分析”课程教学常用模式为理论教学为主,少量课内实验为辅。因此存在缺少实验平台,教学内容形式单一等问题,导致无法适应应用型人才培养的时代需求。

本文针对“网络协议分析”实验课程存在的上述问题,提出了一种新型的多软件融合实验教学方法。该教学方法同时运用网络虚拟软件GNS3、网络协议分析软件Wireshark及Libpcap 库的各类接口分析网络协议,因而能够准确观察到协议工作的中间过程。以ARP 协议为例,该教学方法清晰展示了ARP 协议实验拓扑图的构建、ARP 协议数据的触发、捕获及分析等。

1 教学方法改革概述

“网络协议分析”实验课程传统教学方法与所提出教学方法的对比如图1所示。传统教学方法步骤如图1(a)所示,由于所有的流程由Wireshark 软件一键完成,无法了解协议的具体工作过程。为了实现协议工作过程的准确观察,构建了如图1(b)所示的新型教学方法。首先,利用GNS3软件搭建网络拓扑结构,模拟网络协议环境;进一步,使用Wireshark 软件进行数据包的捕获、分析和保存;最后在Linux 系统下调用Libpcap 接口编码实现网络协议的分析并与Wireshark 软件分析结果对比,验证所提出的网络协议分析方法的有效性。

图1 网络协议分析方法对比

2 相关工具介绍

2.1 GNS3

目前常用的网络模拟软件有PacketTracer、GNS3 等。其中的GNS3(Graphical Network Simulator)软件具有图形化界面且可运行在Windows、MacOS 及Linux/Unix 等众多平台,包含Dynamips、WinPCAP、Wireshark等多个应用组件。GNS3 软件功能丰富,适合初学者使用。

2.2 Wireshark

Wireshark(原名Ethereal)软件是一款免费开源的协议解析器,是目前世界范围内应用最广泛的网络协议解析软件之一。Wireshark 软件是一款通用化的网络数据嗅探器和协议分析器,可运行在Windows、MacOS 及Linux/Unix 等众多平台。通过Wireshark 软件可以分析底层通信机制,对网络进行故障定位和排查,以及对网络黑客渗透攻击进行快速定位并找出攻击源等。

2.3 Libpcap

Libpcap(Packet Capture Library)是由Berkeley 劳伦斯国家实验室开发的可运行在Linux/Unix 平台下的网络数据包捕获函数库。Libpcap 库提供的C 函数接口能够捕获经过指定网络接口的数据包、实现网络数据包的过滤、网络数据包分析及存储。

3 ARP 协议实验过程

3.1 设计ARP 实验拓扑图

ARP 协议称为地址解析协议(Address Resolution Protocol),位于TCP/IP协议栈的网络层,仅适用于局域网,为网络地址(IP地址)与对应的硬件地址(MAC 地址)之间提供动态映射。

使用GNS3 软件设计的ARP 实验网络拓扑结构如图2所示,包括一个交换机和三台PC。交换机SW 同时连接PC1(IP地址为192.168.1.1)、PC2(IP 地址为192.168.1.2)和PC3(IP地址为192.168.1.3)。

图2 ARP 实验拓扑图

3.2 配置信息

3.2.1 交换机配置

首先选择路由器c3745,右键选择“Changesymbol”修改图标为交换机图标;右键选择“Configure”修改名称为SW,将Slots 的slot 1 修改为NM-16ESW,即为以太网交换机接口。具体配置步骤如图3所示。

图3 交换机配置步骤

3.2.2 三台PC 配置

PC1 配置信息如下:

PC1#conf t

PC1(config)#int f0/0

PC1(config-if)#no shutdown

PC1(config-if)#ip add 192.168.1.1 255.255.255.0

PC1(config-if)#end

PC2 配置信息如下:

PC2#conf t

PC2 (config)#int f0/0

PC2 (config-if)#no shutdown

PC2 (config-if)#ip add 192.168.1.2 255.255.255.0

PC2 (config-if)#end

PC3 配置信息如下:

PC3#conf t

PC3 (config)#int f0/0

PC3 (config-if)#no shutdown

PC3 (config-if)#ip add 192.168.1.3 255.255.255.0

PC3 (config-if)#end

3.3 执行ping 命令

ping 命令用于检测网络连通情况,根据域名获取服务器IP 等。在ARP 协议实验中利用ping 命令测试PC1 和PC3的连通情况。

在PC1 上执行ping 命令之前,分别执行命令“showarp”查看PC1、PC2和PC3上的ARP缓存表内容,结果如图4所示。然后在PC1 上pingPC3,执行命令“ping 192.168.1.3”,命令执行结果为“Success rate is 80 percent (4/5)”。

图4 ping 实验之前缓存表内容

3.4 Wireshark 软件捕获数据包

在GNS3 环境下调用Wireshark 软件进行网络数据包的捕获,必须在执行ping 命令之前打开Wireshark 软件。分别选中网络拓扑结构中的三条链路(PC1 与SW、PC2 与SW、PC3 与SW 之间),右键选择“Startcapture”后输入与三条链路相对应的文件名PC1_SW.pcap、PC2_SW.pcap、PC3_SW.pcap,即可开始数据包的捕获。捕获的三条链路数据包中与ARP 协议相关的信息如图5所示。

图5 ARP 协议相关数据包

4 结果分析

4.1 ping 实验结果分析

在3.3 节中执行ping 命令的成功率是80%,即第一个ping 包不通。这是因为当PC1 发送第一个ping 包时,发现没办法完成数据链路层的封包。原因是PC1 只知道PC3 的IP 地址为192.168.1.3(从图4 可以看出,ARP 缓存表中只有PC1 的IP 地址和MAC 地址的对应关系),而并不知道PC3 的MAC 地址,于是封装失败,第一个ping 包没有发送出去。与此同时,PC1 会马上启动一个ARP 进程,以广播的方式发出一个ARP 请求,询问PC3 的MAC 地址。

4.2 Wireshark 捕包结果分析

捕获的ARP 协议数据包中的PC1_SW.pcap 与PC3_SW.pcap 的数据相同,均为一对ARP 请求应答,四对ICMP请求应答,而PC2_SW.pcap 中只有一个ARP 请求包。根据上述数据结果,说明ARP 协议是广播请求单播应答,并且ARP 协议原理具有以下特征:PC1 将包含目标IP 地址(192.168.1.3)的ARP 请求广播到局域网络上的所有主机,PC2 和PC3 均捕获到了PC1 的ARP 广播请求包。PC2 收到广播包后直接丢弃,PC3 收到询问自己物理地址的ARP 请求时,首先查看ARP 表中是否包含PC1 的IP 地址和MAC 地址的相关记录,如果没有则更新ARP 缓存表(新增一条IP 地址为192.168.1.1,MAC 地址为c4:02:0c:c5:00:00 的记录)并构建ARP 响应信息回复PC1。PC1 收到PC3 返回的响应消息,以此确定目标PC3 的物理地址为c4:04:0d:bc:00:00;PC1 收到回复消息后将该IP 地址和物理地址存入本机ARP 缓存中并保留一定时间,下次请求时直接查询ARP 缓存以节约资源。

ping 命令执行结束后查看三台PC 的ARP 缓存表,如图6所示。PC2 的ARP 缓存表没有任何变化,而PC1 和PC3的ARP 缓存表均发生变化。PC1 在之前的基础上增加一条IP 为192.168.1.3 的记录,PC3 在之前的基础上增加一条IP为192.168.1.1 的记录。

图6 ARP 缓存表变化

4.3 调用Libpcap 接口分析协议

在理解ARP 协议原理后查阅RFC 文档获得ARP 数据报文格式及ARP 数据包的详细信息列表,如图7所示。首先根据图7 定义出ARP 协议数据报文格式的结构体。

图7 ARP 数据报文格式

然后在Linux 平台下进行C 语言编码,调用Libpcap 接口捕获ARP 协议数据并解析。首先调用接口pcap_open_oラine 读取离线文件PC1_SW.pcap,再结合pcap_loop 和回调函数,在回调函数中进行数据解析,依次解析以太网协议、ARP 协议并与Wireshark 软件结果对比,对比结果如图8所示。图8 表明,利用C 语言编码可实现协议的正确解析。与Wireshark 软件不同的是所提出的教学方法能够准确观察到协议的工作过程(如图2—图6),而Wireshark 软件仅仅只能看到如图8所示的最终协议解析结果。此外,随着协议种类的增多,该教学方法还可以在Linux 系统上灵活地实现网络流量识别、网络行为审计、网络攻防等系统的设计等,这是该教学方法相对于传统教学方法的另一个优势。

图8 ARP 协议解析结果对比

5 结论

为了克服目前“网络协议分析”实验课程缺少实验平台,教学内容形式单一等问题,提出了一种新型的将网络虚拟软件GNS3、Wireshark 与Libpcap 库融合起来使用的实验教学方法。该实验教学方法有望加深学生对网络协议工作中间过程的理解,进而提高学生网络协议分析的能力,增强学生的网络安全防范意识,对高校“网络协议分析”实验课程的授课具有一定的借鉴意义。

猜你喜欢

数据包软件实验
基于时隙ALOHA与NOMA的通信系统性能分析
C#串口高效可靠的接收方案设计
有趣的识花软件
声波实验
关于植物的小实验
网络数据包的抓取与识别
即时通讯软件WhatsApp
最酷的太空实验
让合作探究走进实验课堂
丰富多彩的Android软件