毕业设计之网卡流量监控_第1页
毕业设计之网卡流量监控_第2页
毕业设计之网卡流量监控_第3页
毕业设计之网卡流量监控_第4页
毕业设计之网卡流量监控_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网 卡 流 量 监 控 毕业设计说明书系 部: 学生姓名: 专业班级: 学 号: 指导教师: 年 月 日网 卡 流 量 监 控摘 要随着社会的发展,互联网已成为我们生活中不可缺少的一部分,而网卡在其中起着重要的作用,它是个人用户与互联网沟通的桥梁。通过对网卡流量的监控,使用相应的软件对流量出入的监视,清楚的知道流量的状态,从而不管在管理方面还是在安全方面,都会对网络管理人员有很大的帮助。本文介绍通过在.net开发平台上开发一个简单的网卡流量监控系统的过程,了解针对网卡监控的功能实现,掌握相关开发技术,同时利用软件工程的相关理论知识,了解软件开发的方法与步骤。首先,简单介绍下几款带有监控功能的软

2、件,比360安全卫士等,然后了解这些软件的功能;其次选择在微软的.net开发平台上使用C#语言进行开发,编写出功能简单实用方便的监控软件。主要包括以下几个方面:开发本软件所使用的开发平台与技术;IPv4、IPv6简单介绍;功能模块;功能设计;功能实现等。最后,对本软件的开发过程进行简要总结,并介绍一下本人的体会和感想。【关键词】:网卡流量 ;.NET;C#;目 录一、概 述1.1 项目背景与意义随着互联网时代快速的发展,各类的应用软件层出不穷,也有许多专门提供各种软件下载的专业网站,如天空,华军等,这些网站提供的免费软件大大满足了普通用户的需求,也给他们展示了互联网的神奇之处。然而,有利也有弊

3、,互联网在高速发展的同时也带着安全的隐患,比如黑客的攻击,木马等,因此,网络安全也很快得到了专业人士的重视,一系列的关于安全的软件应运而生,最大特点的就是杀毒软件和防火墙。而在一些企业中,网络安全起着至关重要的作用,数据的出入是不允许出现任何闪失的。因此网管人员在做好防护的同时也利用一些专业软件对网络进行实时的监控,以便及时的做出相应措施。但是这些专业的网络软件都是针对网络流量的监控,属于企业级使用范围,而对于普通用户来说,虽然有杀毒软件和防火墙,但却不知道一些恶意程序也可以悄悄的在后台运行,可以神不知鬼不觉的连接网络,来窃取用户的信息和隐私。在我们的个人计算机上,网卡是比较容易被忽略的,它是

4、个人用户与互联网连接的关键所在,而且它也有流量的出入,因为网络上的信息流量是通过计算机的网卡转换把网上的信息呈现在我们眼前。我们往往都是关注网络流量,这也是网卡为什么容易被忽略的原因了。但是小事物往往有着大作用,通过对网卡流量的监控,普通用户的下载速率肯定是比上传速率大很多,当恶意程序连接网络时,上传速率却大大大超过下载的速率,此时用户就该注意是否存在不正常的网络连接。作为学习网络技术专业的一员,也学习了一点软件方面的编程语言,同时也掌握了一定的软件开发理论,借助这次毕业设计,想对自己的想法做个论证,开发一个简单便易操作的针对本地计算机网卡流量监控的小软件,但作为毕业设计,由于本人没有任何软件

5、开发的经验,肯定还存在许多的不足,以后会随着学习的深入而继续对它加以改善。1.2 常见监控软件简介下面举例介绍比较常见的网络监控系统,比如360安全卫士集成的网络监控,网路岗,分析它们的功能特点。1.2.1 360安全卫士的网络监控360安全卫士是一款安全类上网辅助软件,它拥有查杀恶意软件,插件管理,病毒查杀,诊断及修复四大主要功能,同时还提供弹出插件免疫,清理使用痕迹以及系统还原等特定辅助功能。而在它的7.0版本中也正式推出了网络流量的监控功能,主要作用是可以查看系统内各个软件使用网络上传/下载速度,可以帮助用户找出后台偷偷上传的软件。现在网络上出现越来越多的软件因各种目的而联网,有是为产品

6、更新升级,有的是为了宣传广告,特别是有些下载工具和一些视频软件及在线音乐播放器等软件,会产生很多的上传流量,这样不仅许多用户的隐私因此而被泄漏,而且上网的效率也会有大大的折扣,而360的流量监控功能可以清晰的看到每个网络连接使用的IP地址和端口,并且流量监控使用系统标准的底层智能流量获取技术,不占用带宽资源,不会影响系统性能和网速。从以上简单的介绍可以看出,360安全卫士整体是个功能强大,很好用的安全防范软件。但从单个看来,它仍然有一些问题。当用户安装某些程序,并且是完全信任的程序的时候,会提示一些不必要的安全信息,而且一旦拒绝,有些程序是无法安装成功的。它的流量监控也很是强大,它也许能保证不

7、获取用户的隐私,但是它能保证不得到用户计算机的相关信息么,这个就不知道了。1.2.2 网监管软件-网路岗网路岗是目前国内领先的上网监管软件,现在已经推出很多代的网路岗,而且越来越强大,能通过旁路对网络数据流进行采集、分析和识别,实时监视网络系统的运行状态,记录网络事件、发现安全隐患,并对网络活动的相关信息进行存储、分析和协议还原。能追踪网络运作情况,一旦发送问题,立即传送警示讯息,或重新启动异常中止的服务,或自动启动某个程序,搜集网络上各装置的重要信息,然后利用这些数据制作出各装置不同层面的利用率与可用性的报表,使之一览无遗。正是这一系列的强大功能,使之在一下机构,企事业单位和校园网吧得到了广

8、泛的应用,但对于个人用户来说,它的功能太杂,而且一般用户只是简单的上上网,根本用不到这些功能,最终要的,它还不是免费的。以上简单介绍的网络监控软件都是针对与网络流量的,而网络流量跟网卡流量是有区别的,对于个人用户来说,网卡流量的状态也可以从一定程度上体现带宽使用的情况。1.3 相关技术及开发工具介绍本系统采用面向对象的软件开发办法,以Microsoft公司的可视化集成开发环境 Visual Studio .Net 作为开发平台,以C#作为开发语言实现预定的需求功能。1.3.1 Visual Studio .Net集成开发环境简介.Net是 Microsoft XML Web services

9、平台。.Net 平台为创建新一代分布式Web应用提供了所有的工具和技术(表示技术、构件技术和数据库技术)。它支持标准的Internet协议,包括HTTP协议、XML(可扩展标记语言)和SOAP(简单对象访问协议),从而实现了异构系统间应用程序的集成和通信。.Net 平台包括5个主要部分:ØWindows .NetØ.Net企业级服务器Ø.Net Web服务构件Ø.Net FrameworkØVisual Studio .NetVisual Studio .Net 是为建立基于.Net Framework应用程序而设的一个可视化集成开发环境(In

10、tegrated Development Enviroment,IDE)。它提供了更优秀的多种编译语言的编辑和编译统一的开发平台,他是一个快速开发企业级Web应用程序以及高性能桌面应用的工具。它为所有的编程语言提供了简单统一的代码编辑器,包括XML编辑器、HTML编辑器、SQL Server接口、以图形化的方法设计服务器构件的设计器、监控远程机器的Server Explorer。可以说,VisualStdio .Net集中了建立分布式应用所需的功能。使用此集成开发工具而不是用SDK编辑C#程序有以下主要原因:ØIDE支持首行缩进,切c#程序的关键字等可用不同的颜色直观表示,以便检查。

11、ØIDE的语法导航功能可实现动态查找、提示编辑工程中的错误。Ø便于开发Windows应用程序。可以像Visual Basic一样直接拖放控件来“绘制”Windows窗体。1.3.2 C#语言简介C#是一种现代的、面向对象的语言,它结合了C/C+和Visual C+的强大功能以及Visual Basic 的简单易用性。C#有以下新特性:Ø简单,C#做了些该进,使语言更简单。Ø面向对象,C#支持面向对象的三种编程原则:封装、继承和多态。Ø类型安全,C#去掉了指针,从根本上保证了程序的稳定性和类型安全。Ø版本控制,C#实现了版本技术,避免了

12、“DLL灾难”。Ø兼容性,C#允许在遵守.Net Framework CLS 的条件下访问不同的API,可以与Windows的几种传统服务交互。Ø灵活性,C#允许声明一些不安全的方法和类,从而使用指针、结构和静态数组。总之,C#是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。1.3.3 IPv4、IPv

13、6协议的简介及比较IPv4是Internet Protocol version 4(网际协议版本4)的英文简称,而中文简称为“网协版4”。 目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。IPv4的协议结构:如图1-1所示:图1-1 Ipv4协议格式图它的最大问题是网络地址资源有限,而IPv6的出现完全解决了这个问题,它所拥有的地址容量是IPv4的约8×1028倍,IPV6地址长度为128比特,地址空间增大了2的96次方倍,灵活的IP报文头部格式使用一系列固定格式的扩展头部取代了IPV4中可变长度的选项字段。

14、IPV6中选项部分的出现方式也有所变化,使路由器可以简单路过选项而不做任何处理,加快了报文处理速度,IPV6简化了报文头部格式,字段只有7个,加快报文转发,提高了吞吐量,提高安全性,更支持多种的服务类型。IPv6的包头格式:如图1-2所示:图1-2 Ipv6协议格式图IPv6与IPv4相比有以下特点和优点:(1) 更大的地址空间。IPv4中规定IP地址长度为32,即有232-1个地址;而IPv6中IP地址的长度为128,即有2128-1个地址。夸张点说就是,如果IPV6被广泛应用以后,全世界的每一粒沙子都会有相对应的一个IP地址。 (2) 更小的路由表。IPv6的地址分配一开始就遵循聚类(Ag

15、gregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。 (3) 增强的组播(Multicast)支持以及对流的支持(Flow-control)。这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台。(4) 加入了对自动配置(Auto-configuration)的支持。这是对DHCP协议改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。(5) 更高的安全性。在使用IPv6网络中,用户可以对网络层的数据进行加密并对IP报文进行校验,这极大地增强了网络安全。

16、二、 总体功能设计与实现 在第一章中简单的分析了一些个人和企业所使用的监控软件,IPv4、IPv6的简单介绍,还有编写本程序使用的技术、工具等,下面将从功能设计、功能实现两个方面重点描述。2.1 功能设计现在的计算机无疑都是比较前卫的,而且随着无线技术的发展,无线网卡也出现在个人计算机上,所以一般计算机都具备两块以上的网卡,根据一下监控软件的功能,去掉那些复杂的功能,保留最实用常用的功能,专门针对本机网卡的流量监控。下面主要介绍程序的功能设计及描述、功能模块图等。2.1.1 功能设计及描述 本程序的主要任务和目的是对本地计算机所有的网卡流量进行监控,加上一些辅助的本地信息查询,进程的显示得到当

17、前计算机的基本信息,达到功能简洁方便,消耗资源少而又不影响日常娱乐的需求。其主要划分为下面三个功能模块,每个功能模块的作用描述如下:本机基本信息查询:查看IP地址:主要查看本机在局域网内中的IP地址查看主机名:用于查看本机计算机的名称查看MAC地址:查看网卡的唯一地址查看CPU信息:获取CPU型号、序列号流量监控:获取到本机的网卡列表,然后针对某块网卡进行动态的流量监控,并显示出来显示进程:获取当前计算机正在前台或后台运行的应用程序的进程2.1.2 功能模块图其具体功能如图2-1所示:图2-1 2.2 功能实现下面主要介绍如何根据上述的功能模块图实现具体的功能2.2.1 主界面实现下图为本系统

18、的主要界面,由Visual Studio中已安装模板Windows 应用窗体程序(winform)生成,所用的控件、组件、容器、文本框等都是有Winform提供,本想添加点颜色使之更加的生动,但本人对于美工不是很擅长,以后另行绘制,由于界面是控件、组件等拖放组成,大部分代码有窗体设计器自动生成,需个人改动的并不多,所用这部分就不详细说明了,只把主窗体MainForm的代码示下。如图2-2所示: 图2-2ponents = new System.ComponentModel.Container();this.tabControl1 = new System.Windows.Forms.TabCo

19、ntrol();this.tabPage1 = new System.Windows.Forms.TabPage();this.groupBox1 = new System.Windows.Forms.GroupBox();this.labelCPU = new System.Windows.Forms.Label();this.tbMAC = new System.Windows.Forms.TextBox();this.tbname = new System.Windows.Forms.TextBox();this.tbIP = new System.Windows.Forms.TextB

20、ox();this.chakCPU = new System.Windows.Forms.Button();this.chakMAC = new System.Windows.Forms.Button();this.chakIPaddress = new System.Windows.Forms.Button();this.chakcompname = new System.Windows.Forms.Button();this.tabPage2 = new System.Windows.Forms.TabPage();this.groupBox2 = new System.Windows.F

21、orms.GroupBox();this.groupBox4 = new System.Windows.Forms.GroupBox();this.down = new System.Windows.Forms.Label();this.up = new System.Windows.Forms.Label();this.label1 = new System.Windows.Forms.Label();this.label2 = new System.Windows.Forms.Label();this.groupBox3 = new System.Windows.Forms.GroupBo

22、x();this.listadapters = new System.Windows.Forms.ListBox();this.download = new System.Windows.Forms.Label();this.bshow = new System.Windows.Forms.Button();this.tabPage4 = new System.Windows.Forms.TabPage();this.listprocess = new System.Windows.Forms.ListView();this.shows = new System.Windows.Forms.B

23、utton();this.endupprogram = new System.Windows.Forms.Button();this.timercounter=newSystem.Windows.Forms.Timer(ponents);this.tabControl1.SuspendLayout();this.tabPage1.SuspendLayout();this.groupBox1.SuspendLayout();this.tabPage2.SuspendLayout();this.groupBox2.SuspendLayout();this.groupBox4.SuspendLayo

24、ut();this.groupBox3.SuspendLayout();this.tabPage4.SuspendLayout();this.SuspendLayout();2.2.2 本地信息查询功能实现1、查询IP地址:这个功能需要使用到 System.Net命名空间,在C#编程中,可利用它提供的DNS类获取IP地址,主要代码如下:string ipaddress = ""IPAddress addresslist=Dns.GetHostAddresses(Dns.GetHostName();for (int i = 1; i < addresslist.Leng

25、th; i+)ipaddress += addresslisti.ToString() + ""tbIP.Text = ipaddress.ToString() + ""上面的代码就是利用了DNS类,它主要是从域名系统中查找关于指定主机的信息,通过Dns.GetHostAddresses(Dns.GetHostName()得到指定主机的IP地址,并把它赋予IPAddress类中的变量,再把它在文本框中显示出来。2、查询主机名:这部分功能与上面的IP地址功能类似,也通过System.Net命名空间和DNS类来从域名系统中获得主机名,主要代码如下:strin

26、g hostname = Dns.GetHostName();tbname.Text = ""tbname.Text = hostname + "n"看上去非常的简单,最主要的还是同过DNS类来实现3、查询MAC地址:在获取本地MAC地址时,可以使用WMI规范,在.NET框架中,WMI规范的实现定义在System.Management命名空间中,但要使用该命名空间就必须先引用该程序指令集,所以在右侧右击引用,选择添加引用,在.NET中找到System.Management即可。主要代码如下:ManagementClass mac = new Manage

27、mentClass("win32_networkadapterconfiguration");ManagementObjectCollection mc = mac.GetInstances();foreach (ManagementObject m in mc)if (bool)m"IPEnabled" = true)tbMAC.Text += m"MacAddress".ToString() + "n"m.Dispose();通过ManagementClass类来提取MAC地址信息,再用ManagementOb

28、jectCollection类来检索并返回对象的集合,通过循环来找到MAC地址字段值,并在文本框中显示。4.查询CPU信息:与获取MAC地址的功能类似,也是通过可以使用WMI规范,System.Management的命名空间来实现模块功能。主要代码如下:ManagementObjectSearcher query;ManagementObjectCollection querycollection;string sql = "select * from win32_processor"query = new ManagementObjectSearcher(sql);que

29、rycollection = query.Get();foreach (ManagementObject mo in querycollection)labelCPU.Text += "cpu型号:" + "n" + mo"name".ToString() + "n" + "n"string cpuInfo = ""ManagementClass cimobject = new ManagementClass("Win32_Processor");Mana

30、gementObjectCollection moc = cimobject.GetInstances();foreach (ManagementObject mo in moc)cpuInfo = mo.Properties"ProcessorId".Value.ToString();labelCPU.Text += "cpu序列号:" + "n" + cpuInfo.ToString() + "n"这段代码中:ManagementObjectSearcher类用于根据指定的查询检索管理对象的集合Manageme

31、ntObjectCollection类为管理对象的集合,分别定义这个两个类的变量,通过SELECT语句提取处理器的所有信息,并提取其中的信息,通过循环语句得到CPU的型号。CPU的序列号则是硬件ID,通过上述两个类调用CPU属性值,得到属性ID字段值,并显示出来。2.2.3 流量监控功能的实现这个模块的功能也可分为两个小模块,分别是获取网卡列表和对指定的网卡进行流量监控。流量监控功能的实现跟上面的功能实现相似,也是通过引用NetworkMonitor的程序指令集和调用using Echevil命名空间。值得注意的是,这个模块所引用的链接库在软件的调用库中没有,因此,不得不寻求网上朋友的帮助了。

32、把下载下来的NetworkMonitor.dll放到程序文件中,并在代码页引用。1、 获取网卡列表:主要代码如下:monitor = new NetworkMonitor();this.adapters = monitor.Adapters;if (adapters.Length = 0)this.listadapters.Enabled = false;MessageBox.Show("No network adapters found on this computer.");return;this.listadapters.Items.AddRange(this.ada

33、pters);定义NetworkMonitor类中的变量,通过调用monitor.Adapters得到本机所有适配器的信息,并添加到列表框中。联网状态下流量信息如图2-3所示:图2-3迅雷下载任务如图2-4所示:图2-4迅雷下载下网卡流量信息如图2-5所示:图2-52、 监控指定的网卡: 这个模块需要用到类似计数器的功能 主要代码如下:monitor.StopMonitoring();monitor.StartMonitoring(adaptersthis.listadapters.SelectedIndex);this.timercounter.Stop();this.up.Text = &

34、quot;"this.down.Text = ""上述是在列表框控件上实现针对选择具体的列表项,然后对该网卡的上传速率和下载速率分别赋空值,当点击显示信息时才开始监控:if (this.listadapters.SelectedIndex < 0)MessageBox.Show("请指定要监控的网卡", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);this.timercounter.Stop();elsethis.timercounter.Start(

35、);上述代码是防止在没有选择网卡项的情况下而实现的,if语句判断有没有选中指定的网卡,如果没有选择,则this.listadapters.SelectedIndex等于-1,即小于0,反之就会触发计数器对指定网卡进行监控。NetworkAdapter adapter = this.adaptersthis.listadapters.SelectedIndex;this.up.Text = string.Format("0:n kbps ", adapter.UploadSpeedKbps);this.down.Text=string.Format("0:nkbps

36、",adapter.DownloadSpeedKbps;nsc1.Value = (int)adapter.UploadSpeed / 100; nsc2.Value = (int)adapter.DownloadSpeed / 100;上面一部分也是通过调用monitor.StopMonitoring()和monitor.StartMonitoring()来实现对列表框中的指定网卡进行监控,中间的命令是当选中指定网卡后开始执行监控,调用计数器,在这个过程中,又通过调用format把NetworkMonitor中的adapter.UploadSpeedKbps(上传流量)和adapt

37、er.DownloadSpeedKbps(下载流量)转换成0:n kbps格式,并且把流量在波形控件中显示,从而实现对指定网卡的流量监控。2.2.4 显示进程信息的功能实现这个模块的功能实现大部分用到了listview控件的属性,代码如下:this.listprocess.View = View.Details; 表示在控件中的显示方式 如图2-4this.listprocess.Columns.Add("进程名称", 170, HorizontalAlignment.Left);this.listprocess.Columns.Add("内存使用", 150, HorizontalAlignment.Left);上面代码表示在listview控件的第一行显示“进程名称”,“内存使用”,如图2-6所示:图2-6再调用System.Dcess得到本地系统的进程信息,代码如下:Process processes = Process.GetProcesses(); /获取进程信息Process instance;for (int i = 0; i < processes.Length; i+)instance = processesi;ListViewItem temp = new L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论