网络工程毕业设计(论文)Windows下实现网络数据包的捕获与分析.doc

上传人:仙人指路1688 文档编号:3991577 上传时间:2023-03-30 格式:DOC 页数:41 大小:4.62MB
返回 下载 相关 举报
网络工程毕业设计(论文)Windows下实现网络数据包的捕获与分析.doc_第1页
第1页 / 共41页
网络工程毕业设计(论文)Windows下实现网络数据包的捕获与分析.doc_第2页
第2页 / 共41页
网络工程毕业设计(论文)Windows下实现网络数据包的捕获与分析.doc_第3页
第3页 / 共41页
网络工程毕业设计(论文)Windows下实现网络数据包的捕获与分析.doc_第4页
第4页 / 共41页
网络工程毕业设计(论文)Windows下实现网络数据包的捕获与分析.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《网络工程毕业设计(论文)Windows下实现网络数据包的捕获与分析.doc》由会员分享,可在线阅读,更多相关《网络工程毕业设计(论文)Windows下实现网络数据包的捕获与分析.doc(41页珍藏版)》请在三一办公上搜索。

1、电子科技大学本科毕业设计(论文) 题 目 _ windows下实现网络 数据包的捕获与分析 学生姓名 专业班级 网络07-1班 学 号 院 (系) 网络教育学院 指导教师(职称) 完成时间 2011 年 5月 25日 电子科技大学毕业设计(论文)任务书题目: windows下实现网络数据包的捕获与分析 任务与要求:主要内容:在Windows实现网络数据包的捕获分析程序,具有网络数据包的捕获,网络数据包的分析,以及各协议数统计。基本要求:1. 使用Winsock技术完成一个网络抓包实例程序。 2设计严谨、功能完备。 3界面美观大方,使用方便。时间: 年 月 日 至 年 月 日 共 周学习中心:

2、郑 州 轻 工 业 学 院 学 习 中 心学生姓名: 学 号: 专 业: 网 络 工 程 指导单位或教研室:指导教师签名: 职 称: 电子科技大学网络教育学院年 月 日目 录中文摘要IABSTRACTII第一章 引言1第一节 开发背景1第二节 国内外研究现状1第三节 课题研究的意义2第四节 技术支持2第二章 需求分析3第一节 需求说明3第二节 需求分析3第三节 可行性分析4第三章 网络数据包捕获与分析程序的总体设计5第一节 网络数据包捕获与分析程序的功能分析5第二节 程序的工作流程5第三节 数据包捕获关键技术比较分析6一、 BPF的工作方式6二、 libpcap 分组捕获函数库7三、 winp

3、cap工作原理8四、 Jpcap工作原理8五、 Winsock工作原理8第四章 Windows下数据包捕获与分析的具体实现10第一节 网络数据包捕获模块的实现11一、 数据包捕获机制11二、 IP数据包的捕获方法12三、 数据捕获模块的实现13第二节 协议分析模块的实现15一、 网络协议分析的总体流程15二、 对TCP/IP模型中各层协议的分析15三、 分析模块的实现19第三节 网络数据包统计模块实现20第五章 数据包存储模块的具体实现22第一节 ODBC简介22第二节 数据库的设计和ODBC连接24第三节 保存捕获数据包28第六章 程序运行与测试31第一节 测试环境31一、 硬件环境31二、

4、 程序运行环境31第二节 测试步骤31第三节 测试结果评价32结束语33致 谢34参考文献35Windows下实现网络数据包的捕获与分析中文摘要IP数据包捕获程序是实现监控管理网络和分析网络安全的最基本工具。本文阐述了IP数据包的捕获机制和捕获方法,介绍并实现了基于windows下使用Winsock网络编程接口设计的数据包捕获的应用程序。通过对Winsock的分析,提出了基于Win32平台下的IP数据包捕获程序的设计思想和程序流程图,并用VC+语言开发了一个IP数据包捕获程序。该程序使用了Winsock网络编程接口,实现了对IP、TCP、UDP、ICMP数据包的捕获,并具有对捕获的数据包进行统

5、计的功能。网络数据包的捕获对于网络安全有着巨大的作用,为我们更好的分析网络中的数据流提供了帮助。本论文是基于Windows下开发一个网络监听工具,侧重点在于实现网络数据包的捕获,然后分析并显示捕获到的数据包信息这部分功能的实现,如分析:IP首部协议类型、源IP、目的IP和端口号等。数据包的捕获是实现防火墙、网络协议的分析或者网络监听等等功能的核心内容,一般可以采用Winsock编 程、Winpcap或者NDIS网络接口驱动来实现。关键字 计算机网络;数据包捕获;IP数据包;Winsock Network Packet Capture and Analysis Under The Windows

6、ABSTRACTIP packets capture program realizes monitoring and analyzing the most basic tools of the network. This pager has explained IP packets to capture the mechanism and catch the method. Introduced and implemented the use of windows based on the Winsock designed to capture packet applications. By

7、the analysis of the Winsock, based on the Win32 platform IP packet capture process flow chart of the design ideas and procedures, and VC + + language has developed an IP packet capture program. This program can be achieved capturing of IP packet,TCP packet,UDP packet and ICMP packet which is under t

8、he Winsock, and to be capable of statistical packets.This paper is about a network monitoring tool based on Windows system, which emphasizes particularly on realizing the capture and analysis of network data packets and then displays them. Take analysis as an example, it will check the type of the I

9、P protocol, the source address of IP, the destination address of IP and the port number. The capture of data packets is the basis of realizing the analysis of network protocol and network monitoring. Generally it can be realized via Winsock and Winpcap programming, or NDIS.Use the Winpcap(Windows Pa

10、cket Capture)to capture of data packets. Winpcap is a professional developing program based on Windows which is designed to help you to capture the data packs via Libpcap. Winpcap is much more powerful. It not only has integrated all the functions of Libpcap but also has some advanced functions.Keyw

11、ords Internet, Capture packet, IP packet, Winsock第一章 引言第一节 开发背景随着网络技术的飞速发展,网络的普及,给我们带来了巨大的社会和经济效益,同时网络安全问题变得日益严重,计算机网络的设计、维护难度日益增加,安全问题 正威胁着每一个网络用户,对网络安全的研究也越来越重要。因此,人们迫切的需要能够分析、诊断和测试网络的工具,以及保护我们的电脑尽可能的减少受到侵害的堡垒防火墙。对于网络数据包的捕获现在也有着很多的实现方法,存在着许多开源的sniffer软件供我们参考,但是其中的某些细节上还是有一些问题的存在,在效果和效率上都有一些问题,分析上也

12、并不是很方便。所以尝试选择了这个课题。IP数据包是互联网的基本传输单元,主要由发送端IP地址、接收端IP地址和净载数据等部分组成。发送端用户通过TCP/IP协议将要发送的数据信息封装成IP数据包在互联网上传输,接收端用户将得到的IP数据包,通过TCP/IP协议解封装,即将各层封装的协议信息去掉后得到发送端用户的数据信息。由于互联网的“共享性”,使得连接在互联网上的网络用户和网络设备都可能收到成千上万的来自不同网络的数据信息。这些数据信息包括正常的数据信息,也可能包含带有强烈攻击性和破坏性的病毒信息,严重威胁着网络的安全。因此对互联网上IP数据包的侦测成为防止网络遭受非法入侵、保证网络安全不可缺

13、少的重要手段,IP数据包捕获程序成为网络安全的必备工具。第二节 国内外研究现状现在不论是网上的一些开源的Sniffer软件还是市面上出售的网络监听软件,其实其基础功能都是基于网络数据包捕获功能后扩展开的。所以我们可以清晰的 认识到网络数据包捕获功能的巨大作用和广泛的应用范围。目前sniffer软件种类繁多,但是很多都存在一些问题,比如说:效率低,效果差,分析困难等等。有些sniffer软件往往嵌入许多并不怎么使用的功能在里面,增加了操作的复杂性,使用起来反而不便。所以真正想要找到一款操作简单使用方便的数据包捕获软件并不容易。作为一名网络工程专业的学生,熟悉常用的各种计算机相关软件,特别是和网络

14、相关的软件是应该的。现在市场上的国内外的各种防火墙软件、网络监听软件和协议分析软件等软件种类繁多,让人有点眼花缭乱。这些产品大多数品质都不错,各有各的特点,所以选择起来的难度也挺大。我总是在一些比较著名的软件下载网站上获取一些比较受好评的软件来使用,然后从中选择适合自己的。通过一系列的使用和学习,我希望能够自己完成一款功能适合自己使用的操作简单让人可以轻易上手的网络数据包捕获和简单分析的软件。第三节 课题研究的意义随着网络的飞速发展,Internet的迅速普及,网络已经深入到了我们的生活,跟我们息息相关。伴随着网络带来的便利,网络安全问题也越来越受到人们的关注和重视。防火墙也成了一个非常热门的

15、课题,带来巨大的社会经济效益,保护我们的合法权益不受到侵害。我选择的课题是windows下的网络数据包的捕获工具的开发和实现,所以主要的研究方向和侧重点是在于最基本也是最核心的网络数据包的捕获和分析等功能上。网络数据包的捕获在于网络安全领域有着无可代替的重要作用,不论是防火墙技术,网络监听技术或者是网络测试都离不开数据包的捕获,这是一切的基础,其他的功能都要基于这个功能才能实现。第四节 技术支持最近几年,计算机网络的发展一日千里,人们对网络服务应用程序的要求也越来越高、越来越多。现在虽然有很多的网络应用程序,但是在很多的情况下,需要开发适合自己使用的网络应用程序。Microsoft公司的Vis

16、ual C + +平台是一个具有高度综合性的软件开发工具,它不仅具有很强的程序处理能力,而且还能提供多种的编程风格;与Visual C +捆绑的MFC(Microsoft Foundation Class)提供了大量的封装良好的类,使用户在使用Visual C + +时有如虎添翼的感觉。Visual C + +对网络应用程序开发的支持是十分强大和充分的。第二章 需求分析第一节 需求说明进入21世纪以来,信息安全的重点放在了保护信息,确保信息在存储、处理、传输过程中及信息系统不被破坏,确保对合法用户的服务和限制非授权用户的服务,以及必要的防御攻击的措施。信息的保密性、完整性、可用性 、可控性就成

17、了关键因素。网络中存在着各种攻击1:一是主动攻击,也称为系统型攻击,它针对的目标是系统,威胁的是系统安全。它以各种方式有选择地破坏信息的有效性和完整性,甚至造成网络服务器瘫痪,停止提供各类服务:如死亡之ping、UDP洪水、SYN洪水、电子邮件炸弹等等,都是利用畸形的或大量的TCP/IP 数据包将服务器摧垮。另一类是被动攻击,也称为数据型攻击,它威胁的是数据安全。它是在不影响网络正常工作的情况下,进行截获、窃取、破译以获取重要机密信息,如特洛伊木马、缓冲区溢出等等,都是通过一段具有特殊功能的小程序夺取服务器的控制权,实现对服务器的远程控制,这两种攻击均可对计算机网络造成极大危害,并导致机密数据

18、的泄漏。Internet的开放性以及其他方面因素导致了网络环境下的计算机系统存在很多安全问题。为了解决这些安全问题,各种安全机制、策略和工具被开发和应用。而这些开发和应用的基础就是网络数据包的捕获与分析。本文用Winsock2网络编程接口介绍和实现了一个数据包捕获与分析程序。第二节 需求分析本程序是一种网络通讯程序,主要是通过对网卡的编程来实现的,对网卡的编程有很多种方法,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播方式发出的数据帧,对于其他形式的数据帧,网络接口在验证目的地址并非自身地址之后将不引起响应,也就是说应用程序无法接收到达的数据包。而本程序的目的恰恰在于从网卡接收所有经

19、过它的数据包,这些数据包既可以是发给自己的也可以是发给别人的。显然,要达到此目的就不能让网卡按通常的正常模式工作,而必须将其设置为混杂模式。本数据包捕获程序的设计一般有如下几个阶段:(1). 包捕获设置:包括网络适配器的识别和网卡混杂模式的设置;(2). 数据分析:对捕获的数据进行分析处理,获得数据包中的上层信息。(3). 计数器设置:对捕获到得数据包进行分类,并进行数据统计。(4). 数据包存储:将分析得出来的数据包通过数据表的形式存储到数据库中。以备用户进行下一步的操作。第三节 可行性分析本程序使用的是Winsock网络编程接口实现,Windows下网络编程3的规范Windows Sock

20、ets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。MFC4提供的套接口类屏蔽了大多数的细节,我们只需要做很少的工作就可以开发出利用网络进行通信的软件。采用Winsock来实现捕获分析网络数据包是简单可行的。第三章 网络数据包捕获与分析程序的总体设计首先定义各协议的报头,解析IP报头内容,进而确定协议类型:TCP、UDP或ICMP,之后再分别进行相应的报头解析,将分析内容用ListControl显示出来,并计算各数据包的数量,用控件显示出来。同时将所得到的数据包存入到SQL数据库中,通过对数据表的操作,对所捕获到得数据包进行处理。程序总体流程图如图3-1:监听网络状态捕

21、获网络数据包分析网络数据包各数据包的数量统计保存数据包数据图3-1 程序总体流程第一节 网络数据包捕获与分析程序的功能分析本程序主要完成了网络数据包的捕获,以及对捕获到得数据包进行分析,根据不同的协议进行数据统计,并实现对分析后的数据包进行存储。现在有很多处理网络数据包的开发包,本程序主要使用的是Winsock技术实现的。第二节 程序的工作流程首先对个协议的名称结构进行定义,定义一个协议名称的数组和一个得到协议名称的函数。通过函数获得网络设备名(一个字符串指针),根据所获得的网络设备名调用函数来获得指定网络设备的网络号和掩码, 再调用函数获得网络数据包, 并对捕获到得数据包进行分析,并显示出来

22、。第三节 数据包捕获关键技术比较分析要进行数据包的捕获5,可以运用多种方法,其中包括BPF、Libpcap、Winpcap、Jpcap、Winsock等。一、 BPF的工作方式要捕获数据包,必须使用数据链路访问技术,许多源自Berkeley 的实现使用BPF 作为数据链路层访问手段,在支持BPF 的系统上,每个数据链路驱动程序就在收到一个分组之后或发送一个分组之前调用BPF。它的工作方式如图3-2所示。应用进程应用进程缓冲区缓冲区过滤器过滤器Ipv4Ipv6BPF数据链路进程内核收到的分组的拷贝发出的分组的拷贝图3-2 BFP 截获分组的过程从数据链路层收到的一个数据包后,它将向上层协议传递,

23、根据IP 协议的版本分发给不同的协议栈,每向上传递一层就剥离一层头部。直到传递给应用程序。将网卡设为混杂模式后,数据链路层接收本网络段内的所有帧,它将收到的分组和发出的分组拷贝一份送至BPF,经过滤器送至缓冲区,最后传给应用程序。BPF 的优点在于:过滤由内核完成,减少了从BPF拷贝到应用程序的数据量;每个分组只有部分数据由BFP 传递给应用进程,可以只捕获用户感兴趣的部分;使用了缓冲技术,只有在缓冲区满或读超时发生时才拷贝给应用进程,减少系统调用的次数。二、 libpcap 分组捕获函数库由于libpcap 与操作系统平台无关,所以它是使用最多的一种捕获方法。libpcap 是一个独立于操作

24、系统的访问数据链路层的方法,主要用于读取数据链路层的数据, 它支持BPF,DLPI 以及SOCK_PACKET。Libpcap 的工作过程如图3-3所示,它是通过调用相应的库函数来实现的,步骤如下:查找有效的网络设备获得网络地址及网络掩码打开网络设备设置过滤器捕获包将用户输入的字符串编译到过滤程序中缓冲满?退出显示捕获的包NY图3-3 libpcap 的工作过程(1)查找网络设备(pcap_lookupdev)。(2)获取网络地址及网络掩码(pcap_lookupnet)。(3)打开网络设备(pcap_open_live)。(4)将过滤字符串编译到过滤程序中(pcap_compile)。(5)

25、设置过滤器(pcap_setfilter)。(6)开始捕获包(pcap_dispatch)。查找网络设备时,如果有多个接口,将自动选择序号最小的接口,如果要指定接口,可以把接口名直接传给应用程序;打开网络设备时,通过传递函数参数可将网卡设置为混杂模式;过滤字符串表达了过滤规则,它的格式与Tcpdump使用的相同。以上列出的只是几个重函数,函数原型可查看相关文献。三、 winpcap工作原理winpcap 是libpcap 在windows 下的版本,它们具有相同的接口,程序员只需要调用相应的函数。Winpcap的结构如图3-4所示,数据包监听设备驱动程序直接从数据链路层取得网络数据包,且不加修

26、改地传递给运行在用户层的应用程序,低级的动态链接库运行在用户层,它把应用程序和数据包监听设备驱动隔离开来,使得应用程序可以不加修改地在不同的windows系统上运行。著名的网络入侵检测系统snort 的windows 版是通过它来捕获数据。应用程序高级静态链接库高级静态链接库数据包监听设备驱动程序协议栈用户层内核层数据包图3-4 winpcap 的结构四、 Jpcap工作原理Jpcap 是一个java 类库,它使java 应用程序能捕获和发送网络数据包。Jpcap 是基于libpcap、winpcap和原始套接字的,所以它能够工作于安装有libpcap和winpcap的任何操作系统上。基于移动

27、代理的入侵检测系统可用Jpcap获取检测数据源。五、 Winsock工作原理Socket6在英文中试插座的意思,他的设计者实际上是暗指电话插座。因为在Socket环境下编程很想事模拟打电话,Internet的IP地址就是电话号码,要打电话,需要电话插座,在程序中就是向系统申请已个Socket,以后两台机器上的程序“交谈”都是通过这个Socket来进行的。对程序员来说,也可以把Socket看成一个文件指针,只有向指针所指的文件读写数据,就可以实现双向通信。利用Socket进行通信,有两种主要的方式。第一种是面向连接的流方式。顾名思义,在这种方式下,两个通信的应用程序之间先要建立一种连接链路,其过

28、程好像在打电话。一台计算机(电话)要想和另一台计算机(电话)进行数据传输(通话),必须首先获得一条链路,只有确定了这条通路之后,数据(通话)才能被正确接收和发送。这种法师对应的是TCP(Transport Control Protocol)协议。第二种叫做无连接的数据报文方式,这时两台计算机像是把数据放在一个信封里,通过网络寄给对方,信在传送的过程中有可能残缺不全,而且后发出的信也有可能会先收到,它对应的是UDP(User Datagram Protocol)协议。流方式的特点是通信可靠,对数据有校验和重发的机制,通常用来做数据文件的传输如FTP、Telnet等;数据报文方式由于取消了重发校验

29、机制,能够达到较高的通信速率,可以用于对数据可靠性要求不高的通信,如实时的语音、图像传送和广播消息等。在ISO的OSI网络七层协议中,Winsock主要负责的是控制数据的输入和输出,也就是传输层和网络层。Winsock屏蔽了数据链路层和物理层,它的出现给Winsock下的网络编程带来了巨大的变化。Winsock技术的出现,极好的屏蔽了网络底层复杂的结构和协议,因此基于Winsock的网络应用程序可以在不同类型的网络上运行。这些优点,是Winsock成为网络编程的最流行技术,所以,本文中的实例就是用Winsock技术完成的。第四章 Windows下数据包捕获与分析的具体实现根据前面的设计思路,不

30、难写出数据包捕获模块的实现代码,下面就给出一个简单的实例,该实例可以捕获到所有经过本地网卡的数据包,并可从中分析出协议、IP源地址、IP目标地址、TCP源端口号、TCP目标端口号以及数据包长度等信息。由于前面已经将程序的设计流程讲述的比较清楚了,因此在这里就不在赘述了,下面就结合注释对程序的具体实现进行讲解,同时为了程序的清晰可见,去掉了错误检查等保护性代码。主要代码实现清单为:/创建原始套接字m_s = socket( AF_INET , SOCK_RAW , IPPROTO_IP ) ;/得到本机名gethostname(szHostName, sizeof(szHostName) ;/得

31、到IP地址表GetIpAddrTable(NULL,&dwSize,FALSE);/填充SOCKADDR_IN结构Addr_in.sin_addr=*(in_addr *)pHost-h_addr_list0;/IPaddr_in.sin_family=AF_INET;addr.in.sin_port=htons(57274)/把原始套接字Sock绑定到本地网卡地址上bind(m_s,(PSOCKADDR)&sa, sizeof(sa)/dwValue为输入输出参数,为1时执行,0时取消DWORD dwValue=1;/设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包。其中SI

32、O_RCVALL的定义为:#define SIO_RCVALL_WSAIOW(IOC_VENDOR,1)ioctlsocket(sock,SIO_RCVALL,&dwValue);前面的工作基本上都是对原始套接字进行设置,在将原始套接字设置完毕,使其能按预期目的工作时,就可以通过recv()函数从网卡接受数据了,接受到的原始数据包存放在缓存RecvBuff中,缓冲区长度BUFFER_SIZE定义为65535。然后就可以根据前面对IP数据段头、TCP数据段头的结构描述而对捕获的数据包进行分析。第一节 网络数据包捕获模块的实现一、 数据包捕获机制一般数据包的传输路径依次为网卡、设备驱动层、数据链路

33、层、IP 层、传输层、最后到达应用程序。IP数据包的捕获就是将经过数据链路层的以太网帧拷贝出一个备份,传送给IP数据包捕获程序进行相关的处理,图4-1给出了IP数据包捕获的结构框图。 建立网络套接字进行循环捕获设置过滤条件进行网络监听调用回调函数处理数据包图4-1 IP数据包捕获结构框图结构框图的右半部分为数据包的传输组件,由TCP/IP协议和应用程序组成,完成将IP数据包封装在数据链路层的以太网帧内,并向网络媒介传输的整个封装或分解的过程。结构框图的左半部分为数据包的捕获组件,由数据包捕获函数库和数据包分析器组成,实现将数据链路层的以太网帧作拷贝、过滤、缓冲等相关处理,并对捕获的数据包进行分

34、析处理的功能。IP数据包的捕获程序一般由数据包捕获函数库和数据包分析器组成。数据包捕获函数库是一个独立于操作系统的标准捕获函数库。主要提供一组可用于查找网络接口名称、打开选定的网络接口、初始化、设置包过滤条件、编译过滤代码、捕获数据包等功能函数。对捕获程序而言,只需要调用数据包捕获函数库的这些函数就能获得所期望的IP数据包。这种捕获程序与数据包捕获函数库分离的机制,使得程序具有很好的可移植性。IP数据包捕获程序的核心部分就是数据包分析器。数据包分析器应具有识别和理解各种协议格式(IP、TCP、UCP、ICMP协议)和帧格式的能力,并对捕获的数据进行分析和统计处理。通常编写数据包捕获程序的主要工

35、作就是如何实现数据包分析器的功能。对于以太网来说,数据包分析器根据Ethernet II帧格式中定义的Frame Type字段,判断Ethernet II帧所包含的数据包是什么类型(IP数据包还是ARP数据包),如果是IP数据包,则数据包分析器再根据IP数据包格式中定义的Protocol字段,判断上层协议的类型。这样,通过由下而上地逐步判断分析,实现了数据包分析器对各种数据包和协议的识别理解。在局域网中捕获所有的IP包,并对IP包进行分析,是网络流量测量和网络管理的基础,许多网络管理工具(如SNIFFER等)都是在局域网上通过捕获IP数据包实现对网络的分析。一些黑客软件也常用此方法对网络进行窃

36、听与攻击。如何实现对所有IP包的捕获,在不同的操作系统,有不同的方法,但其基本原理是一致的,即利用Socket进行网络编程。下面利用Winsock编程方法,通过建立链表和线程,实现对局域网上的所有IP包进行高效的捕获和分析。二、 IP数据包的捕获方法数据包的捕获技术是依赖于以太网网卡的。网卡可以通过广播监听到以太网络上的数据包,这是数据包捕获技术的基础。但由于网卡一般有四种接收数据包的模式:即广播模式、组播模式、直接模式和混杂模式(图4-2为正常网卡的工作流程图,图4-3为混杂模式下网卡的工作流程图),这就产生了不同的捕获方法。其中混杂模式是最主要的捕获模式,在这种模式下的网卡能够接收一切通过

37、它的数据,而不管该数据是否是传给它的。通过将网卡设置为混杂模式使之可以接受目标地址不是自己的MAC地址的数据包,直接访问数据链路层获取数据包。合法端口合法IP地址合法MAC地址数据包丢弃丢弃丢弃传输层网络层物理层链路层YESYESNOYES图4-2 正常网卡的工作流程图合法端口合法IP地址合法MAC地址数据包不查看端口不查看IP地址不查看MAC地址传输层网络层物理层链路层数 据 全 部 被 完 整 捕 获图4-3 混杂模式下网卡的工作流程图三、 数据捕获模块的实现该模块包括数据包实现从指定网卡获取指定数据包的功能, 并把捕获到的数据包放到应用程序指定的缓冲区内。利用VC+6.07结合Winso

38、ck实现了数据包的抓取与显示,包抓取模块与显示模块均使用线程实现, 采用全局变量进行数据共享,下面给出了包抓取线程的关键代码。/接受数据iRet=recv(pDlg-m_s,buf,sizeof(buf),0);if( iRet = SOCKET_ERROR )dwErr = WSAGetLastError() ;sprintf( szErr , Error recv() = %ld , dwErr ) ;continue ;elseif( *buf )bufwork = buf ;/获取IP包的头 pIpHeader = (IPHEADER *)bufwork ; WORD iLen = n

39、tohs(pIpHeader-total_len) ;while( TRUE )if( iLen sourceIP;/获取源地址pSource = inet_ntoa( ina ) ;strcpy( szSource , pSource ) ;ina.S_un.S_addr = pIpHeader-destIP;/获取目标地址pDest = inet_ntoa( ina ) ;strcpy( szDest , pDest ) ;CString str, strProto, strSourPort, strDestPort, strData, strSize;/得到数据包的协议名称strProt

40、o = get_proto_name( pIpHeader-proto );HdrLen = pIpHeader-header_len&0xf;HdrLen *= 4;totallen = ntohs(pIpHeader-total_len);totallen-=HdrLen;完成了数据包的捕获10,就要对捕获到的数据包进行分析,通过分析各个数据包得到数据信息并进行显示。第二节 协议分析模块的实现一、 网络协议分析的总体流程该模块从缓冲区内读取数据包,首先对数据包进行分解,然后按照网络协议对数据包进行解析11。并以列表的形式实时显示数据包的解析结果,包括数据包的包长度、源IP、目的IP、端口,

41、使用协议等相关信息。数据包分析显示流程图如图4-4所示:等待缓冲区有新数据吗?从缓冲区读取数据协议分析数据包解析显示解析结果有无要想准确分析捕获到得数据包,就要对网络各协议的结构有很深的了解,下面介绍网络各协议的详细结构。二、 对TCP/IP模型中各层协议的分析原始套接字此时捕获到得数据包并不仅仅是单纯的数据信息,而且是包含有IP头,TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在底层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析8。下面先给出数据包的总体结构:表格 4-1 数

42、据包的总体结构数据包IP头 TCP头(或其他信息头) 数据IP数据报的结构:成员名字节数说明Version1/2IP的版本,现在为IPV4IHL(报送长度)1/2最常用为20,取515之前的值,最大60字节Type Of Service1优先和可靠性服务要求的数值Total Lenth2IP数据报的全长Identification2识别IP数据报的编号Flags3/81位为0表示有碎块,2位为0表示是最后的碎块,为1表示接收中。Fragment Offset13/8分片在原分组中的位置TTL1数据报寿命,建议值为32秒Protocol1上层协议Headerchecksum2报头检验码Sourc

43、e Address4发送端IP地址Destination Address4接收端IP地址Options And Padding4选项及填充位其中协议字段的值对我们分析数据包是很重要的:值协议意义1ICMPInternet Control Message Protocol6TCPTranfer Control Protocol8EGPExterior Gateway Protocol9IGPInterior Gateway Protocol17UDPUser Datagram Protocol数据在从应用层到达传输层时,将添加TCP数据段头,或是UDP数据段头。其中UDP数据段头比较简单,由一个

44、8字节的头和数据部分组成,具体格式如下:表格 4-2 UDP数据段头具体格式16位16位源端口目的端口UDP长度UDP校验和而TCP头部则比较复杂,以20个固定字节开始,在固定头后面还可以有一些长度不固定的可选项,下面给出TCP数据头的格式组成:.表格 4-3 TCP数据头的格式组成16位16位源端口目的端口顺序号确认号TCP头长(保留)七位URGACKPSHRSTSYNFIN窗口大小校验和紧急指针可选项(0或更多的32位字)数据(可选项)TCP数据报的首部构成:成员名字节数说明Source Port 2发送端端口号Destination Port 2接收端端口号Sequence NO 4本报文段所发送的第一个字节的序号ACK Number 4期望收到的下一个报文段的序号DATA Offset1/2首部的长度Reserved3/4保留今后用Contol Bits3/4控制位Window2滑动窗口的大小Checksum2检验和Urgent Pointer2紧急指针Options And Padding 4可选,真充项对于此TCP数据段头的分析在编程实现9中可通过数据结构TCPPacketHead来定义:struct TCPPacketH

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号