湖南城市学院毕业论文1学生毕业设计(论文)开题报告书2008年5月25日课题名称网络协议分析姓名学号0406401*20院、系、部计算机科学与技术系专业网络工程指导教师※※※※※※※※※※※※※※※※※※※※※※※※2008届学生毕业设计(论文)材料(二)湖南城市学院毕业论文2材料清单1、毕业设计(论文)课题任务书2、毕业设计(论文)开题报告3、指导教师评阅表4、评阅教师评阅表5、答辩及最终成绩评定表6、毕业设计说明书7、附录材料湖南城市学院毕业论文3湖南城市学院2008届毕业设计说明书网络协议分析院(系)、部:计算机科学系学生姓名:指导教师:职称讲师专业:计算机科学与技术班级:0406401班完成时间:2008年5月20日湖南城市学院毕业论文4摘要嗅探器就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。Socket是Windows下网络编程的标准接口,它允许两个或多个应用程序在相同机器上,或者是通过网络互相交流。关键词嗅探器;多线程;Socket;VisualC++6.0;MFCABSTRACTSniffernetworkisabletocapturethetextontheequipment.Snifferisthelegitimateuseofnetworktraffic,inordertoidentifytheconcernsofpotentialproblemsinthenetwork.Forexample,ifacertainperiodofoperationofthenetworkisnotaverygood,tosendthetextmoreslowly,butwedonotknowthattheprobleminanyplaceatthistimecanbeusedsniffertomakeaccuratejudgementoftheissue.Snifferinfunctionanddesignofalotofdifferent.Somecanonlybeofanagreement,whileothersmaybeabletoanalysisofhundredsofagreement.SocketnetworkprogrammingunderWindowsisthestandardinterface,whichallowstwoormoreapplicationsinthesamemachine,orthroughtheInternetexchange.Keywordssnifffer;multithreading;Socket;VisualC++6.0;MFC湖南城市学院毕业论文5目录摘要································41前言·······························71.1项目开发背景························71.2项目开发目标························71.3几个关键技术························71.3.1多线程编程······················71.3.2Socket编程······················81.3.3MFC编程·······················122开发工具VisualC++简介·····················133需求分析····························143.1整体需求分析·······················143.2具体应用分析·······················143.2.1网络抓包及协议分析需求分析·············143.2.2本地网络信息获取需求分析··············153.2.3端口扫描需求分析··················153.2.4域名查询需求分析··················153.3可行性研究························153.3.1技术方面······················153.3.2经济方面······················153.3.3工作难点······················154.系统总体结构设计·························164.1软件模块结构设计·····················164.1.1软件工作模式图···················164.1.2软件模块结构图···················165.系统详细设计····················错误!未定义书签。5.1嗅探器··························18湖南城市学院毕业论文65.1.1嗅探器简介···············错误!未定义书签。5.1.2界面设计·······················185.1.3程序流程图···············错误!未定义书签。5.1.4主要代码分析··············错误!未定义书签。5.2本地网络信息浏览···············错误!未定义书签。5.2.1界面设计······················195.2.2程序流程图··············错误!未定义书签。5.2.3主要代码分析····················195.3端口扫描·························245.3.1界面设计······················245.3.2程序流程图·····················245.3.3主要代码分析····················245.4域名分析·························255.4.1主要代码分析····················256系统的安装与调试························266.1系统的安装························266.2系统的调试························267结束语·····························27参考文献······························28致谢·······························28附录·······························29湖南城市学院毕业论文71前言1.1项目开发背景随着计算机网络的不断普及,网络管理的应用需求越来越大,而嗅探器很早就在此领域发挥着重要的作用。嗅探器的种类繁多,有的是专门的某一个协议的分析器,有的则具有强大的功能,如非常著名的Ethereal,NetXRay和Sniffer等。而这些大型的嗅探器需要昂贵的价格购买,对于小型网络则有“大材小用”之弊。所以,针对小型网络的简易实用的嗅探器应运而生。这里,我们的网络协议分析工具就是应用于小型局域网的管理,对其进行基于数据抓包的监控,包括本地局域网行为的实时查看,从而满足小型局域网如学校机房,公司部门,政府单位等这样规模的网络的监管及网络信息获取。1.2项目开发目标本项目开发的目标是开发出实用于规模不大的局域网的监控于管理。监控就是实时对网络的行为进行监视从而获取采取控制行为所需的信息。管理是基于网络信息的掌握而产生的,我们提供了本地网络信息快速获取的工具,域名查询的实用工具,以观察本地主机的行为,另外我们还提供了端口扫描的功能,使监视能力更加强大。总之,我们的开发目标是满足小型网络的信息获取和行为监管。1.3几个关键技术1.3.1多线程编程(1)多线程处理的优点同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。多线程处理可以同时运行多个过程。例如,文字处理器应用程序在您处理文档的同时,可以检查拼写(作为单独的任务)。由于多线程应用程序将程序划分成独立的任务,因此可以在以下方面显著提高性能:·多线程技术使程序的响应速度更快,因为用户界面可以在进行其他工作的同时一直处于活动状态。·当前没有进行处理的任务可以将处理器时间让给其他任务。湖南城市学院毕业论文8·占用大量处理时间的任务可以定期将处理器时间让给其他任务。·可以随时停止任务。·可以分别设置各个任务的优先级以优化性能。是否需要创建多线程应用程序取决于多个因素。在以下情况下,最适合采用多线程处理:·耗时或大量占用处理器的任务阻塞用户界面操作。·各个任务必须等待外部资源(如远程文件或Internet连接)。例如,用于跟踪Web页上的链接并下载满足特定条件的文件的Internet应用程序“robot”。这种应用程序可以依次同步下载各个文件,也可以使用多线程同时下载多个文件。多线程方法比同步方法的效率高很多,因为即使在某些线程中远程Web服务器的响应非常慢,也可以下载文件。(2)多线程编程的难点当多个线程之间有联系的时候,线程之间的同步控制就会成为一个难点,因为没有人能预期线程的被执行。在一个合作型多任务系统中,操作系统必须得到程序的允许才能够改变线程。但是在强制性多任务系统中,控制权被调度程序强制转移,也因此两个线程之间的执行次序变得不可预期。这不可预期性造成了所谓的racecondition。由于资源是共享的,有时还会出现死锁。1.3.2Socket编程Socket是Windows下网络编程的标准接口,它允许两个或多个应用程序在相同机器上,或者是通过网络互相交流。这种Windows下的Socket简称Winsock,Winsock库有两个版本,Winsock1和Winsock2。现在开发网络应用程序都使用Winsock2,需要在程序中包含头文件Winsock2.h,它包含了绝大部分socket函数和相关结构类型的声明和定义。同时要添加的还有到WS2_32.lib库的链接。包含必要的头文件,设置好链接环境之后,便可进行编码工作了。(1)TCP/IP的socket提供下列三种类型套接字。流式套接字(SOCK_STREAM):提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。数据报式套接字(SOCK_DGRAM):提供了一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。网络文件系统(NFS)使用数据报式套接字。原始式套接字(SOCK_RAW):该接口允许对较低层协议,如IP、ICMP直接访问。常用于检验新的协议实现或访问现有服务中配置的新设备。(2)为了更好地说明套接字编程原理,下面给出几个基本套接字系统调用说明。湖南城市学院毕业论文9①创建套接字──socket()应用程序在使用套接字前,首先必须拥有一个套接字,系统调用socket()向应用程序提供创建套接字的手段,其调用格式如下:SOCKETPASCALFARsocket(intaf,inttype,intprotocol);该调用要接收三个参数:af、type、protocol。参数af指定通信发生的区域,UNIX系统支持的地址族有:AF_UNIX、AF_INET、AF_NS等,而DOS、WINDOWS中仅支持AF_INET,它是网际网区域。因此,地址族与协议族相同。参数type描述要建立的套接字的类型。参数protocol说明该套接字使用的特定