基于Visual C++的网络监听系统毕业论文.doc
-
资源ID:2385288
资源大小:1.16MB
全文页数:55页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于Visual C++的网络监听系统毕业论文.doc
毕 业 设 计题目: 基于Visual C+的网络监听系统学 生: 学 号: 院 (系): 理 学 院 专 业: 数学与应用数学 指导教师: 2012年6月5日基于Visual C+的网络监听系统摘 要随着计算机网络技术的迅速发展,网络的安全问题也显得越发重要。网络监听技术是系统安全领域内一个非常敏感的话题,也是一项重要的技术,具有很强的现实应用背景。网络监听是网络监测、负载分析等管理活动常用的方法,同时也是黑客非法窃取信息的手段。网络监听工具通过网络传输介质的共享特性实现抓包,获得当前网络的使用状况,为网络管理员对网络中的信息进行实时的监测、分析提供一个合适的工具;同时也让黑客截获本网段的一些敏感信息,威胁网络安全。数据包捕获技术是设计网络分析软件的基础,而WinPcap则是Windows系统中实现的一个优秀的包捕获架构。文中结合该软件包的结构与功能对包捕获原理进行了详细的分析,并介绍了其在网络安全监控系统中的应用。该系统的基本原理是通过调用WinPcap库捕获本地网络上的所有数据包,然后对数据包进行协议分析,从而可以实时地监控网络。关键词:网络监听,WinPcap,协议分析Network Monitoring System Based on Visual C + +ABSTRACTWith the rapid development of computer network technology, network security becomes more important. Network monitoring technology is a very sensitive topic in the field of system security is also an important technology, has a strong practical application background. Network monitoring network monitoring, load analysis and other management activities commonly used method, but also hackers illegal means to steal information. Network monitoring tools to capture through the shared characteristics of the network transmission medium to achieve access to the current network usage, and provide a suitable tool for the network administrator on the network in real-time monitoring, analysis; also allow hackers to intercept network segment some sensitive information, threat to network security.The packet capture technology is the basis of the design of network analysis software, while WinPcap is an excellent packet capture architecture implemented in the Windows system. Combines the structure and function of the package and carried out a detailed analysis of packet capture principle, and its network security monitoring system. The basic principle of the system is a package by calling the WinPcap library to capture all the data on the local network, then the packet protocol analysis, which can monitor the network in real time.Key words: Network monitoring,WinPcap ,Protocol analysis目 录摘要IABSTRACTII1引言11.1 课题背景11.2 课题意义21.3 研究现状21.3.1 软件数据截取工具介绍31.3.2 硬件数据截取工具介绍32 网络监听技术综述42.1 网络监听概念42.2 网络监听的原理42.3 WinPcap的原理52.3.1 winpcap简介52.3.2 WinPcap的体系结构62.3.3 WinPcap的功能与新特性82.3.4 网络数据包捕获的原理82.3.5 在windows情况下捕获数据包的结构92.3.6 利用winpcap进行网络数据包的捕获和过滤的设计步骤103相关网络协议的分析113.1 网络体系结构113.2 网络协议的分析与实现113.2.1 IP113.2.2 TCP123.2.3 UDP123.2.4 ICMP123.2.5 通讯端口133.2.6 IP地址133.2.7 地址分类133.2.8 网关地址153.2.9 OSI模型214局域网监听系统的设计及实现244.1 局域网监听系统的设计244.1.1 功能设计244.1.2 模块设计244.2 局域网监听系统程序的实现274.2.1 建立Socket274.2.2 绑定本机IP地址274.2.3 设置为混杂模式274.2.4 截获数据包:274.3 系统程序运行28致 谢31参考文献32附录331引言由于互联网的发展,整个世界经济正在迅速地融为一体,而整个国家犹如一部巨大的网络机器。计算机网络已经成为国家的经济基础和命脉。伴随着网络的发展,也产生了各种各样的问题,其中安全问题尤为突出。了解网络面临的各种威胁,防范和消除这些威胁,实现真正的网络安全已成了网络发展中最重要的事情。遗憾的是,当网络给人们提供便利的同时,网络技术的发展方向似乎都趋向于网络的便利性和实用性,因而留下了太多的技术、管理和基础设施的漏洞。正是由于网络本身存在的这些缺陷和漏洞,网络在进行信息和数据传送时,可能会因为网络传输介质带宽的限制而出现数据冲突,传输帧中的地址不匹配或是因为网络硬件设备的错误,导致传输的信息出错或丢失;一些网络黑客和非法用户利用这些缺陷向网络发送可疑或不安全的信息,肆意盗窃和破坏网络数据。网络的维护和安全的要求也变得越来越高。网络监听技术的起源是网络管理员为了诊断网络故障的需要,而监听网络中传输的数据信息。一般的做法是在一定的网段上安装网络监视系统或网络分析仪来获取网络上的数据包进行分析,以便找出错误的原因,解决网络的故障。一些网络管理人员也利用截取网络中传输的数据监听网络数据流量,来实现一定的流量计费功能。目前,很多黑客也利用网络监听来获取一些明文传送的信息,达到窃取信息的目的。在这样的一个迫切需要网络安全的信息社会里,积极的研究和探索网络安全问题是一件非常有意义的事情,通过研究网络监听系统来进行具体的网络安全研究工作是非常必要的。网络监听与包过滤技术是网络入侵的核心技术,也是网络安全协议技术研究的核心技术.监听技术最初是提供给系统管理员用的,主要是对网络的状态、信息流动和信息内容等进行监视,相应的工具被称为网络分析仪.。在PPDR模型以及几乎所有的IDS(入侵检测系统)中,最基本的要求就是能够实现网络监听与过滤,所有的部分(安全策略、防护、检测、响应)都建立在此基础上.但是,技术是把双刃剑,网络监听和过滤也成了黑客使用最多的技术,主要用于监视他人的网络状态、攻击网络协议、窃取敏感信息等目的.1.1 课题背景 世界上最早的窃听器是中国在2000 年前发明的。战国时代的墨子一 书就记载了一种 “听瓮”。这种“听瓮”是用陶制成的,大肚小口,把它埋在地下,并在瓮口蒙上一层薄薄的皮革,人伏在上面就可以倾听到城外方圆数十里的动静。到了唐代,又出现了一种 “地听”器,能清晰地听到30 里外的马蹄声。自从1876年英国青年亚·贝尔发明有线电话以后,这些使用了几千年的原始窃听器,才渐渐退隐出了间谍舞台。由于互联网的发展,整个世界经济正在迅速融为一体,而整个国家犹如一部巨大的网络机器,计算机网络已经成为国家的经济基础和命脉。伴随着网络的发展,也产生了各种各样的问题,其中安全问题尤为突出。了解网络面临的各种威胁,防范和消除这些威胁,实现真正的网络安全已经成为网络发展中最重要的事情。1.2 课题意义使用网络相关知识、c+的网络编程技术实现网络监听系统,旨在培养理论与实践相结合解决信息安全问题的能力,培养自学能力以及调查研究问题、分析问题、解决问题的能力。网络监听是数据库安全审计的最佳手段,长期以来,在保障业务连续性和性能的前提下,最大限度的保障数据库安全一直是数据库管理人员、安全管理人员孜孜不倦追求的安全目标。 数据库系统作为三大基础软件之一并不是在计算机诞生的时候就同时产生的,随着信息技术的发展,传统文件系统已经不能满足人们的需要,1961年,美国通用电气公司成功开发了世界上第一个数据库系统IDS(Integrated Data Store),奠定了数据库的基础。经过几十年的发展和实际应用,技术越来越成熟和完善,代表产品有甲骨文公司的Oracle、IBM公司的DB2、微软公司的MS-SQL Server等等。 如今,数据库系统在企业管理等领域已经具有非常广泛的应用,如、账号管理、访问控制、安全审计、防病毒、评估加固等多个方面,常见的安全产品如UTM、入侵检测、漏洞扫描等产品为保障数据库系统的正常运行起到了重要作用。但是,通过对诸多安全事件的处理、分析,调查人员发现企业内部人员造成的违规事件占了较大比例。 究其原因,主要是因为这些违规行为与传统的攻击行为不同,对内部的违规行为无法利用攻击机理和漏洞机理进行分析,这就导致了那些抵御外部入侵的产品无用武之地。因此,要防止内部的违规行为,就需要在内部建设审计系统,通过对操作行为的分析,实现对违规行为的及时响应和追溯。网络监听技术是用来监视网络的状态、数据流动情况以及网上传输的明文信息等的信息技术,局域网大部分使用以太网协议,其工作方式是:将要发送的数据包发往网中的所有主机,包中包含着应该接受数据包的主机的IP地址,只有与数据包目标地址一致的那台主机才能接受。但是当主机工作在监听模式下,无论数据包中的目标地址是什么,主机都能接受。研究网络监听系统对于网络信息监管与信息安全有着重要意义。1.3 研究现状当今计算机网络及通讯技术的广泛应用,促使Internet的迅速发展,给我们带来了巨大的社会和经济效益。在这种情况下,计算机网络的设计,维护的难度日益增加,因此人们迫切需要能够分析,诊断与测试网络功能的工具软件。网络监听工具在这种需求下孕育而生。它对网络上的所有数据进行捕获,一方面对数据包进行检查分析,以便找出我们所关心的网络中潜在的问题,对网络故障做出精确定位,帮助管理员解决网络的故障和性能问题;另一方面它又是黑客窃听网络的工具,黑客利用数据包中携带的数据直接或间接获取的机密信息。所以实现网络监听技术具有重要的现实和理论意义。网络正以前所未有的速度进入人类社会,影响和改变着人们的生活方式,思想观念,对政治、经济军事等方面都产生了重大的影响,更是本世纪知识经济增长的基础和保障,因此保证网络系统稳定安全的运行,以促进实现质量的提高,从而保障整个Internet的健康发展,有着重要的现实意义。局域网中的网络数据监听,是实现网络安全的必要技术,它的研究和发展有利于网络管理、网络故障排除以及网络入侵检测系统的进一步发展。因而它未来的发展将在局域网中发挥着举足轻重的作用,对于维护整个网络的安全和性能稳定有着直接的影响。从早期的计算机网络出现,1969 年美国国防部高级研究计划局建成的ARPANET 实验网开始,计算机网络在各发达国家迅速蓬勃发展,到今天复杂的Intranet 和Internet 网络,经历了不同的时期。伴随着网络的出现,对网络数据截取的工具,像sniffer 也就随之而产生了。到目前为止,可以进行网络数据监听的工具从软件到硬件,从有线网到无线网,可以说是应有尽有。有软件实现的便携式终端,也有硬件实现的网络分析仪。下面分别介绍。1.3.1 软件数据截取工具介绍目前,针对各种不同版本的操作系统都有不同版本的数据监听软件,如 MS-DOS平台上Gobblor、Window9x 平台的NetXray、Win2000/xp 平台下得Sniffer Pro、Novell平台的EthLoad 以及UNIX 平台Netman 和Sunsniff 等等。1.3.2 硬件数据截取工具介绍以上介绍的均是由单纯的软件实现的 sniffer,其功能相对硬件来说还是较为简单的。下面将介绍相应的由硬件实现的sniffer。硬件的sniffer 又称为网络分析仪(协议分析仪)。目前的网络分析仪的技术已经非常的成熟,产品也非常的多样。各种产品的功能会略有差异,有的只能针对一种协议,有的可以分析多种协议。一般的情况下,大型的企业网络都会使用软硬件结合的网络分析仪。如:1)安捷伦网络分析仪系统,2)Fluke Optiview 综合网络协议分析仪等。2 网络监听技术综述2.1 网络监听概念 网络监听1技术是一种与网络安全性密切相关的技术,它的完整定义是:利用计算机的网络接口截获目的地为其它计算机的数据报文的一种技术。网络监听器( sniffer )原来是提供给网络管理员的一类管理工具,使用这组工具可以监视网络的状态、数据流动情况以及网络上传出的消息并利用这些消息来排除网络故障。不幸的是由于网络监听能有效的截获网络上的数据,它也成为了黑客使用最多的法。黑客运行监听工具暗中监视他人的网络状况、窃取明文传出的密码和各种数据。网络监听不仅在共享式局域网中实现,而且还可以在交换式局域网中实现。2.2 网络监听的原理Ethernet(以太网,它是由施乐公司发明的一种比较流行的局域网技术,它包含一条所有计算机都连接到其上的一条电缆,每台计算机需要一种叫接口板的硬件才能连接到以太网)协议的工作方式是将要发送的数据包发往连接在一起的所有主机。在包头中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的那台主机才能接收到信息包,但是当主机工作在监听模式下的话不管数据包中的目标物理地址是什么,主机都将可以接收到。许多局域网内有十几台甚至上百台主机是通过一个电缆、一个集线器连接在一起的,在协议的高层或者用户来看,当同一网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目的主机,或者当网络中的一台主机同外界的主机通信时,源主机将写有目的的主机IP地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的IP层交给网络接口,也就是所说的数据链路层。网络接口不会识别IP地址的。在网络接口由IP层来的带有IP地址的数据包又增加了一部分以太祯的祯头的信息。在祯头中,有两个域分别为只有网络接口才能识别的源主机和目的主机的物理地址这是一个48位的地址,这个48位的地址是与IP地址相对应的,换句话说就是一个IP地址也会对应一个物理地址。对于作为网关的主机,由于它连接了多个网络,它也就同时具备有很多个IP地址,在每个网络中它都有一个。而发向网络外的祯中继携带的就是网关的物理地址。 Ethernet中填写了物理地址的祯从网络接口中,也就是从网卡中发送出去传送到物理的线路上。如果局域网是由一条粗网或细网连接成的,那么数字信号在电缆上传输信号就能够到达线路上的每一台主机。再当使用集线器的时候,发送出去的信号到达集线器,由集线器再发向连接在集线器上的每一条线路。当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同的掩码、IP地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可以被接收到。 2.3 WinPcap的原理2.3.1 winpcap简介 WinPcap 2是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap 为用户级的数据包提供了Windows 下的一个平台。WinPcap 是 BPF 模型和 Libpcap 函数库在 Windows 平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库 Packet.dll 和一个高层的独立于系统的函数库 Libpcap 组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对 NDIS 中函数的调用为 Win95、Win98、WinNT、和 Win2000 提供一类似于 UNIX 系统下 Berkeley Packet Filter 的捕获和发送原始数据包的能力。Packet.dll 是对这个 BPF 驱动程序进行访问的 API 接口,同时它有一套符合 Libpcap 接口(UNIX 下的捕获函数库)的函数库。 WinPcap 包括三个部分:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。 第三个模块 Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。 packet.dll和Wpcap.dll:packet.dll直接映射了内核的调用。 Wpcap.dll提供了更加友好、功能更加强大的函数调用。WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。WinPcap的出现具有一定的必然性。由于Window操作系统没有提供可以直接捕获数据包的API,尽管提供了一些内核模块,但存在着严重的局限性。例如:IP Filter Driver只运行在 Windows2000 下,且仅支持IP协议。由于这些局限,使得Windows平台下的网络安全和分析工具无论在数量上,还是质量上都与Unix下有很大的差距。微软研究院赞助了意大利一家开发机构,为Win32平台底层网络分析开发了一套有力而且易扩展的体系结构WinPcap,它可以将Unix支持的数据包捕获功能加到Win32系统中,从而弥补了Windows操作系统这方面的欠缺。而且WinPcap完全开放,提供源代码,同时它提供了与Libpcap相兼容的函数接口。2.3.2 WinPcap的体系结构(1) BSD Capturing Component的体系结构BSD Capturing Component是Unix下最常用的捕获数据包的驱动,其基本体系结构见图2-1。图2-1 BSD Capturing Component 的体系结构如图2-1所示,BSD Capturing Component由以下几部分组成:NetWork Tap,它负责从网络直接捕获所有的数据包;Berkeley Packet Filter,它用来分析捕获进来的数据包;两种Buffer:一种工作在核心层,一种工作在用户层。经过Berkeley Packet Filter的数据包被拷贝到Kernel Buffer中,它分为两个buffer:store buffer和hold buffer。store buffer用于保存从网络适配器捕获的数据包,hold bufier则用于将数据包拷贝到用户的buffer中。二者之间拥有swap特性:由于store buffer比hold buffer更易被填满,所以当store buffer已满,而hold buffer为空的时候,store buffer 变成 hold buffer,而之前的hold buffer变成store buffer。这样使得用户的程序和捕获数据包的驱动完全分开。User-level buffer存储从核心层进来的数据包,它可防止用户直接访问内核管理的内存。从程序员的角度来看,Libpcap是主要的部件,它隐藏了应用程序和内核之间的交互。它为捕获数据包的过程提供了强大而抽象的接口。通过它,可以使用用户定义的filter、管理用户层的buffer等。但是Libpcap并不能够发送数据包或者统计数据包。(2) WinPcap的体系结构WinPcap保留了BSD Capturing Component最重要的模块:一个Filter Machine、两种Burfer以及提供给用户的库。但是,WinPcap与BSD捕获数据包有一些本质的区别:filtering过程开始于用户层定义的一个Filter,例如port=21,WinPcap把它编译成一个伪指令,伪指令被传到核心层,核心层通过一个虚拟机开始抓取所有的数据包,并通过伪指令来判断是否保留数据包。虚拟机的效率成为获得好的效率的关键。另外,它们在结构上也有重要的区别:Netgroup Packet Filter采用循环buffer,这样使得buffer空间可以得到充分利用,大大提高了效率。Winpcap(windows packet capture)是微软提供的一个在Windows 平台下访问网络的编程接口。微软开发winpcap 这个项目的目的在于为win32 应用程序提供更开放的访问网络底层的能力。它包括三个部分:参见图2-2。图 2-2 Winpcap 结构图第一个模块 NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块 packet.dll 为win32 平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll 可以解决这些差异。调用Packet.dll的程序可以运行在不同版本的Windows 平台上,而无需重新编译。第三个模块 Wpcap.dll 是不依赖于操作系统的。它提供了更加高层、抽象的函数。Winpcap 的实质是用了我们后面说的NDIS,将自己注册为一个协议处理驱动来实现网络数据包的截获。Winpcap 主要可以实现:(a) 捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包;(b) 在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉;(c) 在网络上发送原始的数据包;(d) 收集网络通信过程中的统计信息;WinPcap 的优点在于:1.独立于主机协议来发送和接收原始数据包,并且提供了一套标准的抓包接口,与libpcap 兼容,可使得原来许多UNIX 平台下的网络分析工具可以快速移植,便于开发各种网络分析工具。2.充分考虑了各种性能和效率的优化,包括对于NPF 内核层次上的过滤器支持。 3.支持内核态的统计模式,提供了发送数据包的能力。Winpcap 的缺点在于:不能阻塞、过滤或控制其他应用程序对数据报收发,它仅仅只是监听共享网络上传送的数据。因此,它不能用于QoS 调度程序或个人防火墙。2.3.3 WinPcap的功能与新特性WinPcap除了其强大的捕获数据包的功能以外,相比BSD Capturing Component还增加了发送数据包的功能:它是在Win32平台上第一个提供标准的一套发送数据包函数的库。需要注意的是,WinPcap不具备产生数据包的能力,发送的数据包需要通过手工或者其它工具来构造。而且WinPcap还实现了统计模式的工作方式:它不需要把数据包传送到应用程序,避免了大量的数据包拷贝操作。当数据包还在NIC driver的存储器中时,统计模式就开始起作用,然后数据包被丢弃。统计模式是一种非常高效的、用来监测网络的方法,即使在高速的局域网等有大量数据包流动的网络环境中,它依然可工作得很好。2.3.4 网络数据包捕获的原理以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的 CSMA/CD 协议进行信道的争用和共享。每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给LLC 子层。网卡具有如下的几种工作模式:(a) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。(b) 多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。(c) 直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。(d) 混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。2.3.5 在windows情况下捕获数据包的结构图2-3捕获数据包的结构图Wndows下捕获数据包,其中NDIS及其特点是:NDIS(Network Driver Interface Specification) 是 Microsoft 和 3Com 公司联合制定的网络驱动规范,并提供了大量的操作函数。它为上层的协议驱动提供服务,屏蔽了下层各种网卡的差别。NDIS 向上支持多种网络协议,比如 TCP/IP、NWLink IPX/SPX、NETBEUI 等,向下支持不同厂家生产的多种网卡。NDIS 还支持多种工作模式,支持多处理器,提供一个完备的 NDIS 库(Library)。但库中所提供的各个函数都是工作在核心模式下的,用户不宜直接操作,这就需要寻找另外的接口。2.3.6 利用winpcap进行网络数据包的捕获和过滤的设计步骤(a) 打开网卡,并设为混杂模式。(b) 回调函数 Network Tap 在得到监听命令后,从网络设备驱动程序处收集数据包把监听到的数据包负责传送给过滤程序。(c) 当 Packet filter 监听到有数据包到达时,NDIS 中间驱动程序首先调用分组驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序。(d) 然后由 Packet filter 过滤程序决定哪些数据包应该丢弃,哪些数据包应该接收,是否需要将接收到的数据拷贝到相应的应用程序。(e) 通过分组过滤器后,将数据未过滤掉的数据包提交给核心缓冲区。然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区。监听程序可以直接从用户缓冲区中读取捕获的数据包。(f) 关闭网卡。3相关网络协议的分析3.1 网络体系结构计算机的网络结构可以从网络体系结构,网络组织和网络配置三个方面来描述,网络组织是从网络的物理结构和网络的实现两方面来描述计算机网络;网络配置是从网络应用方面来描述计算机网络的布局,硬件,软件和和通信线路来描述计算机网络;网络体系结构是从功能上来描述计算机网络结构。网络体系(Network Architecture):是为了完成计算机间的通信合作,把每台计算机互连的功能划分成有明确定义的层次,并规定了同层次进程通信的协议及相邻之间的接口及服务。 网络体系结构:是指用分层研究方法定义的网络各层的功能,各层协议和接口的集合。3.2 网络协议的分析与实现网络协议3是计算机网络必不可少的,一个完整的计算机网络需要有一套复杂的协议集合,组织复杂的计算机网络协议的最好方式就是层次模型。而将计算机网络层次模型和各层协议的集合定义为计算机网络体系结构(Network Architecture)。网络中计算机的硬件和软件存在各种差异,为了保证相互通信及双方能够正确地接收信息,必须事先形成一种约定,即网络协议. 协议:是为实现网络中的数据交换而建立的规则标准或约定。 网络协议三要素:语法,语义,交换规则(或称时序/定时关系)运作机制。3.2.1 IPIP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。 3.2.2 TCPTCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。 TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。 如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。 3.2.3 UDPUDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。 UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求在程序员编程验证。 UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询-应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。 欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。 3.2.4 ICMPICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的Redirect信息通知主机通向其他系统的更准确的路径,而Unreachable信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接体面地终止。PING是最常用的基于ICMP的服务。 3.2.5 通讯端口TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。 两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认: (a) 源IP地址 发送包的IP地址。 (b) 目的IP地址 接收包的IP地址。 (c) 源端口 源系统上的连接的端口。 (d) 目的端口 目的系统上的连接的端口。 端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是广为人知的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。 3.2.6 IP地址在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。 Internet