计算机网络课程设计实验报告.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《计算机网络课程设计实验报告.pdf》由会员分享,可在线阅读,更多相关《计算机网络课程设计实验报告.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机网络课程设计实验报告 Prepared on 22 November 2020中南大学课程设计报告课程:计算机网络课程设计题目:基于基于 WinpcapWinpcap 的网络流量统计分析的网络流量统计分析指导教师:张伟目录第一章 总体设计一、实体类设计二、功能类设计三、界面设计-P3-P3-P3第二章 详细设计一、实体类实现二、功能类实现三、界面实现-P4-P4-P5第三章 源代码清单及说明一、-P7二、-P9三、-P9四、-P13第四章 运行结果 -P19第五章 心得体会 -P21第一章 总体设计一、实体类设计TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计二、功能类设
2、计(1)网卡获取(2)包的抓捕(3)包的处理三、界面设计(1)布局(2)按钮功能连接第二章 第二章 详细设计一、实体类实现TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计。本程序采用 Java 编写,基于 win10pcap。Win10pcap是 winpcap在 win10系统上的适用版本。Java 对于 winpcap使用 jnetpcap进行支持。对于 TCP、UPD、ICMP、ARP、广播数据包五种类型的包,在 jnetpcap的 jar包中大部分已经封装好了相关的实体类型。对应如下:ARP 实体类:UPD 实体类:IP 实体类:TCP 实体类:UDP 实体类:而对于其
3、中的广播数据包,其判断我利用捕获到的 IP 包的目的地址进行判断,若其目的地址为,则认为其为广播数据包。二、功能类实现(1)网卡获取电脑上的包的发送与接受都得通过网卡来进行,所以为了完成局域网数据包的捕获和统计,我首先要做的是获取到电脑上的网卡列表,然后选择一个网卡进行包的捕获。而相关代码在jnetpcap的官网的示例代码 1 中可以找到,从中可以学习到的是jnetpcap 的各种使用方法。在我电脑上可以捕获到三个网卡,一个是本机自身的物理网卡,另外两个是虚拟机模拟出的虚拟网卡。(2)包的抓捕Jnetpcap 中包的抓捕也是有着固定的格式的,这在官网的示例代码中也是可以找到的,只要设置好相关的
4、参数,就可以进行抓捕具体方法如下,利用 Pcap 对象的 loop 方法。就是实例化一个Pcap 对象,然后调用其 loop 方法。第一个参数 arg0 代表循环次数,第二个参数就是传入一个PcapPaketHandler或其子类的对象,这个对象类型是要由我们自己编写的对包处理的方法。(3)包的处理在 这 里 对 捕 获 的 包 的 处 理 我 是 编 写 了 一 个 PcapPacketHandler的 子 类,然 后 重 写 了nextPacket()方法。在这个方法里我把捕获到的包当作参数传递个具体的处理方法(packet)。(packet)方法是由我自己编写的。handlePacket
5、 是 packetMatch 的一个静态方法,可以直接调用。在这个方法里面,它会把捕获到的包的包头和 TCP、UPD、ICMP、ARP、广播数据包五种类型的包的包头进行一一比较,以确认是否抓到了了相对应的包。这儿还用到的就是 jnetpcap 的内部的一个方法,就是(arg0),通过在 arg0 传入已在 jnetpcap 里封装好的包的类型的实例,可以很好的判断该包是属于什么包类型的,是TCP、UPD、ICMP、ARP 还是广播数据包。然后内部对于各种包的信息的输出也有很好的支持,可以直接使用相应的toString方法,就可以输出各种相关信息。(4)网络流量统计对于各个捕获到的包,分别针对各
6、种类型的包设计了一个 Double 变量用于统计其传送过来相应包头的大小,并在停止抓包后将统计的数据输出在最下方的TextArea里面。三、界面实现本程序在设计 GUI 时使用了 Java 的一个很好的插件 WindowBuilder。(1)布局一开始使用 Border Layout 布局,安排好各个按钮位置,文本框位置。后来采用Absolutelayout,并将窗口大小固定化。在布局的最上方是一个 JToolBar 的实例对象,其中放置有选择网卡、开始抓包、停止抓包、清空记录等四个选项,中间是两个带滚动条的多行文本框,左边的用于显示捕获的包的列表,右边用于显示左边的我们选中的包的具体信息。最
7、下方会在停止抓包按钮生效后输出总的抓包情况。(2)按钮功能连接在布局的最上方是一个 JToolBar 的实例对象,其中放置有选择网卡、开始抓包、停止抓包、清空记录等四个选项,其中选择网卡的功能具体由JComboBox(多文本选择框)上的选项决定,这个多文本选择框监听着 网卡获取的方法,它会从该方法获得一个网卡列表,然后将其文本输出。开始抓包的方法所对应的事件是抓包的事件,并且该抓包事件是个并发的进程。因为如果不将其设置为并发进程,其会使其它事件一直阻塞,甚至连停止抓包都做不到。停止抓包的事件其实是改变了开始抓包中的一个标志位,让其为假。该标志为为真,抓包程序会一直进行,该标志为为假,抓包停止。
8、下方两个文本框,左边的文本框监听的是开始抓包这个事件,当这个事件开始,这个事件会向文本框传输捕获到的包的列表,然后让其显示。而右边的文本框监听的是左边文本框我们选中的内容的相应事件。因为对于我们捕获到的包我进行了编号,当我们在左边的文本框选中了一个包之后,左边的文本框对应的包的序号会被右边的文本框获取,用于在一个列表中根据序号查找到相对应的包的详细内容,然后将其输出。统计功能的实现是在每个包的具体处理时,在处理包的方法类中已经有定义好几个静态变量用于计数,每个包具体处理时,将相对应的包类型数量加一即可。还定义了其它的变量用于统计流量大小,也是在每个包具体处理时,将相对应的包的大小加到相对应的静
9、态变量上即可。第三章 源代码清单及说明etDescription();*/ppend(ipInt24)&0 xff).append(.).appendppend(ipInt24)&0 xff).append(.).append (ipInt16)&0 xff).append(.).append(ipInt16)&0 xff).append(.).append(ipInt8)&0 xff).append(.).append(ipInt8)&0 xff).append(.).append(ipInt&0 xff).toString();(ipInt&0 xff).toString();*/*/pu
10、blic static void main(String args)public static void main(String args)/*/*Create the frame.*Create the frame.*/*/public Windows()public Windows()setTitle(u6293u5305);setTitle(u6293u5305);setDefaultCloseOperation;setDefaultCloseOperation;setBounds(100,100,692,477);setBounds(100,100,692,477);contentPa
11、ne=new JPanel();contentPane=new JPanel();(new EmptyBorder(5,5,5,5);(new EmptyBorder(5,5,5,5);setContentPane(contentPane);setContentPane(contentPane);(null);(null);(false);(false);JToolBar toolBar=new JToolBar();JToolBar toolBar=new JToolBar();(5,5,666,23);(5,5,666,23);(toolBar);(toolBar);JButton but
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内