计算机网络课程设计实验报告.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256) 文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256) 计算机网络课程设计实验报告 中南大学课程设计报告 课程:计算机网络课程设计 题目:基于Winpcap的网络流量统计分析 指导教师:张伟 目录 总体设计 实体类设计 --------P3 功能类设计 --------P3 界面设计 --------P3 详细设计 实体类实现 --------P4 功能类实现 --------P4 界面实现 --------P5 源代码清单及说明 一、 --------P7 二、 --------P9 三、 --------P9 四、 --------P13 运行结果 --------P19 第五章 心得体会 --------P21 总体设计 实体类设计 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计 功能类设计 网卡获取 包的抓捕 包的处理 界面设计 布局 按钮功能连接 第二章 详细设计 一、实体类实现 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计。 本程序采用Java编写,基于win10pcap。Win10pcap是winpcap在win10系统上的适用版本。Java对于winpcap使用jnetpcap进行支持。对于TCP、UPD、ICMP、ARP、广播数据包五种类型的包,在jnetpcap的jar包中大部分已经封装好了相关的实体类型。对应如下: ARP 实体类: UPD 实体类: IP 实体类: TCP 实体类: UDP 实体类: 而对于其中的广播数据包,其判断我利用捕获到的IP包的目的地址进行判断,若其目的地址为,则认为其为广播数据包。 功能类实现 (1)网卡获取 电脑上的包的发送与接受都得通过网卡来进行,所以为了完成局域网数据包的捕获和统计,我首先要做的是获取到电脑上的网卡列表,然后选择一个网卡进行包的捕获。而相关代码在jnetpcap的官网的示例代码1中可以找到,从中可以学习到的是jnetpcap的各种使用方法。 在我电脑上可以捕获到三个网卡,一个是本机自身的物理网卡,另外两个是虚拟机模拟出的虚拟网卡。 包的抓捕 Jnetpcap中包的抓捕也是有着固定的格式的,这在官网的示例代码中也是可以找到的,只要设置好相关的参数,就可以进行抓捕 具体方法如下,利用Pcap对象的loop方法。就是实例化一个Pcap对象,然后调用其loop方法。第一个参数arg0 代表循环次数,第二个参数就是传入一个PcapPaketHandler或其子类的对象,这个对象类型是要由我们自己编写的对包处理的方法。 包的处理 在这里对捕获的包的处理我是编写了一个PcapPacketHandler的子类,然后重写了nextPacket()方法。在这个方法里我把捕获到的包当作参数传递个具体的处理方法(packet)。 (packet)方法是由我自己编写的。handlePacket是packetMatch的一个静态方法,可以直接调用。在这个方法里面,它会把捕获到的包的包头和TCP、UPD、ICMP、ARP、广播数据包五种类型的包的包头进行一一比较,以确认是否抓到了了相对应的包。 这儿还用到的就是jnetpcap的内部的一个方法,就是(arg0),通过在arg0传入已在jnetpcap里封装好的包的类型的实例,可以很好的判断该包是属于什么包类型的,是TCP、UPD、ICMP、ARP还是广播数据包。 然后内部对于各种包的信息的输出也有很好的支持,可以直接使用相应的toString方法,就可以输出各种相关信息。 网络流量统计 对于各个捕获到的包,分别针对各种类型的包设计了一个Double变量用于统计其传送过来相应包头的大小,并在停止抓包后将统计的数据输出在最下方的TextArea里面。 界面实现 本程序在设计GUI时使用了Java的一个很好的插件WindowBuilder。 (1)布局 一开始使用Border Layout布局,安排好各个按钮位置,文本框位置。后来采用Absolute layout,并将窗口大小固定化。 在布局的最上方是一个JToolBar的实例对象,其中放置有选择网卡、开始抓包、停止抓包、清空记录等四个选项,中间是两个带滚动条的多行文本框,左边的用于显示捕获的包的列表,右边用于显示左边的我们选中的包的具体信息。最下方会在停止抓包按钮生效后输出总的抓包情况。 按钮功能连接 在布局的最上方是一个JToolBar的实例对象,其中放置有选择网卡、开始抓包、停止抓包、清空记录等四个选项,其中选择网卡的功能具体由JComboBox(多文本选择框)上的选项决定,这个多文本选择框监听着 网卡获取的方法,它会从该方法获 计算机网络课程设计实验报告主要涉及了网络流量统计分析的实现,使用了Winpcap库的Windows 10版本——Win10pcap,并且利用Java编程语言和jnetpcap库来实现。实验报告分为几个关键部分,包括总体设计、详细设计、源代码清单及说明、运行结果和心得体会。 在总体设计阶段,主要关注了以下几个实体类的设计: 1. TCP包:传输控制协议数据包,用于可靠的数据传输。 2. UDP包:用户数据报协议数据包,提供无连接的数据传输服务。 3. ICMP包:互联网控制消息协议数据包,用于网络诊断和错误报告。 4. ARP包:地址解析协议数据包,用于将IP地址映射为物理MAC地址。 5. 广播数据包:目的地址为的IP包被视为广播数据包。 功能类设计则包含了以下关键步骤: 1. 网卡获取:获取计算机上可用的网络接口,包括物理网卡和虚拟网卡。 2. 包的抓捕:利用jnetpcap库的Pcap对象的`loop`方法,设定循环次数和包处理函数,实现数据包的捕获。 3. 包的处理:创建自定义的PcapPacketHandler子类,处理捕获到的包,通过`handlePacket`方法比较包头来识别包类型,并使用jnetpcap库的内部方法判断包的类型。 4. 网络流量统计:为每种类型的包设计变量,统计包头大小,最终展示在GUI中。 详细设计部分进一步阐述了实体类的实现,如如何利用jnetpcap库中已有的类来表示不同类型的包。功能类的实现则详细描述了获取网卡、设置包捕获参数以及处理捕获到的包的方法。此外,界面设计使用了Java的WindowBuilder插件,构建了包含选择网卡、开始/停止抓包、清空记录等功能的图形用户界面,使用了Border Layout和Absolute Layout布局管理器,并在界面中实时显示捕获信息和统计结果。 在源代码清单及说明中,可能包含了各个功能模块的代码片段和注释,解释了每个部分的功能和实现逻辑。运行结果部分展示了程序运行时的实际输出,包括捕获的包列表和统计信息。心得体会部分则记录了作者在完成实验过程中的思考和收获。 这个课程设计项目是一个实用的网络监控工具,通过编程实现了网络流量的实时捕获、分类和统计,这对于理解和掌握网络协议、网络数据分析以及Java编程具有很高的实践价值。
剩余12页未读,继续阅读
- Vincharl2023-06-25这个资源总结的也太全面了吧,内容详实,对我帮助很大。
- BladeMasterXimen2023-12-12实在是宝藏资源、宝藏分享者!感谢大佬~
- 2301_768844202023-09-10资源内容详细全面,与描述一致,对我很有用,有一定的使用价值。
- 粉丝: 105
- 资源: 9354
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助