局域网监听系统的设计与实现—计算机毕业设计_第1页
局域网监听系统的设计与实现—计算机毕业设计_第2页
局域网监听系统的设计与实现—计算机毕业设计_第3页
局域网监听系统的设计与实现—计算机毕业设计_第4页
局域网监听系统的设计与实现—计算机毕业设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、毕毕 业业 设设 计计( 论论 文文)局域网中的网络监听系统的设计与实现局域网中的网络监听系统的设计与实现论论文作者姓名:文作者姓名:申申请请学位学位专业专业: :申申请请学位学位类别类别: :指指导导教教师师姓姓名名( (职职称称) ): :论论文提交日期:文提交日期:局域网中的网络监听系统的设计与实现局域网中的网络监听系统的设计与实现摘摘 要要随着计算机网络技术的迅速发展,网络的安全问题也显得越发重要。网络监听技术是系统安全领域内一个非常敏感的话题,也是一项重要的技术,具有很强的现实应用背景。网络监听是网络监测、负载分析等管理活动常用的方法,同时也是黑客非法窃取信息的手段。网络监听工具通过

2、网络传输介质的共享特性实现抓包,获得当前网络的使用状况,为网络管理员对网络中的信息进行实时的监测、分析提供一个合适的工具;同时也让黑客截获本网段的一些敏感信息,威胁网络安全。数据包捕获技术是设计网络分析软件的基础,而 WinPcap 则是 Windows 系统中实现的一个优秀的包捕获架构。文中结合该软件包的结构与功能对包捕获原理进行了详细的分析,并介绍了其在网络安全监控系统中的应用。该系统的基本原理是通过调用 WinPcap 库捕获本地网络上的所有数据包,然后对数据包进行协议分析,从而可以实时地监控网络。关键词:关键词:网络监听;WinPcap;包捕获;协议分析Design and Imple

3、mentation of Network SniffingSystem in LANAbstractWith the rapid development and extensive application of computer network technology, the security problem of network becomes more important. Network sniffer is an important issue and technique in the domain of system security, so it has strong realis

4、m application background. Network sniffer is a way which is used in network monitor, load analysis; at the same time it is also a way which is used by hacker to get the information illegally. Network sniffer tools snap packets to get the networks current status by the shared characteristic of the ne

5、twork transmission medium. It provides a useful tool for network manager which can help them inspect and analyze the information of network; simultaneously hackers also get some important information, so threaten system security.Packet capturing technology is the basis for designing analyzing softwa

6、re. WinPcap is one of the excellent packet capturing architectures under Windows. This paper analyzes packet capturing principle in detail combined with the structure and functions of the software and introduces its application in designing a network security and watch system. The fundamental princi

7、ple of this system is to capture all packets of the local network using WinPcap library, and perform protocol analyzing and decoding on these packets, so can monitor the network on real-time and find its problem and alarm automatically. The result from the application in LAN also confirms that the s

8、ystem is steady and very effective.Key words:Network Sniffer; WinPcap; Packet capture; Protocol Analysis目目 录录论文总页数:30 页1 引言.11.1课题背景.11.2研究现状.22 网络监听技术综述.32.1网络监听概念.32.2以太网监听的原理.32.3WinPcap 的原理.42.4综述.73 相关网络协议的分析.73.1网络的原理体系结构.73.2网络协议的分析与实现.83.2.1链路层.83.2.2网络层.93.2.3传输层.123.3小结.164 局域网监听系统的设计及实现.1

9、64.1局域网监听系统的设计.174.1.1功能设计.174.1.2模块设计.174.2局域网监听系统程序的实现.194.2.1数据包的捕获.194.2.2数据包的分析.214.2.3数据流量的统计.234.2.4实现过程中的难点和解决.244.3系统程序运行.25结 论.27参考文献.27致 谢.29声 明.30第 1 页 共 30 页1 1引言引言随着 Internet 的迅猛发展和信息社会的到来,网络已经影响到社会的政治、经济、文化、军事和社会生活的各个方面。以网络方式获取信息和交流信息已成为现代信息社会的一个重要特征。同时,随着人们对网络信息系统依赖的日益增强,网络正在逐渐改变人们的工

10、作方式和生活方式,成为当今社会发展的一个主题。但必须看到,紧随信息化发展而来的网络安全问题日渐凸出,如果不很好地解决这个问题,必将阻碍信息化发展的进程。国际标准化组织(ISO)将计算机安全定义为:为数据处理系统建立和采取的技术和管理的安全保护,保护计算机硬件、软件数据不因偶然和恶意的原因而遭到破坏、更改和泄漏。由此可以将计算机网络的安全理解为:通过采用各种技术和管理措施,使网络系统正常运行,从而确保网络数据的可用性、完整性和保密性。所以,建立网络安全保护措施的目的是确保经过网络传输和交换的数据不会发生增加、修改、丢失和泄露等。因此,在这样一个迫切需要网络安全的信息社会里,积极的研究和探索网络安

11、全问题是一件非常有意义的事情,通过研究网络监听系统来进行具体的网络安全研究工作是非常必要的。 1.1 课题背景课题背景随着 Internet 应用的日益普及,Internet 技术广泛应用于各行各业,为资源共享、信息交换和分布处理提供了良好的环境。计算机网络具备分布广域性、体系结构开放性、资源共享性和信道共用性的特点,因此增加了网络的实用性,同时也不可避免地带来系统的脆弱性,使其面临严重的安全问题。现在人们对计算机信息安全要求越来越高,随着计算机网络的资源共享进一步加强,随之而来的网络安全问题使得计算机网络安全保护将会变得越来越重要。网络监听是信息安全领域内一项非常重要和实用的技术,它的起源是

12、网络管理员为了诊断网络故障的需要,而监听网络中传输的数据信息。在网络管理和维护中,网络管理和维护人员常常利用网络监听技术监控网络当前的信息状况、网络流量,进行网络访问统计分析等等。更重要的是,可以发现网络中存在的漏洞和隐患,提高网络和系统的安全性。但在实际应用中,网络监听技术往往被黑客加以利用,用来窃取网络用户的机密资料。对于一般网站来说,被网络监听往往意味着用户个人隐私资料的丢失;而对于金融机构,恶意的网络监听更会带来难以弥补的金钱和信用损失。在防范网络攻击方面,通过数据截取及分析输出结果可以捕获到透过防火墙而进入网络的非法数据,成功的监视记录黑客的入侵过程,保障网络的安全。而且数据截取和协

13、议分析是入侵检测系统的重要部分,是入侵检测系统的最基第 2 页 共 30 页础的环节。因此网络监听无论是在网络攻击还是安全防御方面都扮演着重要的角色。1.2 研究现状研究现状在信息技术快速发展的今天,信息安全已经成为当前计算机研究一个主要领域。网络安全分为内部网络安全和外部网络安全,一般都采用防火墙或者在网络设备上设置参数隔离的方法对外部信息的恶意攻击进行监控,检测和阻止来保证外部网络的安全性;内部网络安全主要采取对网络活动的跟踪监控,提高对网络信息过滤的能力。对内部网络监控目前主要采用的是网络监听技术,自从这一技术诞生以来产生的大量的可工作在各种平台上相关软硬件工具,管理员使用这种网络监听工

14、具,可以监视网络的状态,数据流动的情况以及网络上传输的信息,起到防止攻击或克服内部网络缺陷的作用。在网络上,网络监听效果最好的地方是在网关、路由器、防火墙一类的设备处,通常由网络管理员来操作。使用最方便的是在一个以太网中的任何一台上网的主机上,它可以在不同的操作平台上进行监听。目前有很多能实现监听功能优秀软件:1)Sniffit:由Lawrence Berkeley实验室开发,运行于Solaris、SGI和Linux等平台。可以选择源、目标地址或地址集合,还可选择监听的端口,协议和网络接口等。2)NetXRay:在Windows9X和WindowsNT上,NetXRay是一个功能强大、使用方便

15、的协议分析和网络监控工具。它是一个优秀的软件,能监控多个网段,并且允许多监控实例存在,同时还能捕捉所需要的任何类型的报文。使用NetXRay还可以设置许多过滤条件,而且其操作界面也比较漂亮。3)Tcpdump:Tcpdump是网络管理员的强大监听工具。它是从应用程序中读入网络上有关的大量分组信息,与指定准则进行匹配来过滤这些分组信息。但是UNIX平台上的监听软件,界面都不是很友好,操作性不强。4)WinPcap:WinPcap是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap为用户级的数据包提供了Windows下的一个平台。目前使

16、用的最多的是Sniffit、WinPcap监听软件,由于在Unix和Linux系统中,发送这些命令需要超级用户的权限,这一点限制了在UNIX系统中,普通用户是不能进行网络监听的,只有获得超级用户权限,才能进行网络监听,而在Windows操作系统中,则没有这个限制,只要运行这一类的监听软件即可;目前网络数据捕获器大多数是基于过滤器技术来实现的,大多数的过滤程序都是建立在伯克利实验室的Libpcap基础之上的。因此本文涉及的是在以太网环境下并第 3 页 共 30 页在Windows操作系统中,使用数据捕获器WinPcap这一软件实现对底层数据进行监听。由监听技术发展的现状来看,目前主流的网络监听工

17、具软件几乎都是国外生产的软件。随着中国信息技术的发展,监听系统必将大有用武之地,因此监听技术的研究势在必行。2 2网络监听技术综述网络监听技术综述2.1 网络监听概念网络监听概念网络监听器俗称嗅探器(Sniffer),它是一种与网络安全性密切相关的应用工具。它的完整定义是利用计算机的网络接口截获目的地为其它计算机的数据报文的一种工具。在应用中,网络管理员可以使用网络监听器获取网络的当前流量状况;程序员可以利用监听器来监视网络程序的运行状态;对于黑客而言,网络监听工具也是黑客的常用工具。当信息以明文的形式在网络上传输时,便可以使用网络监听的方式来进行攻击。将网络接口设置在监听模式,便可以源源不断

18、地将网上传输的信息截获。网络监听可以在网上的任何一个位置实施,如局域网中的一台主机、网关或远程网的调制解调器之间等。黑客用得最多的是截获用户的口令。当黑客成功地登录进一台网络上的主机,并取得了该主机的超级用户权限后,往往要扩大战果,尝试登录或者夺取网络中其他主机的控制权。而网络监听则是一种最简单且最有效的方法,能轻易地获得用其他方法很难获得的信息。在网络上,监听效果最好的地方是在网关、路由器、防火墙一类的设备处,通常由网络管理员来操作。使用最方便的是在一个以太网中的任何一台上网的主机上,这也是大多数黑客的做法。2.2 以太网监听的原理以太网监听的原理以太网(Ethernet)具有共享介质的特性

19、,信息是以明文的形式在网络传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用和共享介质的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点都可以获得其他站点发送的数据。运用这一原理使得信息捕获系统能够拦截我们所要的信息,这是捕获数据包的物理基础。以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总第 4 页 共 30 页线上的站点所组成的,各个站点采用上面提到的 CSMA/C

20、D 协议进行信道的争夺和共享。由每个站点网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将他丢弃。如果是为本地地址,就接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给LLC 子层。正常的数据包过滤机制如图 2-1 所示:图 2-1 正常的数据包过滤机制网卡具有如下的几种工作模式:广播模式:它的物理地址(MAC)地址是 0Xffffff 的帧是广播帧,工作在广播模式的网卡接收广播帧。多播模式:多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却

21、接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。直接模式:工作在直接模式下的网卡只能接收目的地址是自己 MAC 地址的帧。混杂模式:工作在混杂模式下的网卡接收所有流过网卡的帧,数据包捕获过程就是这种模式下进行的。网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接收同一个网络内所有站点所发送的数据包,这样就能达到对于网络监听的目的。2.3 WinPcap 的原理的原理各种网络安全应用系统均是基于相应的网络数据包截获函数开发而成的。第 5 页 共 30 页虽然 Unix 平台上的 BSD

22、包过滤器(BPF,Berkeley Packet Filter,伯克利数据包过滤器)提供了一组供应用程序直接调用的网络数据包截获函数,允许应用程序与网卡间直接进行交互,但在 Win32 平台上,目前主要使用 WinPcap 体系结构。WinPcap 是 LibPcap 的 Windows 版本,它是基于 Win32 平台的网络包截获和分析的系统,它具有丰富的网络数据包处理函数,其功能比 BSD 包截获系统更强。它包括一个内核级的包过滤器(NPF),一个底层的动态链接库(packet.dll),一个高层并且与系统无关的库(wpcap.dll)。WinPcap 是集成于Windows 操作系统的设

23、备驱动程序,它可以从网卡捕获或者发送原始数据,同时能够过滤并且存储数据包。开发 WinPcap 这个项目的目的在于为 Win32 应用程序提供访问网络底层的能力。它提供了以下四项功能:l) 捕获原始数据包,包括共享网络上各主机发送/接收的以及相互之间交换的数据报;2) 在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉;3) 在网络上发送原始的数据包;4) 收集网络通信过程中的统计信息。图 2-2 WinPcap 结构图WinPcap 的基本结构沿用了 BPF( Berkeley Packet Filter,伯克利数据包第 6 页 共 30 页过滤器)几个最重要的模块:过滤器,

24、内核级和用户级的缓存,用户级上的两种库。WinPcap 的结构如图 2-2 所示,主要包括三部分:1) 内核级的网络组包过滤器(NPF)在内核级的部分即 NPF 是一个经过优化的内核模式驱动器,用于对数据包进行过滤,并将这些数据包原封不动地传给用户级模块,在这个过程中包括了一些操作系统特有的代码,如时间戳、数据包长度等信息。2) 数据包低级驱动程序库(packet.dll)数据包驱动程序库是与 Libpcap 相兼容的一组用户级的函数库。Packet.dll 用于在 Win32 平台上为数据包驱动程序提供一个公共的接口。由于不同的 Windows 系统都有自己的内核模块和用户层模块,而 pac

25、ket.dll 可以解决这些不同,提供一个与系统无关的 API。基于 packet.dll 开发的数据包截获程序可以运行于不同的 Win32 平台而不必重新进行编译。packet.dll 还有几个附加功能,它可用来取得适配器名称、动态驱动器加载以及获得主机掩码及以太网冲突次数等。packet.dll 和 BPF 均与所用的操作系统有关。3) 数据包高级驱动程序库(wpcap.dll)wpcap.dll 是与操作系统无关的,它含有诸如产生过滤器、用户级缓冲以及包注入等高级功能。所以,编程人员既可以使用包含在 packet.dll 中的低级函数直接进入内核级调用,也可以使用由 wpcap.dll

26、提供的高级函数调用,这样功能更强,使用也更为方便。wpcap.dll 的函数调用会自动调用 packet.dll中的低级函数,并可能被转换成若干个 NPF 系统调用。Wpcap.dll 模块与 Unix系统下的 BSD 捕获架构提供的 Libpcap 库完全兼容,在功能上它还增加了统计及数据包发送功能,统计功能可以快速实现对网络数据的统计,如一定时间内流经总线的数据包数目,数据字节数等,发送数据包功能使得应用程序不仅可以嗅探网络还可以实现向网络发送数据。在 Unix 系统下使用 Libpcap 编制的程序,经过重新编译后,可以在 Win32 平台上直接运行,由于这个原因我们通常用 Wpcap.

27、dll 模块来设计网络监听程序。WinPcap 的 API 函数直接从数据链路层获取数据帧,即 MAC 帧。根据网络协议的规定,对 MAC 帧层层分析,可以获得网络上所传输的数据内容。整个包捕获架构的基础是 NDIS(网络驱动器接口规范),它是 Windows 中最低端的与连网有关的软件,主要是为各种应用协议与网卡之间提供一套接口函数,包驱动器的 tap 函数就是通过调用这些函数实现其数据采集功能的。WinPcap 的优点在于:1) 独立于主机协议来发送和接收原始数据包,并且提供了一套标准的抓包第 7 页 共 30 页接口,与 Lipcap 兼容,可使得原来许多 Unix 平台下的网络分析工具

28、可以快速移植,便于开发各种网络分析工具。2) 充分考虑了各种性能和效率的优化,包括对 NPF 内核层次上的过滤支持。3) 支持内核态的统计模式,提供了发送数据包的能力。WinPcap 的缺点在于:不能阻塞、过滤或控制其他应用程序对数据包的收发,它仅仅是监听共享网络上传送的数据。因此,它不能用于 QOS 调度程序或个人防火墙。2.4 综述综述以上内容详细介绍了网络监听的原理。监听软件可以监听局域网中传输的数据包是因为以太网是总线型网,而且在以太网中主机进行数据传输时采用子网广播的方式。任何一台主机发送的数据包,都会在所经过的子网中进行广播。正常情况下,主机只接收属于自己的数据包,不与其它主机发生

29、混乱,这是计算机中的网卡工作的结果。将网卡的接收模式进行适当改变就可以改变网卡的过滤策略,使网卡能够接收经过本网段的所有数据包,无论这些数据包的目的地址是否是该主机。可通过调用 Winpcap 的 API 函数来改变网卡的工作模式进而截获数据包。而且,根据网络数据过滤机制的原理,在截获数据包之前还可对数据包进行过滤,实现截获管理员感兴趣的数据的目的。以上这些为后期的开发奠定了理论基础,为编程实现提供了指导。3 3相关网络协议的分析相关网络协议的分析3.1 网络的原理体系结构网络的原理体系结构网络协议通常分不同层次进行开发,每一层负责不同的通信功能。本局域网监听系统主要基于 TCP/IP 协议进

30、行网络数据包的监听与分析的。TCP/ IP 通常被认为是一个四层的体系结构,它包含应用层、运输层、网络层和链路层。结构如图 3-1 所示:第 8 页 共 30 页图 3-1 TCP/IP 协议的四层结构TCP/IP 协议的四层结构中每一层负责不同的功能:1) 链路层链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。在发送数据的时,链路层的任务是将在网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送以帧为单位的数据。2) 网络层网络层,有时也称作互联网层,处理分组在网络中的

31、活动。在 TCP/IP 协议中,网络层协议包括 IP 协议(网际协议) ,ICMP 协议(Internet 互联网控制报文协议) ,以及 IGMP 协议(Internet 组管理协议) 。其中 IP 是 TCP/IP 协议中最为核心的协议,所有的 TCP、UDP、ICMP 及 IGMP 数据都以 IP 数据报格式传输。3)运输层运输层,主要是为两台主机上的应用程序提供端到端的通信。在 TCP/IP 协议中,有两个互不相同的传输协议:TCP(传输控制协议)和 UDP(用户数据报协议) 。TCP 为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层

32、,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP 则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。第 9 页 共 30 页任何必须的可靠性必须由应用层来提供。4)应用层应用层是体系结构中的最高层。应用层确定进程之间通信的性质以满足用户的需要。这里的进程就是指正在运行的程序。应用层直接为用户的应用进程提供服务。在因特网中的应用层协议很多,如支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议,支持文件传送的 FTP 协议

33、等等。3.2 网络协议的分析与实现网络协议的分析与实现3.2.1 链路层链路层在数据链路层中分离出来的数据帧,并从帧头中得到源 MAC 地址、目标MAC 地址以及数据内容所用的协议。图 3-2 以太网的封装格式(RFC 894)在 TCP/IP 世界中,以太网 IP 数据报的封装(如图 3-2 所示)是在RFC894Hornig 1984中定义的。以太网帧由一个包含三个字段的帧头开始,前两个字段包含了物理地址,各六个字节,头部的第三个字段包含了 16 位的以太帧类型,帧后面是数据区。根据帧类型可以判断是哪种数据报,一般常用的有0X0080(IP 数据报) 、0X0806(ARP 请求/应答)

34、、0X0835(RARP 请求/应答)三种类型。实现过程中 MAC 头的定义如下:typedef struct tag_mac_headeru_char dadd6;/6 个字节 目标地址u_char sadd6;/6 个字节 源地址u_short mac_type;/2 个字节 类型mac_header;3.2.2 网络层网络层IP 协议是 TCP/IP 协议族中最为核心的协议。所有的 TCP、UDP、ICMP 数据都以 IP 数据报格式传输,TCP/IP 协议中传输数据的基本单位为 IP 数据报,其结构描述如图 3-3 所示。1)版本号:4 位,表示目前的 IP 协议的版本号。第 10 页

35、 共 30 页2)首部长度:4 位,确定 IP 数据包首部字段的长度,基本单位为 4 字节,IP 首部长度是 20 个字节。3)服务类型(TOS):8 位,选择哪一种网络服务。目前,大多数已不再使用该选项, 4)总长度:16 位,指整个 IP 数据包的长度,是 IP 首部中必要的内容,它的基本单位为字节。由于该字段长 16 比特,所以 IP 数据报最长可达 65535字节。5)标识字段:16 位,唯一标识主机发送的每一个数据报,并且每发送一次数据包该字段值自动加 1。通过它可以唯一确定一个数据包是哪个进程发送,对同一个主机的多个应用程序就可以区分开来。图 3-3 IP 数据报格式及首部中的各字

36、段6)标志域:3 位,第一位为“不分片”位(DF)表示通过 IP 层时,即使确定要进行分片,IP 不对其进行分片处理,抛弃该数据包,第 3 位为“更多的片”位(MF)除了最后一个分片外,其它的分片的这个域设置为 1。对 TCP 则设“不分片”位的比特置 1,因为 TCP 有超时和重传机制。7)片偏移:13 位,以 8 字节为单位表示的分片偏移。并且通过它可对 IP 数据包进行分片与重组。8)TTL(time-to-live)生存时间字段:8 位,设置了数据报可以经过多第 11 页 共 30 页少路由器数。它指定了数据报的生存时间。TTL 的初始值由源主机设置( 通常为 32 或 64 ),一旦

37、经过一个路由器,它的值就减 1。当该字段的值为 0 时,数据报就被丢弃,并发送 ICMP 报文通知源主机。9)协议类型:8 位,表示 IP 数据包的数据部分属于什么协议。取值:1 表示为 ICMP 协议2 表示为 IGMP 协议6 表示为 TCP 协议17 表示为 UDP 协议10)首部检验和:16 位,是根据 IP 首部计算的检验和码。它不对首部后面的数据进行计算。11)任选项:是数据报中的一个可变长的可选信息。通过以上的网络层分析在协议标识的第 10 个字节为 6 时,表示 IP 包的内容是一个 TCPsegment,从而获得网络层 TCP 的数据包。实现过程中 4Bit 的 IP 头的定

38、义:typedef struct tag_ip_addressu_char byte1; /sizeof(u_char)=1 u_char 占一个字节(8 位)u_char byte2;u_char byte3;u_char byte4;ip_address;实现过程中 IP 数据报报头的数据结构如下:/定义 IP 头 IP 数据包=IP 头TCP 数据段(或 UDP 数据段)typedef struct tag_ip_headeru_char ver_ihl; / u_char 8 位 版本(4 位) 头长(4 位)u_char tos;/TOS 服务类型u_short tlen;/包总长

39、u_short 占两个字节 u_short identification;/标识u_short flags_fo;/标志位 Flags(3 位)+分段偏移(13 位)u_char ttl;/TTLu_char proto;/Protocolu_short crc;/校验和ip_address saddr;/源地址第 12 页 共 30 页ip_address daddr;/目的地址u_int op_pad;/选项+填充字段 u_int 占 4 个字节 32 位/接下来是数据段,不属于 IP 头部ip_header;ICMP 经常被认为是 IP 层的一个组成部分。它传递差错报文以及其他需要注意的

40、信息 。ICMP 报文是在 IP 数据报内部被传输的,如图 3-4 所示。图 3-4 ICMP 封装在 IP 数据报内部ICMP 报文的格式如图 3-5 所示。图 3-5 ICMP 数据报格式及首部中的各字段首部ICMP 报文的种类有两种:ICMP 差错报文和 ICMP 询问报文。 ICMP 报文的前 4 个字节是统一的格式,共有三个字段:类型、代码、检验和,剩下的其他字节则互不相同。1)类型:8 位,可以有 15 个不同的值,以描述特定类型的 ICMP 报文。2)代码:8 位,是为了进一步区分某种类型中的几种不同的情况。3)检验和:16 位,检验和字段覆盖了整个 ICMP 报文。typede

41、f struct tag_icmp_headeru_char type;/8 位 类型u_char identifer;/8 位 代码u_char sequence;/序列号 8 位u_char chksum;/8 位校验和第 13 页 共 30 页icmp_header;3.2.3 传输层传输层运输层主要是为两台主机上的应用程序提供端到端的通信。在 TCP/IP 协议中,有两个互不相同的传输协议:TCP(传输控制协议)和 UDP(用户数据报协议) 。TCP(传输控制协议)是专门设计用于在不可靠的网络上提供可靠的、端到端的字节流通信的协议。一个 TCP 报文段分为首部和数据两部分,TCP 数据

42、报封装成一份 IP 数据报的格式如图 3-6 所示。图 3-6 TCP 数据报的封装TCP 的全部功能都体现在它首部中各个字段的作用。因此,只有弄清楚 TCP首部各字段的作用才能掌握 TCP 的工作原理。TCP 协议的首部字段如图 3-7 所示。图 3-7 TCP 数据报格式及首部中的各字段第 14 页 共 30 页TCP 报文段首部的前 20 个字节是固定的,后面有 4N 字节是根据需要而增加的选项(N 必须是整数) 。因此 TCP 首部的最小长度是 20 字节。首部固定部分各字段的意义如下:1)源端口和目的端口:各占 2 个字节。端口是运输层与应用层的服务接口。这两个值加上 IP 首部中的

43、源端 IP 地址和目的端的 IP 地址唯一确定一个 TCP 连接。2)序号:32 位,标识从 TCP 发送端向 TCP 接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。序号是 32 bit 的无符号数,序号到达232-1 后又从 0 开始。3)确认号:32位,是期望受到对方的下一个报文段的数据的第一个字节的序号,也就是期望收到的下一个报文段首部的序号字段的值。顺序号标志本分组的编号,确认号指示希望接受的下一个分组编号。4)首部长度:4 位,表示 TCP 报文段首部的长度。这条信息对于定位确切的数据信息十分重要,因为任选字段的长度是可变的。这个字段占 4bit,因此TCP 最多有

44、60 字节的首部。然而,没有任选字段,正常的长度是 20 字节。5)保留:6 位,保留为今后使用,但当前应置为 0。6)标志位:在 TCP 首部中有 6 个标志比特。它们中的多个可同时被设置为1。具体用法如下:URG:紧急指针(urgent pointer)有效;ACK:确认序号有效;PSH:接受方应该尽快将这个报文段交给应用层;RST:重建连接;SYN:同步序号用来发起一个连接。FIN:发端完成发送任务。7)窗口大小:16 位,TCP 的流量控制由连接的每一端通过声明的窗口大小来提供。窗口的大小为字节书,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个 16bit

45、字段,因而窗口大小最大为65535 字节。8)检验和:16 位,检验和覆盖了整个的 TCP 报文段。9)紧急指针:16 位,只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。10)选项:长度可变。最常见的可选字段是最长报文大小,又称为MSS(Maximun Segment Size) 。它指明本端所能接收的最大长度的报文段。第 15 页 共 30 页实现过程中 TCP 数据报报头的数据结构如下:typedef struct tag_tcp_header u_short sport;/源端口地址 16 位 u_short

46、dport;/目的端口地址 16 位 u_int32_t sn;/序列号 32 位 u_int32_t an;/确认号 32 位 u_int16_t other;/16 位 其中头长度 4 位保留 6 位UPG1+ACK1+PSH1+RST1+SYN1+FIN1 u_int16_t window_size;/窗口大小 16 位 u_int16_t check_sum;/校验和 16 位 u_int16_t urgent_pointer;/紧急指针 16 位 u_int32_t option;/选项 0 或 32 位tcp_header;UDP 是一个简单的面向数据报的运输层协议:进程的每个输出

47、操作都正好产生一个 UDP 数据报,并组装成一份待发送的 IP 数据报。UDP 数据报封装成一份 IP 数据报的格式如图 3-8 所示。图 3-8 UDP 数据报封装UDP 不提供可靠性:它把应用程序传给 IP 层的数据发送出去,但是并不保证它们能到达目的地。UDP 首部的各字段如图 3-9 所示。第 16 页 共 30 页图 3-9 UDP 数据报格式及首部中的各字段1)源端口和目的端口号:各 16 位,表示发送进程和接收进程。2)UDP 长度字段:16 位,指的是 UDP 首部和 UDP 数据的字节长度。该字段最小值为 8 字节。IP 数据报长度指的是数据报全长(如图 3-9) ,因此 U

48、DP 数据报长度是全长减去 IP 首部的长度。3)UDP 检验和:16 位,UDP 检验和覆盖 UDP 首部和 UDP 数据。实现过程中 UDP 数据报报头的数据结构如下:typedef struct tag_udp_headeru_short sport;/源端口 16 位u_short dport;/目的端口 16 位u_short len;/数据报长度 16 位u_short crc;/校验和 16 位udp_header;3.3 小结小结本章主要介绍了网络的体系结构及 MAC 帧头、IP、ICMP、TCP、UDP 协议的数据报格式。通过网络的功能分层带来了网络协议的层次结构。数据在传输

49、过程中,就面临着数据的封装。当应用程序用 TCP 传输数据的时候,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息) 。TCP 传给 IP的数据单元称作 TCP 报文段或简称为 TCP 段(TCP segment) 。IP 传给网络接口层的数据单元称作 IP 数据报(IP datagram) 。通过以太网传输的比特流称作帧(Frame) 。在本系统网络协议分析中对数据报的分析就是一个解封装的过程。4 4局域网监听系统的设计及实现局域网监听系统的设计及实现本程序设计所要求的运行环境如下:软件环境:操作系统 Win

50、dows2000;底层驱动 WinPcap3.0;编译环境 Visual C + 6.0;WinPcap 开发包 WpdPack3.0。硬件环境:网络环境同一网段的局域网;一台 PC 机;一张以太网网卡。图 4-1 是该系统所依赖的网络工作环境:第 17 页 共 30 页图 4-1 网络工作环境4.1 局域网监听系统的设计局域网监听系统的设计4.1.1 功能设计功能设计该网络监听软件实现的主要功能可以概括为以下几点:1) 首先对经过主机的所有网络数据包进行截获,实现抓取数据包的目的。2) 然后把截获的数据包保存在用户指定的文件中。3) 加载在上一步中保存的数据包到软件,根据 TCP/IP 协议

51、中各数据包的格式对加载的数据包进行解包分析,获得数据包包头的相关信息(如 MAC 帧的源、目的地址,TCP 的源、目的端口等信息) 。4) 实现对捕获数据的存储与加载,可以将捕获到的数据存储在磁盘上,以供分析研究。也可以从磁盘上加载数据,进行协议分析。5) 对局域网内网络数据包流量的统计,以实现对网络性能的判断。4.1.2 模块设计模块设计根据软件所需要实现的功能,将软件系统划分为以下几个主要模块:初始化模块,过滤模块,数据包截获模块,协议分析模块,数据包流量统计模块、存储、输出(保存信息)模块。如图 4-2 所示:第 18 页 共 30 页图 4-2 监听系统模块示意图初始化模块:初始化模块

52、主要的功能是获得主机上可用的网络设备,根据用户的选择,完成对用户选择的网卡的混杂工作模式的设置;并且完成WinPcap 的初始化以及启动工作。数据包截获的一系列准备工作都在这个模块中完成。数据包截获模块:该模块的功能是完成数据包的捕获,并将其存放到用户指定的文件中。协议分析模块:协议分析模块的功能主要是从用户指定的文件中加载截获的数据包,并根据 TCP/IP 协议中各个数据包的格式对以上加载的数据包进行解析,获得数据包的发送地址,目的地址,发送时间,源端口号、目的端口号等等。其中,这里主要实现了对 UDP, TCP, ICMP 包的分析。数据包流量统计模块:对局域网内数据流量进行统计分析,以获

53、得单位时间内局域网数据包的总量、平均流量及各协议数据包的个数。存储、输出(显示信息)模块:把上一个模块分析所得的 IP 地址、端口等各项内容在显示器上输出并把这些信息按照规定的格式写到用户指定的文件中。这样划分模块的目的是更好的满足用户的需求同时便于后期程序的编程实现。通过对各模块的设计利于在后期的实现过程中对各个功能的把握,这样能更优的实现网络数据包的截获,协议分析,数据包流量的统计,以及数据的输出和保存。图 4-3 是该系统的程序流程图,其与系统的功能模块相对应,以直观的方式将系统流程表现出来,以便于编程过程中更好的实现网络监听系统。第 19 页 共 30 页图 4-3 监听系统的程序流程

54、图4.2 局域网监听系统程序的实现局域网监听系统程序的实现本监听程序可以分为两大部分:驱动程序部分和应用程序部分。驱动程序部分工作在核心态,负责网络数据的接收和发送;应用程序部分工作在用户态,除了与驱动程序进行正确的通讯外,还要将有关信息显示出来,并提供存盘,过滤等操作。缓冲区由应用程序动态分配。在具体的实现过程中根据程序流程图将监听系统程序简化为以下几个步骤:4.2.1 数据包的捕获数据包的捕获根据系统总体设计的思路,利用 WinPcap 的采集数据技术对底层数据进行捕获。为了在 Windows 平台实现网络数据包的捕获功能,首先是把网卡设置成混杂模式,以监听整个网段的数据。数据包捕获功能的

55、实现是基于 WinPcap 所提供的 API 接口函数实现的,它可以直接从链路层获取数据帧。进一步的分析、处理工作可交由数据分析处理程序完成。数据包捕获的实现步骤: 1)获得适配器列表并统计网卡个数:if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf)=-1)return -1;第 20 页 共 30 页for(d=alldevs;d;d=d-next)m_nDeviceCount+;2)打开网络设备,将网卡设置成混杂模式:adhandle=pcap_open(d-name, /网络设备名65535, /数据包的捕获部分

56、长度PCAP_OPENFLAG_PROMISCUOUS, /混合模式 1 打开混合模式 0 关闭混合模式1000,/读超时值NULL,errbuf);/错误信息缓存区if(adhandle=NULL)MessageBox(NULL,errbuf,错误,MB_OK);pcap_freealldevs(alldevs);return -1;其中参数 1 用来设置网卡的工作模式。3)开始捕获数据包网卡的工作模式设置完毕,只需要调用捕捉函数 pcap_next_ex 来进行对数据包抓取就可以实现截获数据包。在具体的实现过程中,通过建立一个捕获线程来实现数据包的捕获,以减少在网络繁忙时,其数据流量超过计

57、算机的数据处理速度而出现漏包的情况。while(res=pcap_next_ex(pthis-adhandle,&header,&pkt_data)=0) if(res=0)Continue;elseif(pthis-dumpfile!=NULL)第 21 页 共 30 页pcap_dump(unsigned char*)pthis-dumpfile,header,pkt_data);其中 dumpfile 是用户指定的文件,在数据包抓取的同时将捕获的数据包存储在指定的文件夹中,以供以后进一步的分析研究。4.2.2 数据包的分析数据包的分析调用 WinPcap 底层驱动接收函数接收的数据包,除

58、了包含用户数据外,还包含时间戳、IP、TCP 报头等原始信息,所以获取数据包以后,可以方便的对数据包进行分析。在具体的实现过程中每捕获一个数据包就调用一次协议分析函数,实现对数据包的分析。数据包分析的主要依据是网络协议中定义的各种包的类型和包的格式,这在里主要分析了局域网中常用的几种协议(在第三章中已详细介绍的 MAC 帧头、IP、TCP、UDP、ICMP 数据报的协议格式) 。下面就是对数据报的分析格式: /分析并保存数据struct tm *ltime;ltime=localtime(&header-ts.tv_sec);char timestr16;strftime(timestr,si

59、zeof(timestr),%H:%M:%S,ltime);memset(pdata-strTime,0,sizeof(pdata-strTime);strcpy(pdata-strTime,timestr); /保存时间pdata-len=header-len;/保存长度mac_header* mach;ip_header* ih;tcp_header* tcph;udp_header* udph;icmp_header* icmph;/MACmach=(mac_header*)pkt_data; /mac 头for(int i=0;imach.saddi=mach-saddi;第 22 页

60、 共 30 页pdata-mach.daddi=mach-daddi;pdata-mach.mac_type=mach-mac_type;/IPih=(ip_header*)(pkt_data+14);/ip 头int iplen=(ih-ver_ihl & 0 xf)*4;pdata-iph.crc = ih-crc;pdata-iph.daddr=ih-daddr;pdata-iph.flags_fo=ih-flags_fo;pdata-iph.identification=ih-identification;pdata-iph.op_pad=ih-op_pad;

温馨提示

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

评论

0/150

提交评论