已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南林业科技大学本科毕业设计 无线网络报文解析无线网络协议报文解析的实现毕业设计1 前 言 近几年来整个世界逐渐走向移动化。因此,传统的连网方式已经无法应付新生活形式所带来的挑战。如果非得通过实体线缆才能够连上网络,使用者的活动范围势必大幅缩小。无线网络便无此限制,使用者可以享有较宽广的活动空问。因此,无线技术正逐渐侵蚀传统固定式或有线式网络所占有的领域。这种改变对每天开车的人来说分外明显,因为边开车边使用移动电话的驾驶行径,已经让他们随时都得面对攸关生死的挑战。 语音通信的无线化,造就了一个全新的产业,为电话注入移动性,已经对于语音通信事业造成深刻的影响。因为如此一来,人与人之问就可以直接联系,不必受限于设备。在电脑网络领域,面临同样深刻的巨变。无线话之所以如此受到欢迎,是因为人们可以丝毫不受地点的影响而彼此沟通。针对电脑网络所发展的种种新技术,让Internet连接得以提供相同的无线功能。到目前为止,802.11算是最成功的无线网络技术。 所谓无线网络,既包括允许用户建立远距离无线连接的全球语音和数据网络,也包括为近距离无线连接进行优化的红外线技术及射频技术,与有线网络的用途十分类似,最大的不同在于传输媒介的不同,利用无线电技术取代网线,可以和有线网络互为备份。1.1 研究背景 无线网络最明显的优点,在于提供人们移动性。无线网络的使用者可以连接至既有网络,而后随意漫游。通过基站,使用者可以一面开车,一面利用手机通话。起初手机十分昂贵,价格因素使得手机用户局限在销售经理需要高度的移动性以及重要的决策阶层需要随时能够联络得上。移动电话已经证实是一项十分有用的服务。 同样地,无线数据网络让软件开发人员从此不必再受Ethernet网线的束缚。他们可以在图书馆、会议室、停车场甚至对街的咖啡馆工作。只要使用者不走出基站的覆盖范围,即可使用网络资源。唾手可及的无线网络设备能够轻易涵盖整个公司;只要花些工夫,用点特殊设备,就可以让802.11网络的覆盖范围延伸至想要的地区,距离甚至可以长达数里。 无线网络通常具备相当大的弹性,换个说法就是部署快速。无线网络可以通过基站让使用者连接到既有的网络;在802.11网络中,基站又称为接入点。然而不论用户多少,无线网络基础建设在本质上并没有什么差异。要在某个地区提供无线网络服务,必须先将基站与天线定位。一旦完成基础建设之后,要在无线网络中加入新用户只不过是授权之劳。虽然基础建设完工之后,仍须经过设置的步骤,才能够辨认用户身份以及提供服务,不过单就授权本身而言,并不需要新增额外的设备。要在无线网络中新增一位用户只须设置基础设备的配置,不必拉线、打洞与配置网络插座。 弹性对服务供应商而言十分重要。热点连接市场是802.11设备厂商必争之地。班机或列车误点时,在机场与车站等候的商务人士或许会有上网的需求。咖啡馆以及其他公众聚集的社交场合亦然。有些咖啡馆已经开始提供Internet访问服务;通过无线网络访问Internet不过是现有服务的自然延伸。虽然Ethernet的插座一样能够提供访问服务,但是通过有线网络的做法也并非全然没有问题。主要是布线既贵且费时,有时甚至需要重新装璜。此外,要辨别哪条线路出现问题,通常是艺术的成份大于科学。如果使用无线网络,不但可以省下装璜的工夫,也无庸费神分析或瞎猜损坏何在。只要基础设施的有线网络可以连上Internet,不论使用人数多少,无线网络都可以满足每个人的需求。虽然无线局域网络的频宽有限,但实际上WAN的频宽成本才是小型hot spot网络的瓶颈所在。弹性对老旧建筑而言特别重要,因为可以避免大兴土木。一旦建筑物被列为古迹,改建就更加困难。除了满足业主需求,改建工程还必须符合古迹维护单位的限制,以免破坏历史文物。无线网络在类似环境中可以快速部署,因为有线网络的安装通常只占其中一小部分。 另一方面,弹性造就了草根性社区网络的发展。随著802.11设备价格的快速滑落,各式各样的自愿团体开始设置开放给公众使用的无线共享网络。社区无线网络也打破了DSL的限制,让以往不敢如此奢望的社区,也能够以高速访问 Internet。在传统有线网络难以企及的化外之地,社区无线网络特别成功。 和所有网络一样,无线网络同样是通过网络介质传送数据。无线网络所使用的介质属于某种形式的电磁幅射。为了满足移动网络的使用需求,此介质必须能够涵盖较广的区域,好让使用者能够在其所覆盖的范围内移动。早期无线网络通常使用红外线。不过红外线本身有其限制,容易受到墙壁、隔间以及其他办公室设备阻隔。无线波可以穿透大部分办公室设备,提供较广的服务范围。因此,市面上绝大多数的802.11产品均采用无线波做为物理层。 1.1.1无线网络的特色 无线网络对固定式网络而否是绝佳的互补,而非取而代之的技术。就像移动电话与固网,无线局域网络提供用户移动性,和固定式网络形成互补。数据的访问还是得通过服务器与数据中心的设备,不过服务器位于何处并不重要。由于服务器通常无须移动,因此可以使用固定缆线彼此相连。另一方面,无线网络在设计上必须能够覆盖较大的范围,以服务快速移动的用户。802.11基站的覆盖范围不大,因此无法服务位于快速移动交通工具上的用户。 1.1.2 没有实体界限 传统网络安全的主要重点,在于防护网络设备的实体安全。网络数据通常是流动于铜线或光纤等事先规划好的路径上。至于网络的基础建设,则是通过坚固的实体访问控制加以保护。设备通常被安全地锁在集线槽,使用者也不会有重新设置的机会。安全性基本上来自于物理层的防护。虽然还是有可能被窃听或转接,通过实体的访问控制,要想鬼鬼祟祟地访问网络就比较困难。 相较于一般网络,无线网络所使用的介质更为开放。定义上,无线网络所使用的介质不像实体线缆有明确定义的路径,而只是经过特殊编码与调制过的无线波链路。既然这些原本就是众所皆知的开放标准,任何对无线技术有所了解的人均可随意收送信号。此外,无线波通常会偏离原来的目的地。无线介质没有明显的实体界限,何况收送端还可以使用高增益天线来延长传输距离。配置无线网络时,各位必须仔细思考如何防范未经授权的使用、流量注入以及流量分析。随著无线通信协议的成熟,验证无线用户身份与适当加密数据的工具目前已经随处可得。 1.1.3动态实质介质 有线网络一经设立,就开始变得无趣。这意思是说,它是可预测的。一旦将网线拉至定位,它们就日复一日做同样的事,不会有所改变。只要网络是根据规格所记载的工程规则设计的,运作上就不会有什么问题。提升有线网络的容量也不是什么难事,只要将线槽中的交换器升级即可。 相对地,无线局域网络所使用的实体介质就比较动态。无线波遇到物体会反射,可以穿墙,而且通常有点难以预料。无线波可能遭遇到传播上的问题,并因而断线。既然所使用的介质不可靠,无线网络就必须仔细验证所接收到的帧,以防止帧漏失。802.11以正面回应来因应,牺牲一些流量以确保帧的传送。 无线电波链路存在着有线网络所没有的种种限制。由于无线频谱属于相对稀少的资源,因此必须谨慎管制。要使无线网络速度更快有两种方式。要不就是配置更多频谱,要不就是提升链路的编码能力,使它在单位时问内可以传输更多数据。额外配置频谱比较罕见,特别是对免照网络而言。802.11网络将工作站之无线频道的频宽维持在予30MHz不变,它是以大幅改良的编码方式来提升速度。较快的编码方式可以提升速度,不过也有潜在的缺点。编码方式愈快,接收器就必须分辨愈细微的信号差异,因此需要愈高的讯噪比。数据率愈高,工作站就愈要尽可能靠近基站。无线本质上属于一种广播介质。一个工作站进行传送时,所有其他工作站只能聆听。基站的角色有点像是以往的分享式Ethernet集线器,每部基站的传输能力固定,且必须由所有连接用户共享。要增加网络的容量,网管人员必须添加基站,同时缩小现有基站的覆盖范围。 1.1.4安全性 许多无线网络以无线波为介质,这种介质本质上就是开放而易遭拦劫。如何适当地保护无线网络传输,向来就是通信协议设计者的主要考量。802.11本身并未纳入安全性协议为因应无线介质本身的不可靠性以及提供移动性,需要使用一些协议,以提供帧送达确认、省电以及移动性的功能。安全性的优先性相当低,早期的规格书所提出的协议也被证明并不适用。无线网络必须进行身份认证,以防未经授权的使用者访问。经过认证的连接作业也必须予以加密,以防止数据遭人拦劫,或遭未经授权用户灌注数据。1.1.5 各种无线网络 无线网络是个热门产业。有些无线技术主要针对数据传输。蓝芽标准主要是在周边设备之间建立微型网络,或某种形式的无线缆线.业界人士大多十分熟悉有关蓝芽的种种宣传,虽然在实际产品问世前,蓝芽似乎就已经阵亡。 第2.5代与第三代3G移动电话也是大家所熟悉的无线技术。它们承诺可以在每个细胞台提供百万位元的数据传输率,以及提供获得DSL与cablemodem用户高度评价的随时连接服务。经过3G设备厂商这几年的宣传与推动,3G商用服务终于开始进行2.5代服务,像是GPRS,EDGE以及1xRTT。如今已经相当普遍,采用UMTS或EV-DO的第三代网络也很快即将问世。 本文的主题是802.11网络。802.11有不少称谓。有人称802.11为无线以太网络,强调其与传统有线以太网络802.3之间的血缘关系。爆红的一种称谓是Wi-Fi。Wi-Fi是Wi-Fi联盟所推广的互通性认证计划。至于Wi-Fi 联盟,乃是由802.11设备厂商所组成的主要商业组织。Wi-Fi联盟的前身称为无线以太网络相容联盟,负责检测会员的产品是否与802.11标准相容。1.2网络数据包协议分析程序网络数据包协议分析程序是一种用于收集网络中有用数据的程序,这些数据可以是用户的帐号和密码,也可以是一些商用机密数据等。它是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。网络数据包协议分析程序的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而又不知道问题出在什么地方,此时就可以用网络数据包协议分析程序来作出精确的问题判断。在合理的网络中,网络数据包协议分析程序的存在对系统管理员是至关重要的,系统管理员通过网络数据包协议分析程序可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯,有些甚至牵涉到各种的协议,借助于网络数据包协议分析程序系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或着相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。1.3国内外情况 现在国内外已经有很多成熟并且功能强大的网络数据包协议分析软件。比较著名的网络数据包协议分析软件有:开源软件:Wireshark、TcpDump。商用软件:EtherPeek下面对这几种软件进行简要的介绍。 Wireshark是一个开放源码的网络分析系统,也是是目前最好的开放源码的网络协议分析器,支持Linux和Windows平台。 Wireshark起初由Gerald Combs开发,随后由一个松散的Wireshark团队组织进行维护开发。它目前所提供的强大的协议分析功能完全可以媲美商业的网络分析系统,自从1998年发布最早的0.2版本至今,大量的志愿者为Wireshark添加新的协议解析器,如今Wireshark已经支持五百多种协议解析。很难想象如此多的人开发的代码可以很好的融入系统中;并且在系统中加入一个新的协议解析器很简单,一个不了解系统的结构的新手也可以根据留出的接口进行自己的协议开发。这都归功于Wireshark良好的设计结构。事实上由于网络上各种协议种类繁多,各种新的协议层出不穷。一个好的协议分析器必需有很好的可扩展性和结构。这样才能适应网络发展的需要不断加入新的协议解析器。TcpDump顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。用尽量简单的话来定义TcpDump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。TcpDump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。EtherPeek这个工具软件开始只是一个网络分析器型的数据包监测软件,经过这些年的发展已经成为一个真正的网络管理工具并具有网站监视和分析等新的功能,被美国联邦调查局用来追踪逃犯、贩卖毒品的人、电脑黑客和一些被怀疑为外国间谍的人。是一个直观,功能强大的以太网网络和协议分析器。支持Macintosh和Windows平台。EtherPeek把查找和修复多平台上的复杂网络任务变得简单化。EtherPeek采用工业标准,非常容易使用,提供解码、过滤和诊断网络的功能。以友好图形界面出名,EtherPeek提供非常详细且多样化的网络使用信息,网络结点的会话和数据包内容。在有问题的局域网络中使用EtherPeek执行一个自定的诊断测试,监控网络的通信和事件,跟踪非法的网络活动,测试和调试网络软硬件。2 系统技术及运行环境2.1 Windows程序设计概述Windows运转的核心是一个被称作“动态链接”的概念、Windows提供了应用程序可利用的丰富的函数调用,大多数用于实现其用户界面和在视频显示器上显示文本和图形、这些函数采用动态链接库即DLL实现。对于程序员来说,操作系统是本身的API定义的。API包含了所有应用程序构造操作系统的函数调用,同时包含了相关的数据类型和结构。在Windows中,API还意味着一个特殊的程序体系结构,将在编程过程中体现。在专业程序员中间,特别是那些编写应用程序的程序员,Microsoft Visual C+和Microsoft基础类库(MFC)是近年来流行的选择。MFC在一个C+类集合中封装了许多Windows编程中繁重内容。MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库、通过它,程序员可以高效地开发出基于Windows操作系统的各种应用程序。现在使用的软件绝大多数都是Windows的窗体程序,因此可以说现在的编程都是基于窗体Win32编程的,也就是Windows下的32位编程。在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API函数。这些函数在程序员手中犹如“积木块”一样,可搭建出界面丰富、功能灵活的各种应用程序。标准Win32 API函数可以分为以下几类:1)窗口管理函数:窗口的创建、移动和修改。2)图形设备(GUI)函数:设备无关的图形操作。3)系统服务函数:与操作系统有关的多种服务。MFC本身就是一个庞大的C+类库,这些类能较好地实现对Win32API的封装,为应用开发提供极大的便利。同时,MFC依然支持对Win32 API的直接调用,这样在基于MFC程序中可以像Win32编程中一样直接调用API。另外MFC除了对Win32API实现了封装外,同时封装了OLEAPI、ODBC API等底层API函数的功能,如对Win32 API实现的封装类似,为开发人员提供更高一层的接口,大大地简化了Windows编程。进一步讲,MFC彻底地封装了Win32软件开发工具包SDK,Software Development Kit中的结构、功能,为编程者提供了一个应用程序框架。MFC程序设计可结合AppWizard和ClassWizard等工具,在选用不同的开发模版的基础上,快速有效地开发并完善相应的功能。 2.2 802.11概述2.2.1802.11定义 IEEE 802.11是一个协议簇,主要包含以下规范:1)物理层规范:802.11b,802.11a,802.11g;2)增强型MAC层规范:802.11i,802.11r,802.11h等;3)高层协议规范:802.11f,802.11n,802.11p,802.11s等。 802.11中定义了三种物理层规范,分别是:频率跳变扩展频谱(FHSS)PHY规范、直接序列扩展频谱(DSSS)PHY规范和红外线(IR)PHY规范,由于物理层的规范与无线信息安全体系关系不大,故本文不对物理层做过多阐述。802.11同802.3一样,主要定义了OSI模型中物理层和数据链路层的相关规范,其中数据链路层又可分为MAC子层和LLC子层,802.11与802.3的LLC子层统一由802.2描述。2.2.2拓扑结构及服务类型 WLAN有以下三种网络拓扑结构:1) 独立基本服务集网络,也叫ad-hoc网络,图2-1所示就是一个基于ad-hoc的网络。 图2-1 ad-hoc mode 2) 图2-2所示是一个基本服务集网络。图2-2 infrastructure mode 3) 扩展服务集网络,ESS中的分布式系统是一个抽象系统,用来连接不同BSS的通信信道通过路由服务,这样就可以消除BSS中STA与STA之间直接传输距离受到物理设备的限制。根据拓扑结构可以得出802.11的两类服务:1. 站点服务SS每个STA都要有的服务:认证、解除认证、加密、MSDU传递;2. 分布式系统服务DSS:关联、解除关联、分布、集成、重关联。2.3 802.11帧结构分析2.3.1帧的Header 无线中的数据传播有如图2-3所示的相似格式。PreamblePLCPMACUser DataCRCBasic frame format in IEEE 802.11图2-3 无线网络传播数据包文件头 其中preamble是一个前导标识,用于接收设备识别802.11,而PLCP域中包含一些物理层的协议参数,显然Preamble及PLCP是物理层的一些细节。MAC层处理的是帧数据,截取上图中MAC头开始的部分构成如图2-4所示的帧头。Frame ControlDuration/IDAddress1Address2Address3Sequence ControlAddress4QoS ControlFrame BodyFCSMAC frame format图2-4 无线网络报文的文件头MAC Header包括帧控制域、持续时间/标识、地址域、序列控制域、服务质量控制; Frame Body包含信息根据帧的类型有所不同,主要封装的是上层的数据单元,长度为02312个字节,可以推出,802.11帧最大长度为:2346个字节;FCS包含32位循环冗余码。 帧控制域格式如图2-5所示,frame control field的16bits字段。Protocol VersionTypeSubtypeTo DSFrom DSMore FragRetryPwr MgtMore DataProtectedFrameOrderFrame Control图2-5 帧的控制域Frame Control 其中,Frame Control的各个字段所代表的意义有,1) Protocol Version:通常为0;2) Type类型域和Subtype子类型域:共同指出帧的类型;3) To DS:表明该帧是BSS向DS发送的帧;4) From DS:表明该帧是DS向BSS发送的帧;5) More Frag:用于说明长帧被分段的情况,是否还有其它的帧;6) Retry重传域:用于帧的重传,接收STA利用该域消除重传帧;7) Pwr Mgt能量管理域:为1:STA处于power_save模式,处于active模式;8) More Data更多数据域:为1:至少还有一个数据帧要发送给STA ;9) Protected Frame:为1:帧体部分包含被密钥套处理过的数据;否则:0;10) Order序号域:为1:长帧分段传送采用严格编号方式;否则:0。11) Duration/ID持续时间/标识:表明该帧和它的确认帧将会占用信道多长时间;对于帧控制域子类型为:Power Save-Poll的帧,该域表示了STA的连接身份AID, Association Indentification;12) Address地址域:源地址SA、目的地址DA、传输工作站地址TA、接收工作站地址RA,SA与DA必不可少,后两个只对跨BSS的通信有用,而目的地址可以为单播地址Unicast address、多播地址Multicast address、广播地址Broadcast address;13) Sequence Control序列控制域:由代表MSDU或者MMSDU的12位序列号和表示MSDU和MMSDU的每一个片段的编号的4位片段号组成Fragment Number。 针对帧的不同功能,可将802.11中的MAC帧细分为以下3类:1)控制帧:用于竞争期间的握手通信和正向确认、结束非竞争期等;2)管理帧:主要用于STA与AP之间协商、关系的控制,如关联、认证、同步等;3)数据帧:用于在竞争期和非竞争期传输数据。2.3.2控制帧 控制帧主要有: RTS请求发送帧。RTS 帧可用来取得介质的控制权,以便传输大型帧。至于多大称之大型,是由网卡驱动程式中的RTS threshold来定义。介质访问权只能保留给单点传播帧使用,而广播与组播帧只须发送便是了。RTS 帧的格式如图2-6所示。就和所有控制帧一样,RTS帧只包含标头。帧主体中并未包含任何数据,标头之后即为帧检查码。 Frame ControlDurationReceiver AddressTransmitter AddressFCS图2-6 RTS帧 CTS允许发送帧。CTS帧有两种目的,其格式如图2-6所示的RTS帧头。而起初,CTS帧仅用于应答RTS帧,如果之前没有RTS出现,就不会产生 CTS。后来,CTS帧被 80211g防护机制用来避免干扰较旧的工作站。此防护机制和802.11g 的其他数据。 ACK应答帧。ACK帧就是 MAC 以及任何数据传输包括一般传输RTS/CTS交换之前的帧、帧片段所需要的正面应答。服务质量扩展功能放宽了个别数据帧必须各自得到应答的要求。欲评估应答机制对净传输量所造成的影响,而ACK有如图2-6所示的RTS帧相似的MAC头。 PS-Poll省电模式一轮询帧。当一部移动工作站从省电模式中苏醒, 便会发送一个PS-Poll帧给基站,以取得任何暂存帧PS-Poll帧的格式如图2-7所示。Frame ControlAIDBSSIDTransmitter AddressFCS图2-7 PS-Poll帧2.3.3管理帧 Frame Control帧控制域中的Type和Subtype共同指出帧的类型,当Type为00时,该帧为管理帧;为01时,该帧为控制帧;为10时,该帧为数据帧。而Subtype进一步判断帧类型,如管理帧里头细分为关联和认证帧,在802.11中,比较重要的管理帧有以下五种帧的类型。 Beacon信标帧。Beacon 帧是相当重要的维护机制,主要用来宣告某个网络的存在。定期发送的信标,可让移动工作站得知该网络的存在,从而调整加入该网络所必要的参数。在基础型网络里,基站必须负责发送 Beacon 帧。Beacon 帧所及范围即为基本服务区域。在基础型网络里,所有沟通都必须通过基站,因此工作站不能距离太远,占则便无法接收到信标。 Probe Request 检测要求帧。移动工作站将会利用 Probe Request检测要求帧,扫描所在区域内目前有哪些 802.11网络,而Probe Request帧所有位均为必要。 检测应答Probe Response帧。如果 Probe Request帧所探查的网络与之相容,该网络就会以 Probe Response 帧应答。送出最后一个 Beacon 帧的工作站,必须负责应答所收到的检测信息。在基础型网络里,负责应答的工作站即为基站。在 IBSS当中,工作站会彼此轮流发送 Beacon 信号。发送 Beacon 信号的工作站必须负责发送 Probe Response帧,直到下一个 Beacon 被发送出来。 Probe Response帧中某些位彼此互斥;此规则同样适用于Probe Response以及Beacon帧。 连接要求Association Request帧。一旦移动工作站找到相容网络并且通过身份认证,便会发送 Association Request连接要求帧,试图加入网络。 连接应答与重新连接应答Association Response 帧。当移动工作站试图连接基站时,基站会回覆一个 Association Response连接应答,两者之间的差别,在于 Frame Control 位所记载的subtype 位。所有位均属必要。在应答的过程中,基站会指定一个 Association ID连接识别码,至于指定的方式则因实作而异。 认证Authentication帧。802.11网络发展初期,工作站是使用共享密钥以及Authentication 帧进行身份认证。到了802.11i,共享密钥身份认证虽然仍保留在标准当中,但却无法与新的安全机制相容。如果工作站使用共享密钥身份认证,将不允许使用较为牢靠的安全性协议。2.3.4数据帧 数据的帧格式如图2-8所示,帧头与一般帧头没两样。Frame ControlDuration/IDAddress1Address2Address3Sequence ControlAddress4QoS ControlFrame BodyFCSData Frame图2-8 数据帧的文件头 不同类型的数据帧可根据功能加以分类:数据帧区分为竞争式服务及免竞争服务两种数据帧。只能在免竞争期间出现的帧,就不可能在IBSS独立型基本服务组合中使用。对携带数据与提供管理功能的帧加以区别。而IBSS帧所使用的 address位有三种,如图 2-8所示,第一个地址代表接收端,同时也是 IBSS 网络中的目的地址,第二个地址是源地址;在这些地址之后,伴随而来的是 IBSS 的BSSID。当无线 MAC 收到一个帧时,首先会去检查 BSSID,只有 BSSID 与工作站相同的帧,才会交由上层协议加以处理。 2.4运行环境 为了使无线网络报文解析程序运行的高效性和可靠性,其运行要求如下: 软件环境:Visual Studio 6.0提供的VisualC+6.0开发环境。 硬件环境:CPU:PIII 500以上 ,内存:512M以上的PC机。 操作系统:windows NT、windows XP、windows 7。2.5解析的报文文件 本程序解析的报文文件,来源于Internet上Wireshark软件的官方网站。Wireshark软件在网络数据捕捉和分析方面有着成熟的解决方案。在它的官网下载了一个基于802.11b协议的文件为:wpa-Induction.pcap。3程序设计3.1需求分析3.1.1 编写目的理解报文结构,有利于学习,无线网络运行过程,解析报文对用户学习无线网络将有莫大的帮助。所以,在学习802.11成帧细节的基础上,编写一个解析无线网络报文的程序,以为用户提供一个学习无线网络知识的学习平台。3.2 任务目标3.2.1基本性能 系统包括主要的功能:打开802.11的数据包wpa-Induction.pcap文件。对以下九种帧结构的解析:Clear-to-send帧,Acknowledgement帧,Association Request帧,Association Response帧,Probe Request帧,Probe Response帧,Beacon帧,Authentication帧,Data帧。3.2.2开发目标解析出来的信息要以友好的方式显现出来,以保证用户更容易理解;解析的信息要体现出无线网络的整体框架信息,以保证用户学习无线网络知识;尽可能的解析出来文件中所以的帧类型。3.3选择编程语言 C+通过一组数据抽象来建立问题的模型,在C+中把这些抽象称为类。与每个类相关的算法被称为该类的公有接口数据以私有形式被存储在每个对象中,对数据的访问应与一般的程序代码隔离开来。面向对象的程序设计方法通过继承机制和动态绑定机制扩展了抽象数据类型;继承机制是对现有实现代码的重用,动态绑定是指对现有的公有接口的重用。 C+是一种支持多种程序设计方法的语言。它主要把事物当作面向对象的语言,实际上它也提供对过程化的和基于对象的程序设计方法的支持。这样做的好处是对每个问题都能够提供最合适的解决方案。事实上,没有一种程序设计方法能够对所有的问题都提供最好的解决方案。这样做带来的缺点是使得语言过于庞大复杂。4 程序实现4.1打开文件的过程 在文档类中进行打开文件的操作如图3-1所示,为避免冲突,程序首先判断文件对象是否为空,以保证缓冲区内没有保存其他的文件信息,新建文件对象,得到文件的长度,再文件缓冲区动态的分配内存空间;在完成上述操作之后,向主界面发送信息,表明文件已经打开,缓冲区以随时准备接受数据。 图4-1打开文件的过程 到此文件已经打开,内存资源也已准备好等待接受数据,向主界面发送了消息,主界面将会把消息传递给View类,值得注意的是,在打开文件是要丢弃前24个字节的.pcap类型文件的文件头。4.2确定帧的类型 程序已经得到了主界面发过来的消息,用户在主界面的树形结构选择一个节点是,树形控件会发送一个节点改变事件的消息,程序会跳到该处理事件的函数中,开始解析报文。确定帧的类型如图4-2所示。图4-2 确定帧的类型 程序跳到该函数后,首先,会将一个全局变量设置为该选择的帧的编号,用来标明程序正在解析的该帧,保持程序都是在解析这个帧。在此之前需要判断文件时打开成功,保证可以得到帧的数据;再要初始化编辑框,用来输出帧的数据,保证输出的结果正确。最后,需要向文档类发送一个取帧的消息,因为所有的处理文件的数据都是在文档类中完成,程序需要读取文件中帧的数据,需要操作文件数据,获得帧数据。4.3获取帧的数据 遍历文件,将每个帧起始位置开始的第十七个字节数据的整数型帧的类型编号匹配,如果是一致的帧,就是要取的帧数据,将其保存在帧的缓冲区中;如果不一致,则取得起始位置开始的第九个字节数据的整数型加到一整型变量,该变量用来保存已遍历的文件数据;这样跳到下一个帧,继续比对。直到找到需要的帧为止。取帧的过程如图4-3所示。图4-3 取帧的过程4.4 解析帧的过程 保存帧的缓冲区取得数据,文档类的取帧数据的函数会向View类发送信息,表明已取得帧数据,可以开始解析帧。但是,实际上程序在运行解析帧之前,会先将帧的数据格式化,调用CString类得Fromat(_T(“%2.2X”)方法,该方法用以格式化数据以十六进制的形式输出,位数不够就以零补齐,保证它是两位,例如:输出4,十六进制也是4,但是需要两位输出,这时就在前面补上一个零,结果就成了04;在格式化之后,编辑框控件就得到格式化的字符串,输出在界面上的编辑框中。程序到此开是正式调用解析帧的类Class CPackData,解析的过程如图4-4所示。图4-4 解析帧的过程 图4-4所示,在获得帧的类型编号之后,程序需要检查保存解析的信息的缓冲区是否为空,保证解析的信息是与解析的帧一致;另外,需要匹配一套解析该帧的操作,得到帧的类型编号,程序会自动的在适配器中选择一套适合该帧的解析过程。最后将解析的信息保存在缓冲区中,向View类发送信息,表明解析完成,View的列表控件将取出缓冲区中的信息输出在相应的列表项中。4.5报文文件的解析4.5.1 解析报文的第一个帧 用一个具体的无线网络报文,来说明一下解析的方式。这个帧是基于802.11b协议的无线网络报文的第一个帧,是一个beacon帧。它包含了文件头24个字节,在取帧的时候,可以将这24个字节丢弃,表4-1所示的数据。表4-1 报文的第一个帧和报文的文件头00000000:00000010:00000020:00000030:00000040:00000050:00000060:00000070:00000080: 00000090: 000000A0:000000B0:000000C0: D4 C3 B2 A1 02 00 04 00 00 00 00 00 00 00 00 00FF FF 00 00 7F 00 00 00 55 9B 9C 45 AC 1C 0D 00A8 00 00 00 A8 00 00 00 00 00 18 00 8E 58 00 0010 02 6C 09 A0 00 54 00 00 2B 00 00 9F 61 C9 5C80 00 00 00 FF FF FF FF FF FF 00 0C 41 82 B2 5500 0C 41 82 B2 55 50 F8 89 F1 D4 1B 01 00 00 0064 00 11 04 00 07 43 6F 68 65 72 65 72 01 08 8284 8B 96 24 30 48 6C 03 01 01 05 04 00 01 00 002A 01 02 2F 01 02 30 18 01 00 00 0F AC 02 02 0000 0F AC 04 00 0F AC 02 01 00 00 0F AC 02 00 0032 04 0C 12 18 60 DD 06 00 10 18 02 00 04 DD 1C00 50 F2 01 01 00 00 50 F2 02 02 00 00 50 F2 0400 50 F2 02 01 00 00 50 F2 02 00 00 9F 61 C9 5C 在这张表上左面显示位置,右边打印了是帧的数据结构。但是在这个帧的前24个字节是文件的头所以它包含了报文的第一个帧和报文的文件头。4.4.2 解析Beacon帧之前的数据结构1. 文件开始的D4 C3 B2 A1 02 00 04 00 00 00 00 00 00 00 00 00 FF FF 00 00 7F 00 00 00似乎是一台机器上的CAP固定文件头,可以剔除掉。2. 55 9B 9C 45 AC 1C 0D 00 这是CAP文件中捕获的数据帧的时间戳信息。3. A8 00 00 00 A8 00 00 00 前面4位表示软件捕获并保存的数据帧长度为00 A8(不要忘记高位取反),后面表示这个被捕捉的帧在网络中实际长度为 00 A8,及十进制的168。4. 现在就可以去取帧的结构,从起始位置0x0028到0x00D0为止,为第一个帧的数据结构。即从00 00 18 00 8E 58 00 00.开始,到F2 02 00 00 9F 61 C9 5C。4.5.2解析Beacon帧 提取出帧的数据结构表4-2所示,分析它每个字段的意义如下所述。表4-2 报文的第一个帧00000000:00000010:00000020:00000030:00000040:00000050:00000060:00000070:00000080: 00000090: 000000A0: 00 00 18 00 8E 58 00 00 10 02 6C 09 A0 00 54 00 00 2B 00 00 9F 61 C9 5C 80 00 00 00 FF FF FF FF FF FF 00 0C 41 82 B2 55 00 0C 41 82 B2 55 50 F8 89 F1 D4 1B 01 00 00 00 64 00 11 04 00 07 43 6F 68 65 72 65 72 01 08 82 84 8B 96 24 30 48 6C 03 01 01 05 04 00 01 00 00 2A 01 02 2F 01 02 30 18 01 00 00 0F AC 02 02 00 00 0F AC 04 00 0F AC 02 01 00 00 0F AC 02 00 00 32 04 0C 12 18 60 DD 06 00 10 18 02 00 04 DD 1C 00 50 F2 01 01 00 00 50 F2 02 02 00 00 50 F2 04 00 50 F2 02 01 00 00 50 F2 02 00 00 9F 61 C9 5C1) 前24个字节00 00 18 00 8E 58 00 00 10 02 6C 09 A0 00 54 00 00 2B 00 00 9F 61 C9 5C代表:Radiotap Header v0。2) 接着一个字节80代表:Type/Subtype: Beacon frame ,它的参数是0x08,即是代表Beacon帧。3) 字段80与后一个字节00合起来是0x0080表示Frame Control,它的参数是0x0080,即是正常情况。4) 往后两个字节00 00表示Duration:,它的参数是0x0000。5) 之后的6个字节FF FF FF FF FF FF表示Destination address,它的参数是ff:ff:ff:ff:ff:ff,即是广播地址。6) 再6个字节00 0C 41 82 B2 55表示Source address。7) 再6个字节00 0C 41 82 B2 55表示BSS Id。8) 在地址字段后是2个字节50 F8的Fragment number和Sequence number,一个的参数为0,另一个的参数为3973。9) 从位置0x0030开始到0x00A4是IEEE 802.11 wireless LAN management frame的数据结构,将在下节讲解。10) 最后4个字节9F 61 C9 5C是Frame check sequence:,它的参数是0x9f61c95c表示 correct。4.5.3解析Beacon帧中的管理帧提取出IEEE 802.11 wireless LAN management frame进行初步解析表4-3所示。分析的结果如下。表4-3报文第一个帧的management frame00000000:00000010:00000020:00000030:00000040:00000050:00000060:00000070: 89 F1 D4 1B 01 00 00 00 64 00 11 04 00 07 43 6F 68 65 72 65 72 01 08 82 84 8B 96 24 30 48 6C 03 01 01 05 04 00 01 00 00 2A 01 02 2F 01 02 30 18 01 00 00 0F AC 02 02 00 00 0F AC 04 00 0F AC 02 01 00 00 0F AC 02 00 00 32 04 0C 12 18 60 DD 06 00 10 18 02 00 04 DD 1C 00 50 F2 01 01 00 00 50 F2 02 02 00 00 50 F2 04 00 50 F2 02 01 00 00 50 F2 02 00 00 9F 61 C9 5C1) 第一个9个字节表示Timestamp,它的参数是0x000000011bd4f189。2) 在这之后的2个字节64 00表示Beacon Interval,其参数是0.102400 表示信标的间隙时间。3) 接着的2个字节是11 04表示Capabilities Information:。4) 而接着的2个字节00 07表示Tagged parameters,它的参数是00 07表示尾随参数从这开始。5) 紧跟着的是7个字节43 6F 68 65 72 65 72表示SSID parameter set 它的参数表示Coherer6) 之后的10个字节01 08 82 84 8B 96 24 30 48 6C表示Supported Rates,它的参数表示它所支持的速率。7) 接着的3个字节03 01 01表示DS Parameter set,它的参数表示为当前信道1。8) 接着的6个字节05 04 00 01 00 00表示Traffic Indication Map ,其参数表示DTIM 0 of 0 bitmap。9) 接着的3个字节2A 01 02表示ERP Information。10) 接着的3个字节2F 01 02表示ERP Information。11) 接着的26个字节30 18 01 00 00 0F AC 02 02 00 00 0F AC 04 00 0F AC 02 01 00 00 0F AC 02 00 00表示RSN Information。12) 接着的6个字节32 04 0C 12 18 60表示Extended Supported Rates ,它的参数表示可扩展的速率。13) 接着的8个字节DD 06 00 10 18 02 00 04表示Vendor Specific,它的参数表示Broadcom。14) 接着的30个字节是WPA Information Element。15) 最后的4个字节9F 61 C9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋季国家管网集团东北公司高校毕业生招聘考试备考试题(浓缩500题)附参考答案详解(轻巧夺冠)
- 2026秋季国家管网集团广西公司高校毕业生招聘考试备考题库(浓缩500题)及参考答案详解(突破训练)
- 2025国家管网集团云南公司高校毕业生招聘考试真题(浓缩500题)及参考答案详解(突破训练)
- 2026秋季国家管网集团北京管道有限公司高校毕业生招聘考试参考试题(浓缩500题)有完整答案详解
- 2025国网广东省电力公司高校毕业生提前批招聘笔试模拟试题浓缩500题附答案详解(能力提升)
- 2026国网海南省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题及参考答案详解1套
- 2026秋季国家管网集团油气调控中心高校毕业生招聘14人笔试参考题库(浓缩500题)及答案详解(有一套)
- 2026秋季国家管网集团湖南公司高校毕业生招聘4人考试备考试题(浓缩500题)含答案详解(综合题)
- 2025国网山东省电力校园招聘(提前批)笔试模拟试题浓缩500题含答案详解(培优)
- 国家管网集团湖南公司2026届秋季高校毕业生招聘笔试备考试题(浓缩500题)带答案详解ab卷
- 质量负责人述职报告
- 2024年广东省公务员录用考试《行测》真题及解析
- 保障性租赁住房资金筹措方案
- 自来水管道安装施工合同
- 苏教版五年级上册数学-第三单元综合提优测试卷(基础卷)
- 北京市东城区东直门中学2024-2025学年七年级上学期分班考数学试卷
- 辽宁省历年中考语文现代文阅读之非连续性文本阅读22篇(含答案)(2003-2022)
- 公差配合教案
- GB/T 44186-2024固定式压缩空气泡沫灭火系统
- 贵州省铜仁市德江县2022-2023学年一年级上学期期中数学试卷
- 医疗废物与医用织物管理
评论
0/150
提交评论