基于网络数据包分析技术的研究_第1页
基于网络数据包分析技术的研究_第2页
基于网络数据包分析技术的研究_第3页
基于网络数据包分析技术的研究_第4页
基于网络数据包分析技术的研究_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

防 灾 科 技 学 院毕 业 设 计题目 基于网络数据包分析技术的研究学生姓名 学号系 别 专 业班级开题时间 答辩时间指导教师 职 称基于网络数据包分析技术的研究作 者 指导老师 摘要 随着网络技术的迅速发展和人们需求的不断提高,网络安全问题越来越严重,造成的损失非常巨大,为解决网络安全问题而投入的资金也越来越多。本文通过使用 Ethereal 捕捉实时网络数据包,并根据网络协议分析流程对数据包在 TCP/IP 各层协议数据进行解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据 Ethereal 的工作原理,使用了 Windows 平台下开源的网络数据包捕获开发库 WinPcap,用 Visual C编写一个简单的数据包捕获与分析软件。关键词:网络数据包; 网络协议; 分析; 还原Based on the Study of Network Packet Analysis TechnologyAuthor Advisor Abstract With the rapid development of network technology and the increasing demand of people, the network security problem is becoming more and more serious, with huge losses, the funds input to solve the network security are increasingly.Using Ethereal to capture real-time network data packet, unpacking analysis data packets in TCP/ IPeach layer data according to analyses the process of network protocol, network researchers to underst nd the data packet to a perceptual level, provide the technical means for the network proto col analysis. Finally, Finally, according to the working principle of Ethereal, using WinPcap of library network data packet capture develop in platform of Windows open source, with Visual C+ to write a simpledata packet capture and analysis software.Keywords: network packets; network protocol; analysis; reduction目 录引言 .11 网络的基本概念 .21.1 OSI 网络参考模型 .21.2 TCP/IP 网络 .42 网络协议分析技术 .52.1 软件 Ethereal 简介 .52.2 利用 Ethereal 捕获数据包 .52.3 利用 Ethereal 对捕获数据包进行分析 .73 网络协议分析程序的设计 .183.1 应用技术 .183.2 设计思路 .243.3 主要函数说明 .264 网络协议分析程序的实现 .304.1 界面制作 .304.2 开发代码 .335 程序的测试 .545.1 系统的测试 .545.2 测试用例和结果 .545.3 系统实现 .565.4 系统性能分析 .58结论 .58致谢 .59参考文献 .60防灾科技学院毕业设计引言网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。它是人们信息交流使用的一个工具。作为工具,它一定会越来越好用的。功能会越来越多,内容也会越来越丰富。但如果没有限制,就会给用户和社会带来很多不良影响。所以对网络进行合理的监控就非常重要。网络数据的分析是把先捕获网络中传输的数据包,通过网络协议进行解析,再还原数据包的信息来监控网络传输数据,从而了解网络的实际运行情况。通过这些网络信息就可以了解故障发生的地点及其原因。本文的设计目的是完成基于 Windows 平台的网络数据包分析系统,它利用winsock 实现网络数据包的捕捉,并且结合相关的网络协议对数据包进行分析、解析、还原来实现对网络故障进行分析等功能。论文第一章介绍了网络的基本概念,介绍网络参考模型、TCP/IP 协议、TCP/IP 网络;第二章介绍了 Ethreal 软件的安装、启动,并用它进行数据包捕获和分析的实验;第三章介绍了根据 Ethereal 的工作原理,用 Visual C编写一个简单的数据包捕获与分析软件网络探测程序的系统设计、实现和工作流程;第四章介绍了网络探测程序的一些测试结果。防灾科技学院毕业设计1 网络的基本概念1.1 OSI 网络参考模型OSI(Open System Interconnect)开放式系统互联。 一般都叫 OSI 参考模型,是ISO(国际标准化组织)组织在 1985 年研究的网络互联模型。国际标准化组织 ISO 发布的最著名的标准是 ISO/iIEC 7498,又称为 X.200 协议。这个结构把网络互连的七层框架给定义了,并且规定每一层的功能,实现了开放系统环境中的互连性、互操作性和应用的可移植性 1。OSI 的服务定义不涉及接口是怎么实现的,它详细说明了各层所提供的服务。某一层的服务它通过接口提供给更高一层。并且各种服务定义也把层与层之间的接口和各层的所使用的原语定义了。因为协议的规程说明很有最严格的约束,所以 OSI 标准中的各种协议把应当发送怎样的控制信息,还有用怎样的过程来解释这个控制信息给定义了。ISO/OSI 参考模型只用来协调进程间通信标准的制定。在 OSI 范围内,各种的协议只有在被实现的并且与 OSI 的协议相一致,才能互连。所以在网络刚出现的时,虽然很多公司都拥有了网络技术,并且公司内部的计算机已经可以相互连接。但是却不能与其它公司连接。这是因为对方不能理解计算机之间相互传输的信息,没有一个统一的规范,所以不能互联。OSI 模型如表 1.1,1.2 所示:表 1.1 OSI 模型应用层 SMB,NCP,TELNET ,HTTP,FTP ,SMTP表示层 JPG,SMB Negotiation,GIF ,MPEG ,ASN.1会话层 NetBIOS, TCP3-way handshake传输层 TCP,SPX网络层 IP,IPX,DDP数据链路层 Ethernet,Frame Relay,Token Ring,FDDI物理层 X.21,RS-232,DSI,DS3OSI 模型用途还是很广泛。比如交换机、路由器、集线器等网络设备的设计都是参照 OSI 模型设计的。防灾科技学院毕业设计表 1.2 各个层的意义物理层(Physical Layer)是 OSI 模型的最低的一层,它利用传输介质为数据链路层提供物理连 接,也就是物理层确保原始数据可以使各种物理媒体传输包括信号线的功能、数据传输速率、物理连接器规格、 “0”和“1” 信号的电平表示及其相关的属性等数据链路层(Data Link Layer)是 OSI 模型的第二层,位于物理层和网络层之间,解决两个相邻结点之间的通信传输,为网络层提供服务的数据链路层还可以协调收发双方的进行流量控制,以防止冲器溢出及 线路阻塞网络层(Network Layer)是 OSI 模型的第三层,为传输层提供服务的。网络层的主要作用是通过网络连接交换传输层发出的实体数据。交换过程中,选择合适的传输路径,解决网络中出现的局部拥挤或全面的阻塞。此外,网络层还应有记账功能,一边通过网络中交换的分组或字符数、位数收取费用。当传输的数据跨越一个网络边界时,网络层根据不同的分组长度、寻址方式、通信协议进行交换,使得异构网络能够互相通信传输层(Transport Layer)是 OSI 模型中最重要, 最关键的一层,是唯一负责总体的数据传输和数据控制的一层。传输层提供端到端的交换数据的机制,检查分组编号与次序。传输层对其上三层如会话层等,提供可靠的传输服务,对网络层提供可靠的目的地站点信息主要功能为端到端连接提供传输服务.这种传输服务分为可靠和不可靠的,其中 Tcp 是典型的可靠传输,而 Udp 则是不可靠传输. 为端到端连接提供流量控制,差错控制,服务质量等管理服务会话层(Session Layer) 是 OSI 模型的第五层,为两个会话层实体进行会话的管理服务表示层(Presentation Layer)是 OSI 模型的第六层,处理流经结点的数据编码的表示方式,使一个系统应用层可以读出另一系统的应用层的发出信息。表示层可提供的转换功能有数据压缩和加密应用层(Application Layer)是 OSI 参考模型的最高层,也是网络和用户的接口。它通过应用程序来完成网络用户的需求,如收发电子邮件、文件传输等等防灾科技学院毕业设计1.2 TCP/IP 网络网络协议 2即网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议。网络上的所有通信设备都是由它规范的,它是一种网络通信协议,特别是两个主机之间数据的往来格式和传送方式。普通用户虽然不了解网络协议的整个结构,但是知道 IP 的地址格式,就可网络通信。总结 TCP/IP 结构对应 OSI 如图 1.3。表 1.3 TCP/IP 结构对应 OSIOSI 中的层 功能 TCP/IP 协议族应用层 文件传输,电子邮件,文件服务,虚拟 终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等表示层 翻译、加密、压缩 没有协议会话层 对话控制、建立同步点(续传) 没有协议传输层 端口寻址、分段重组、流量、差错控制 TCP,UDP网络层 逻辑寻址、路由选择 IP,ICMP ,OSPF,EIGRP, IGMP,RIP,ARP,RARP数据链路层成帧、物理寻址、流量,差错,接入控制 SLIP,CSLIP,PPP, MTU物理层 设置网络拓扑结构、比特传输、位同步 ISO2110,IEEE802 ,IEEE802.2网络层中的协议主要有 IP、IGMP、 ICMP 等, 因为 IP 协议模块被包含了,所以是所有基于 TCP/IP 协议网络的核心,在网络层中,IP 模块完成大部分功能,ICMP 和IGMP 以及其他支持 IP 的协议帮助 IP 完成特定的任务 3。传输层上的主要协议是 TCP 和 UDP,正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据,两个协议就是它管理这些数据的两种方式:TCP 是一个基于连接的协议;UDP 则是面向无连接服务的管理方式的协议 3。防灾科技学院毕业设计2 网络协议分析技术2.1 软件 Ethereal 简介Ethereal4(Ethereal:A Network Packet Sniffing Tool)是当前较为流行的一种计算机网络调试和数据包嗅探软件,Ethereal 基本和 tcpdump 一样,但 Ethereal 还具有设计完美的 GUI ,许多分类信息和过滤选项,用户通过 Ethereal,同时将网卡是混合模式,可以了解到所有通信流量,Ethereal 应用于故障修复、分析、软件和协议开发以及教育领域,用户对协议分析器所希望的所有特征它都有,如图 2.1 所示。图 2.1 Ethereal 简介Ethereal 主要具有以下特征:在实时时间内,从网络连接处捕获数据,或者从被捕获文件处读取数据;可以读取从 tcpdump(libpcap) 、SnifferTM 专业版、网络通用嗅探器、Shomiti/Finisar 测试员等处捕获的文件, 也能从 Lucent/Ascend WAN、 Toshiba ISDN 路由器中读取跟踪报告,还能从 VMS 的 TCPIP 读取输出文本和 DBS Etherwatch4。通过 editcap 程序的命令行交换机;利用 GUI 或 TTY 模式 tethereal 程序,可以访问被捕获的网络数据;捕获文件可以被修改;分割 602 协议;把输出文件保存或打印为纯文本或者 PostScript 格式 ;显示过滤器选择 用高亮区和颜色包摘要信息;网络跟踪报告可以保存到磁盘中 4。2.2 利用 Ethereal 捕获数据包如表 2.1 所示。防灾科技学院毕业设计表 2.1 具体步骤第一步 安装 Ethereal第二步单击 Capture 下的 Option 菜单,打开捕获选项对话框,设置好捕捉接口(interface)和过滤器(capture filter),设置混杂模式(promiscuous mode)选项,其他选项可采用默认设置如图 2.2第三步 单击 Start 按钮即可实时截获数据包 5第四步用 Ethereal 的捕获窗口如图 2.3,捕获数据包的部分截图见图 2.4。所截获的数据包分别在包列表(PackList)、包细节(Packet Details) 与包字节(PackeBytes)三栏窗口中显示。其中上栏的包列表窗口按截获的时间顺序显示出数据包的基本信息:编号(代表收到数据包的次序) 、时间、源地址、目的地址协议名称以及关于此数据包的摘要信息;中间栏的包细节窗口以树形显示当前数据包在各协议层的封装细节,包括首部和数据;下栏的包字节窗口则以十六进制和ASCII 码显示被截获数据包的详细内容左边一栏显示偏移量,中间一栏显示十六进制数值,右边一栏显示解码后相对应的字符(控制字符示为 1 个点) 5图 2.2 Ethereal 的设置防灾科技学院毕业设计图 2.3 捕获状态窗口图 2.4 捕获的数据包2.3 利用 Ethereal 对捕获数据包进行分析Ethereal 作为较为流行的一款 计算机网络调试和数据包嗅探软件 ,可以用来监视所有在网络上被传送的包,并分析其内容的程序。他经常用来检查网络工作情况,或是用来发现网络程序的 bugs。通过 ethereal 对 TCP、FTP 、UDP 、SMTP 等常用协议进行分防灾科技学院毕业设计析,有益于网络故障的修复分析和软件和协议开发。2.3.1 ARP 协议分析实验(1)ARP 协议分析ARP,全称 Address Resolution Protocol,地址解析协议它工作在数据链路层,在本层和硬件接口联系,同时对上压供服务。在以太网中,两台主机进行直接通信,必须要知道目标主机的 MAC 地址,但目标 MAC 地址怎么得到的呢? 它是通过地址解析协议获得的如图 2.5,将网络中的 IP 地址解析为的硬件地址 (MAC 地址)就是因为 ARP 协议,因为 ARP 协议经常被用,所以我们用 Ethereal 抓取网络中的 ARP 数据包如图2.6,我们可以看到一些捕到的 ARP 的数据包,比如第 1 个 ARP 数据包:Who has 40? Tell 50,通过 IP 地址找对方的 MAC 地址,ARP 协议的结构如图 2.7,对比图 2.8 中框部分与图 2.7 中框部分,我们可以看到两者是相同的,通过ARP 的结构有更深刻认识 14。图 2.5 ARP 捕获状态窗口图 2.6 捕获的 ARP 数据包防灾科技学院毕业设计以太网目的地址以太网源地址帧类型协议类型硬件类型O P发送端以太网地址发送端 I P地址目的以太网地址目的 I P 地址硬件地址长度 协议地址长度图 2.7 ARP 报文结构图 2.8 ARP 结构2.3.2 分析 TCP/IP 机制的实验TCP 是一种面向连接的、可靠的传输层协议,TCP 数据传(只有连接建立后才可进行数据传输) 需要通过在客户端和服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手” ,如图 2.9,即发送方先发送连接请求,然后接受方进行连接确认,最后发送方对接受方再次进确认。下面就以 Ethereal 捕获的建 TCP 连接过程的三个数据包为例对 TCP/IP 协议进行分析。S Y N , S E Q = xS Y N , S E Q = y , A C K = x + 1A C K = y + 1图 2.8 三次握手示意图防灾科技学院毕业设计第一步 Ethereal 要保持捕获状态 如图 2.10,过滤器设置为 TCP,这样就可以只捕获 TCP 协议 的数据包。图 2.10 TCP 捕获状态窗口第二步保持捕获的状态,打开 网页,这样就捕获到在访问网页时建立连接的 TCP 数据包如图 2.11。图 2.11 TCP 捕获状态窗口防灾科技学院毕业设计第三步点击停止,如图 2.12 显示的就是捕获的前 4 个数据包,可以看到 1 至 3 号数据包是连接建立过程,连接建立完成以后 4 号数据包开始传输数据。图 2.12 捕获到的数据包客户端发送连接请求,从图 2.13 可以看出,该数据包封装了三个头信息:以太网帧、IP 数据报(首部格式如图 2.13)和 TCP 报文段(固定首部格式如图 2.14),具体数据如表 2.15 表:表 2.15 具体数据接收方 MAC 00:03:0f:00:0c:4b 源主机 MAC 00:03:0d:a4:0f:72type 0x0800 版本号(version) 4首部(head length) 20bytes 服务类型(services field) 0x00数据报总长 (total length) 48 标识(identification) 0x96b53标志(flags) 0x04 段偏移(fragmen offset) 0生存时间(time to live) 128 TCP 报文段 protocol 0x06头部校验和 0x1206 表示正确请求主机的 IP 地址为 26,目的主机的 IP 地址为 0,在运输层,主要数据对象是 TCP 报文。在以上的 TCP 报文段中,具体数据如表 2.16表 2.16 具体数据目的端口号(destination port) 80请求方源端口号(source port) 1615HTTP 协议的保留端口号 0头部长度(header length) 28bytes标志位(flags) Ox0002 窗口字段(window size) 的最大字节数 65535校验和(checksum) 0xf6a 表示正确 15序列号 SEQ 是本次连接的初始序号,因此在连接请求时相对初始值是 0,其实际值是 24 68 15 a1;确认号是 00 00 00 70,指示 ACK=0 表示忽略确认号,SYN=1 表示防灾科技学院毕业设计正在进行连接请求,在连接请求中,SYN=1、ACK=0 ,连接响应时,SYN=1、ACK=1;PSH 为 0 15。比特 0 4 8 16 19 24 31版本 首部长度 总长度服务类型标识标志 片偏移生存时间 协议 首部检验和源地址目标地址图 2.13 IP 数据报首部格式比特 0 8 16 24 31目的端口确认号源端口序号数据偏移保留URGACKPSHPSTSYNFIN窗口检验和 紧急指针图 2.13 TCP 报文段固定首部格式字节 6 6 2 46-105 4 目的 M A C 地址 源 M A C 地址 类型 数据F C S图 2.17 以太网 V2 MAC 帧格式图 2.18 发送方发出的连接请求数据包防灾科技学院毕业设计如图 2.18 是对此数据包的具体分析,了解到服务端 0 发至客户端26。在响应 TCP 报文段中, SEQ 为 ef 84 c8 9b,确认号为 24 68 17 a2,标志位为 0x0010,指示 ACK 标志为 1,表明确认号有效、SYN 仍然为 1。图 2.19 服务端响应数据包如图 2.20 为客户端确认数据包,数据包由客户端 26 发送给服务端0,序列号为 24 68 15 a2,本次确认号为 73 ff 17 ff,标志位 Ox0010,指示ACK 标志为 1 表明确认号有效,SYN 置为 0 表示连接建立结束。图 2.20 客户端确认数据包防灾科技学院毕业设计建立了完整的 TCP 连接后全双工模式的数据传输过程开始了。通过上述利用 Ethereal 对 TCP 连接过程的三个数据包的分析,可以了解 TCP/IP 协议的三次握手过程。2.3.3 UDP 协议的实验UDP 是 User Datagram Protocol 的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务 6。其特点:UDP 是一个无连接协议,当传送时就可以从应用程序的数据 获得,并且尽快地把它放到网络上面;一台服务机可同时向多个客户机传输相同的消息,是因为传输数据不建立连接,也就不需要维护连接状态了;UDP 信息包的标题只有 8 个字节,相对 TCP 的 20 个字节信息包的额外开销很小;吞吐量只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制;UDP 不保证可靠交付,不需要维持复杂的链接状态表(这里面有许多参数);UDP 是面向报文的,应用程序需要选择合适的报文大小 6。图 2.21 抓包后主界面 大量 UDP 协议防灾科技学院毕业设计原始框表示出了分组中包含的每个数据的字节,我们可以看出最原始的传输数据。方框右边是 ASCII 码,左边是十六进制的数据。报文的二进制码就是发送的最原始内容。选择其中第 8 个包进行分析。图 2.22 第 8 个 Frame表 2.23 数据解析第 1 行 现在此贞基本信息。名称,692 字节第 2 行 显示到达时间 2010.07.02第 3、4 行 现在使用时间第 6、7 行 现在贞长度和捕获长度,都是 692 字节第 8、9、10 行 现在此贞类型,为 UDP 类型图 2.24 以太网图 2.25 显示了此贞的源地址和目的地址,分别为第 3 行,第 7 行。另外说明了此贞是个单波贞“This is a unicast frame ”。图 2.25 Internet 协议防灾科技学院毕业设计表 2.26 具体数据分析第 1 行 给出了源地址和目的地址,分别为 2;6第 2 行Version4,表示 IP 协议的版本号为 4,即 IPV4,占 4 位,Header Length=20 Bytes,表示 IP 包头的总长度为 20 个字节,该部分占 4 个位。所以第一行合起来就是一个字节第 3 行 给出头长度,20 字节第 6 行 Identification=40793,表示 IP 包识别号为 40793。该部分占两个字节第 7 行Flags,表示片标志,占 3 个位。各位含义分别为:第一个“0”不用,第二位为不可分片位标志位,此处值为“1” 表示该数据表禁制分片。第三位为是否最后一段标志位,此处“0”表示最后一段第 10 行 给出贞类型,为 UDP第 11 行 Header Checksun=0xf43c(correct),表示 IP 包头校验和为 0xf43c,括号内的 Correct 表示此 IP 数据包是正确的,没有被非法修改过。该部分占两字节图 2.27 用户数据报协议表 2.28 具体数据分析第 2 行 源端口:13237。2 字节,源端口号,即发送这个 TCP 包的计算机所使用的端口号第 3 行 目的端口:10611。2 字节,目标端口号,即接受这个 TCP 包计算机所使用的端口号第 4 行 长度 658 字节第 5 行 Checksum检验和,校验和。在数据处理和数据通信领域中,用于校验目的的一组数据项的和。这些数据项可以是数字或在计算检验和过程中看作数字的其它字符串2.4.4 ICMP 协议的实验ICMP 是(Internet Control Message Protocol)Internet 控制报文协议。它是 TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等,当遇到 IP 数据无法访问目标、IP 路由器无法按当前的传输速率转发数据包等情况时,会自动发送 ICMP 消息,ICMP 提供一致易懂的出错报告信息,发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者,发送设备随后可根据 ICMP 报文确定发生错误的类型,并防灾科技学院毕业设计确定如何才能更好地重发失败的数据报 1024。图 2.29 窗口中的 ICMP 协议(请求)图 2.30 窗口中的 ICMP 协议(应答)从上面两图和前面分析的协议区别是增加了 Type:0 (Echo(ping)request/reply),表示了ping 类型和代码。图 2.31 网际协议表 2.31 数据分析第 1 行 给出了源地址和目的地址,分别为 2;37第 2 行 Version4,表示 IP 协议的版本号为 4,即 IPV4,占 4 位,Header Length=20 Bytes,表示 IP 包头的总长度为 20 个字节,该部分占 4 个位。所以第一行合起来就是一个字节第 3 行 给出包头长度,68 字节第 6 行 Identification=40853,表示 IP 包识别号为 40853。该部分占两个字节第 7 行Flags,表示片标志,占 3 个位。各位含义分别为:第一个“0”不用,第二位为不可分片位标志位,此处值为“1”表示该数据表禁制分片。第三位为是否最后一段标志位,此处“0”表示最后一段第 10 行 给出贞类型,为 ICMP第 11 行 Header Checksun=0x8ae(correct),表示 IP 包头校验和为 0x8ae,括号内的 Correct 表示此 IP 数据包是正确的,没有被非法修改过。该部分占两字节防灾科技学院毕业设计3 网络协议分析程序的设计3.1 应用技术3.1.1 Visual C+简介Visual C即 VC,微软公司出品的高级可视化计算机程序开发工具。他提供了一套开发环境:Visual Studio,Visual Studio 本身包括一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档,借助这套工具,用户可以随心所欲地开发出各种功能的应用软件以及借助 OpenGL 和DirectX 技术开发游戏软件。Visual C+可以识别 C/C+并编译,支持 MFC 类库,并提供了一系列模板,常用的 MFC AppWizard(EXE/DLL),MFC Active Xcontrol Wizard,Win32Application,Win32ConsoleApplication,ATLCOMAppWizard,这种可视化编程环境可以令程序员花更多精力在程序功能的实现上,而不是底层的建设上,这就大大加快了程序开发速度和效率,这也是 Visual C+一个显著的特点,利用 Visual C+编译出的程序空间小,运行快,比其他的编译工具编译出的软件占据较多优势 11。3.1.2 WinPcap 简介WinPcap 是一个在 Windows 操作系统下的免费、公开的用于直接访问网络的开发工具包(编程 API) 。大多数 Windows 网络应用程序都是通过 Winsock API(Windows套接口)这类高级编程接口访问网络的。这种方法只能可以在网络上进行简单的数据传送,不可以满足实际的需要。有些程序希望绕过 TCP/IP 协议栈,直接处理底层网络中的通信数据,它们需要对网络进行底层进行直接访问,即在没有类似协议栈(TCP/IP 协议栈)的实体介入条件下对网络进行原始访问。基于 Winsock API 编程,应用程序是通过调用操作系统提供的编程接口访问 TCP/IP 协议栈实现网络通信的。基于 WinPcap 编程,网络程序实际上是绕开操作系统的 TCP/IP 协议栈直接通过底层网络发送数据,因此网络程序可以实现一些更低级、更灵活的功能。Winpcap 提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植和方便开发。很多不同的工具软件都使用 Winpcap 进行网络安全监控,网络分析和故障排除等方面。Winpcap 特别适用于网络及协议分析 ,网络监控,NIDS 等经典领域。但是 Winpcap 也不是万能,因为它不利用主机的如 TCP/IP 协议去接收和发送数据包,防灾科技学院毕业设计所以它一定不可以阻塞,一台主机中各程序之间的通信数据是不可以同时处理,物理线路上的数据报只能被它感受到,因此 QoS 调度和个人防火墙等是不能用它。(1)利用 WinPcap 进行网络数据包的捕获和过滤的步骤表 3.1 具体步骤第一步 打开网卡,并设为混杂模式第二步回调函数 Network Tap 在得到监听命令后,从网络设备驱动程序处收集数据包把监听到的数据包负责传送给过滤程序第三步当 Packet filter 监听到有数据包到达时,NDIS 中间驱动程序首先调用分组驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序第四步然后由 Packet filter 过滤程序决定哪些数据包应该丢弃,哪些数据包应该接收,是否需要将接收到的数据拷贝到相应的应用程序第五步通过分组过滤器后,将数据未过滤掉的数据包提交给核心缓冲区。然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区。监听程序可以直接从用户缓冲区中读取捕获的数据包第六步 关闭网卡 25图 3.2 NDIS 驱动程序结构(2)WinPcap 安装本网络探测程序需要用到两个文件,他们都可以从 WinPcap 官方网站(/install/default.htm)上下载。第一个文件是 WinPcap4_0_2.Exe,它是一个自动安装文件,其包括重要的动态链接库(DLL)和驱动程序,双击此文件就可以按照提示进行安装了。这个文件必须安装,防灾科技学院毕业设计他是所有基于 WinPcap 的应用程序运行所必须的。如果不安装此文件,就不能运行基于 WinPcap 的应用程序。第二个文件是 WpdPack_4_0_2.Zip,他是 WinPcap 开发包文件,是设计基于WinPcap 的应用程序的开发文件。该文件包括开发用的头文件和静态链接库文件,是开发者要用到的。如果不需要开发基于 WinPcap 的程序,而只是运行基于 WinPcap 的软件,就不需要此文件。(3)WinPcap 数据结构由于 WinPcap 的设计与 Libpcap 相同的数据结构。在此只列出所有的 WinPcap 核心数据结构,并进行简单介绍。pcap_addr 数据结构描述的是网络接口的地址的定义如下:typedef struct pcap_addr pcap_addr_tstruct pcap_addrstruct pcap_addr *next; /指向下一个地址节点struct sockaddr *addr; /网络接口地址struct sockaddr *netmask;/地址掩码struct sockaddr *broadaddr; /广播地址struct sockaddr *dstaddr; /目的地址;pcap_file_header 数据结构描述一个 WinPcap 用不同的存储文件类型,一个存储文件类型用唯一值来表示 26定义如下:struct pcap_file_headerbpf_u_int32 magic; /文件类型u_short version_major;/主版本号u_short version_minor;/次版本号bpf_int32 thiszone; /区域时间bpf_u_int32 sigfigs; /时间戳bpf_u_int32 snaplen; /捕获长度bpf_u_int32 linktype;/链路层类型;pcap_if 数据结构描述的是把当网络接口表较多时组成一个链表,用此链表来存储防灾科技学院毕业设计所有的网络接口 26,定义如下:typedef struct pcap_if pcap_if_t;struct pcap_ifstruct pcap_if *next; /下一个网络接口节点char *name; /网络接口名字char *description; /描述信息struct pcap_addr *addresses; /网络接口地址bpf_u_int32 flags; /标记;pcap_pkthdr 数据结构描述每个捕获到的数据包的一些基本信息,定义如下:struct pcap_pkthdrstruct timeval ts; /时间戳bpf_u_int32 caplen; /捕获长度bpf_u_int32 len; /数据包长度;pcap_stat 数据结构主要描述的是 WinPcap 的状态信息 26,定义如下:struct pcap_statu_int ps_recv; /捕获到得数据包个数u_int ps_drop; /丢失的数据包个数u_int ps_ifdrop; /未用#ifdef WIN32u_int bs_capt; /数据包到达应用层的个数#endif;(4)WinPcap 函数说明WinPcap 提供的输出函数与 Libpcap 的函数是完全一样的,他们的使用方式也完全一样。在此只列出所以函数名称及功能介绍,其详细说明请查看 WinPcap 帮助文档,帮助文档可从此处下载(/winpcap/html/index.html)。与Windows 相关的输出函数单独列出,并进行详细介绍。防灾科技学院毕业设计表 3.3 网络接口函数查找机器的所有可用的网络接口,用一个网络聊表返回int pcap_findalldevs(pcap_if_t *alldevsp,char *errbuf)释放网络接口链表中的所有网络接口 void pcap_freealldevs(pcap_if_t *alldevs)查询本机的网络接口名字 char *pcap_lookupdev(char *errbuf)获取网络地址和网络掩码int pcap_lookupnet(register const char *evice,register bpf_u_int32 *netp,register bpf_u_int 32 *maskp,register char *errbuf)打开一个网络接口进行数据包捕获。打开 iade 模式有promisc表示:如果是 1,就表示以混杂模式打开此网络接口;否则,以非混杂模式打开网络接口pcap_t * pcap_open_live(const char *device,int snaplen,int promisc,int to_ms,char *errbuf)表 3.4 规则函数设置 BFP 过滤规则,由参数 fp确定int pcap_setfilter(pcap_t *p,struct bpf_program *fp)编译 BPF 过滤规则 int pcap_compile(pcap_t *p,struct bfp_program *program,char *buf,int optimize,bpf_u_int32 mask)编译 BPF 过滤规则 int pcap_compile_nopcap(int snaplen_arg,int linktype_arg,strcut bpf_program *program,char *buf,int optimize,bpf_u_int 32 mask)释放过滤规则的内存 void pcap_freecode(struct bpf_program *program)表 3.5 数据包捕获函数循环捕获网络数据包,直到遇到错误或满足退出条件。每捕获一个数据包就调用 callback 只是的回调函数。所以,可以在回调函数中对捕获到的数据包进行操作int pcap_loop(pcap_t *p,int cnt,pcap_handler callback,u_char *user)捕获网路数据包 int pcap_dispatch(pcap_t *p,int cnt,pcap_handler callback,u_char *user)捕获一个网络数据包,然后返回此

温馨提示

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

评论

0/150

提交评论