(计算机应用技术专业论文)网络数据发生及收集器的研究.pdf_第1页
(计算机应用技术专业论文)网络数据发生及收集器的研究.pdf_第2页
(计算机应用技术专业论文)网络数据发生及收集器的研究.pdf_第3页
(计算机应用技术专业论文)网络数据发生及收集器的研究.pdf_第4页
(计算机应用技术专业论文)网络数据发生及收集器的研究.pdf_第5页
已阅读5页,还剩56页未读 继续免费阅读

(计算机应用技术专业论文)网络数据发生及收集器的研究.pdf.pdf 免费下载

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

文档简介

摘要 本文旨在研究实现一种通过简单的但具有代表性的网络拓扑结构和一些必 要的设备及软件来现场向学生演示分组在网络传输过程中的分段和重组及路由 的过程的工具,这会有利于加深学生对所学网络理论知识的理解,提高教学效果。 本文研究的基本内容在于显现数据包在网络传输过程中的状况,如路径,来源以 及负载对数据的选路产生的影响。研究途径包括:设计一个在网络中的数据发生 器的设计负载发生器和测试数据发生器,前者模拟网络中的正常流量负载, 后者则是用于分析的数据包。这是在发送端实现的;另一个就是数据收集器的设 计,它主要用于对测试数据包进行收集,然后将原始的数据包传送给分析程序进 行分析。这是在接收端实现的。本文将要涉及到o s i 模型、t c p i p 协议、w i n d o w s 2 0 0 0 下的原始套接字的研究,以及w i n d o w s2 0 0 0 的网络驱动程序研究。其中, w i n d o w s2 0 0 0 下的网络驱动程序研究为本文的重要组成部分。它涉及到w i n d o w s 2 0 0 0 的网络结构以及内核函数。本文中提出了对网络中的数据在底层进行截获 的技术,使得数据包在数据链路层和网络层之间就能被截获并送交上层应用程序 分析。本文所研究的工具经过改进后,通过对数据包的路由变化,还可以用于中 型的园区网中进行网络性能的监控。 关键词网络驱动程序;原始套接字;网络驱动接口规范;w i n d o w s 套接字 a b s t r a c t t h em a i nt o p i co ft h i sp a p e ri st os t u d yat e c h n o l o g y ,w h i c hc a n d e m o n s t r a t et h ef r a g m e n t a t i o n ,r e f o r ma n dt h er o u t i n ep r o c e d u r eo ft h e p a c k e td u r i n g n e t w o r k t r a n s p o r t t os t u d e n t s t h i sc o n t r i b u t e s t o u n d e r s t a n d i n gt h et h e o r yk n o w l e d g eo fn e t w o r km o r ee a s i l ya n de n h a n c e s t h et e a c h i n ge f f i c i e n c y t h em a i nc o n t e n to ft h ep a p e ri st od i s p l a yt h e s t a t u so ft h ep a c k e t sw h e nt h e ya r eb e i n gt r a n s f e r r e di nt h en e t w o r k ,s u c h a sr o u t i n e ,o r i g i n a t i o na n dt h ei m p a c to fr o u t i n es e l e c t i o no ft h ep a c k e t s r e s u l t i n gf r o mt h el o a d t h em e t h o d s o fs t u d yi n c l u d e :d e s i g nad a t a o r i g i n a t o r 1 0 a do r i g i n a t o ra n dt e s tp a c k e to r i g i n a t o r t h ef o r e l i m b s i m u l a t e st h en o r m a ll o a do ft h en e t w o r ka n dt h el a t t e ri su s e dt ot h e a n a l y z et h ep a c k e t s t h i si sr e a l i z e da t t h es e n d e rs i d e :t h eo t h e ri s t h ed e s i g no ft h ed a t ac o ll e c t o r ,w h i c hu s e dt oc o ll e c tt h et e s tp a c k e t s a n dt h e ns e n dt h e mt oa p p l i c a t i o np r o g r a mt oa n a l y z e t h i si sr e a l i z e d a tt h er e c e i v e rs i d e t h ep a p e rw i l lc o m ed o w nt ot h eo s im o d e l ,t c p i p p r o t o c o l ,w i n d o w s2 0 0 0r a ws o c k e ta n d w i n d o w s2 0 0 0n e t w o r kd e v i c ed r i v e r t h en e t w o r kd e v i c ed r i v e ri st h ee m p h a s e so ft h ep a p e r ,a n di td e a l sw i t h t h en e t w o r ks t r u c t u r eo fw i n d o w s2 0 0 0a n ds o m eo fi t sk e r n e lf u n c t i o n t h ep a p e rp u tf o r w a r dt h et e c h n o l o g yo fc a p t u r i n gt h ep a c k e t s o ft h e n e t w o r ka tt h el o w e rl e v e r ,w h i c hc a t c ht h ep a c k e t sb e t w e e nd a t al i n kl e v e l a n dn e t w o r kl e v e la n ds e n dt h e mt ot h ea p p li c a t i o nu p p e rl e v e l t h et o o l s m e n t i o n e di nt h ep a p e rc a nh eu s e dt om o n i t o rt h ep e r f o r m a n c eo ft h em i d d l e c a m p u sn e t w o r kt h r o u g ht h er o u t i n ec h a n g eo ft h ep a c k e t sa f t e ri m p r o v i n g k e y w o r d sn e t w o r kd r i v e tp r o g r a m ;r a ws o c k e t ;n d i s ;w i n s o c k 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 了 签名:。刁 日期:! 塑型:曼: 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅:学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名:生盏导师签名垃 日期:2 4 唑:叩 l 1 1 学术背景 第1 章绪论 在计算机网络教学中,网络层的教学是一个重要的环节。网络层的基本功能 是寻址( 路由) 和数据包分段。网络层的功能讲解起来比较抽象,教师需要花费 很大的精力,对于学生来说可能仍然不容易理解、不容易接受。随着教学设施的 完备,一些教学环境已经具备了在课堂上向学生实时演示网络层工作机制的条 件。通过简单的但具有代表性的网络拓扑结构和一些必要的设备及软件来现场向 学生演示分组在网络传输过程中的分段和重组及路由的过程将会有利于加深学 生对所学理论知识的理解,提高教学效果,同时减轻教师教学的难度和负担。 本课题旨在研究,设计并构筑一个能够在网络教学过程中辅助教师教学的工具, 在课堂上以实验的方式向学生演示分组在网络传输过程中的分段和重组及随着 网络中负载的变化分组的路由过程的调整。 1 2 理论及实际意义 本课题研究了对网络中数据进行截获并分析的技术,使得数据在网络中的流 向、路径等特征能够得到体现。该课题可用于提供对网络的基本理论进行直观的 证明,以及对网络原理给予更透明的解释。该课题还可用于辅助教学软件提高教 学效率。另外,该课题予以适当深入后可作为网络管理员评测与分析网络性能的 工具,并对网络的性能及故障提供有力而直观的证据。例如,当网络正常时,如 果某一数据报有多条到达目的地的路径,路由器会依据路由协议选择一条最优路 径将其发送。而当网络的某一部分由于某种原因而发生物理连接的中断时,数据 报的路径会发生变化,这一路径变化可以通过本工具在终端监控主机上显示出 来,于是网络管理员便可以据此判断网络已经陷于故障。 1 3 相关领域的研究进展、成果及存在的不足 1 3 1 研究进展 目前还未发现用于本教学目的的软件。但开发该软件所需的技术已经被广泛 采用。计算机网络的硬件包括路由器,交换机,电缆等物理设备。但是两台物理 设备之间的通信必须通过协议来进行。i n t e m e t 有关协议的发展始于1 9 7 4 年,但 真正开始使用则是在2 0 世纪8 0 年代早期,直到1 9 8 7 年,仍然没有一部权威性 的著作来介绍这些协议的运作方式和编码实现方式,尽管t c p 、i p 和其他一些 协议的标准文档已经有了。于是,目前开发人员的网络编程都是基于t c p 、i p 协议的。 与本文目的相似的此类技术国内外均不在少数,但是这些技术可统称为 s n i 圩e r 一嗅探器。s n i f f e r ( 嗅探器) 是利用计算机的网络接口,截获目的地是其 他计算机的数据报文的一种技术。众所周知,数据在网络上是以很小的称为“帧”的 单位传输的,帧由多个部分组成,不同的部分对应不同的信息以实现相应的功能, 例如,以太网的前1 2 个字节存放的是源地址和目的地址,这些数据告诉网络该帧的 来源和去处。其余的部分存放实际用户数据、t c p i p 的报头或i p x 报头等等。帧是 根据通信所使用的协议,由网络驱动程序按照一定规则生成,然后通过网卡发送到 网络中,通过网线传送到它们的目的主机,在目的主机的一端按照同样的通信协议 执行相反的过程。接收端机器的网卡捕获到这些帧,并告诉操作系统有新的帧到达, 然后对其进行存储。在正常情况下,网卡读入一帧并进行检查,如果帧中携带的目 的地址( 这里的目的地址是指物理地址而非i p 地址,该地址是网络设备的唯一性标 志) 和自己的物理地址一致或者是广播地址( 就是被设定为一次性发送到网络所有 主机的特殊地址,当目标地址为该地址时,所有的网卡都会接收该帧) ,网卡通过产 生一个硬件中断引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处 理,否则就将这个帧丢弃。我们可以想象到这样一种特别的情况:如果网络中某个 网卡的物理地址不确定( 这可以通过本地网卡设置成“混杂”状态来实现) ,网卡会如 何处理收到的帧呢? 实际的情况是该网卡将接收所有在网络中传输的帧,无论该帧 是广播的还是发向某一指定地址的,这就形成了监听。如果某一台主机被设置成这 种监听模式,它就成了一个s n i f f e r 。鉴于s n i f f e r 的工作原理,我们知道:如果一个 第l 章绪论 帧没有发送到你的网卡上,那么你将无法监听到该帧。所以s n i f f e r 所能监听到的信 息仅限于在同一物理网络内传送的数据,在使用了交换( 路由) 设备的网络中,由 于其数据是根据目的地址进行分发的,单个网卡将无法监听到所有正在传输的信息。 不同传输介质网络的可监听性是不同的。一般来说,以太网被监听的可能性比较高, 因为以太网是一个广播型的网络;f d d i t o k e n 被监听的可能性也比较高,尽管它并 不是个广播型网络,但带有令牌的那些帧在传输过程中,平均要经过网络上一半 的计算机;电话线监听的可能性。p 等,但在实际中,高速的调制解调器比低速的调 制解调器搭线困难的多,因为高速调制解调器引入了更高的频率;微波和无线网被 监听的可能性同样比较高,因为无线电本身是一个广播型的传输媒介,弥散在空中 的无线电信号可以被很轻易地被截获。所以,s n i f f e r 可以应用于大部分的网络类型 中。s n i f f e r 本来是网络工程师常用的工具,也是网络管理员的好帮手,但由于网络 中的数据传送往往是以明文方式进行的,所以s n i f f e r 也常常被某些人用于“特殊”的 用途。s n i f f e r 技术己发展得相当成熟并被广泛应用于网络维护和管理方面,它工作 的时候就像一部被动声纳,默默地接收着来自网络的各种信息,通过对这些数据的 分析,网络管理员可以深入了解网络当前的运行状况,以便找出所关心的网络中潜 在的问题。s n i f f e r 工具在功能和设计上有很多不同。有些只能分析一种协议,而另 一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析如下的 协议:标准的以太网、t c p t i p 、i p x 、d e c n e t 等。 1 3 2 研究成果 实际应用中的s n i f f e r 还分软、硬两种。网上有不少免费的s n i f f e r 工具可 下载使用( 有些甚至提供源码) ,但是这些免费的软件往往功能单一,稳定性和 技术支持方面也无法和商业软件相比;目前在商业网管软件中,n a i 的 s n i f f e rt n v 套件是非常典型的协议分析仪。s n i f f e rt n v 主要包括两部分:便 携式套件和分布式套件。便携式套件主要包括s n i f f e rb a s i c 、s n i f f e rp r ol a n 、 s n i f f e rp r ow a n 、s n i f f e rp r oh i g hs p e e d 等组件,它是一种便携式的网络故 障与性能分析的解决方案,是能够为全部七层o s t 网络模型提供全面性能管理的 工具包,它使得网络专职人员能够主动维护多拓扑结构和多协议的网络,并显著 降低其网络操作成本。同时,它还具备出色的监测和分辨能力,智能的专家技术 扫描从网络上捕获的信息以检测网络异常现象,并应用用户定义的试探式程序自 动对每种异常现象进行归类,并给出一份警告、解释问题和提出建议的解决方案: 同时s n i f f e r 的网络分析器还可以监视所有类型的网络硬件和拓扑结构,包括 交换网络和运行a t mo c 一1 2 和千兆以太网的高速骨干网在内;它能够支持4 0 0 多种协议解释和强大的专家分析功能,可以对网络传输进行分析,找出故障和响 应缓慢的原因,从而能够确保整个l a n 和w a n 拓扑网络的最高性能。 1 3 3 存在的不足 软件s n i f f e r 的优点在于比较便宜,易于学习使用,同时也易于交流,缺点 是往往无法抓取网络上所有的传输( 比如碎片) ,某些情况下也就可能无法真正 了解网络的故障和运行情况;硬件的s n i f f e r 通常又称为协议分析仪,一般都比 较昂贵,它的优点恰恰是软件s n i f f e r 所欠缺的,但是昂贵是它致命的缺点。因 此目前流行的s n i f f e r 工具都是软件的。另外,目前的大多数s n i f f e r 软件的运 行平台都是基于u n i x 操作系统的,主要原因是因为其开放的内核源代码可以使 开发人员很容易的对主机设备的通信工具网卡进行编程,因此基于u n i x 的 s n i f f e r 软件实际上是工作在数据链路层与网络层之间的。因为这样可以对原始 的数据帧进行截获并予以分析。然而,由于w i n d o w s 的非开放性源代码,在 w i n d o w s 上实现s n i f f e r 软件的功能的工具大多都是工作在网络层,既是说它们 大多都不能对原始帧进行截获,除非使用微软的d d k 设备驱动程序开发包进行开 发,这正是本文讨论的主要内容。 1 4 主要研究的内容 网络层的基本功能是寻址( 路由) 和分段。网络层是处理端到端数据传输的 最低层( 数据链路层仅将数据帧从导线的一端送到其另一端) 。将分组从源端机 器经过选定的路由送到目的端机器可能得经过许多中间节点,网络层需要确定分 组从源端到目的端如何选择路由。这些工作是由路由器完成的。一旦路由器确定 了网络号,它必须找出那个接口是能将报文转发到目的地的最好的接口。这一过 程通过在路由器内存中的路由选择表中寻找匹配的网络号来实现。路由器的第二 个工作是维护路由选择表。这些表可能是由网络管理者创建的,或通过与其他路 第l 章绪论 由器交换路由信息来创建。当一个路由器初始引导时,它只知道与它直接相连的 接口。这些接口在路由选择表表项中的第列用一个字符标示。如果网络中的路 由器正在运行一个路由选择协议,当路由器知道与它邻接的路由器所连接的网络 时,新的路由表表项将被创建。每个路由选择表表项都被标上一个字符,该字符 标示路由信息的源端。当收到一个报文时,从报文中抽出它们的目的地址,并按 j 前面描述的方法确定它的网络号。然后在每个路由选择表表项中查找目标的网络 号。如果匹配成功,报文被传送到匹配成功的路由选择表表项所指定的接口。如 果为路由器配置了路由选择协议,它们会与相连的路由器交换有关它们所连接的 网络的信息。当网络中的负载等因素发生改变时网络层可能还需要根据一定的算 法选择不同的路由。网络层是处理端到端数据传输的最低层( 数据链路层仅将数 据帧从导线的一端送到其另一端) 。同时,每个网络都有一个分组的最大的长度 限度,即m t u ( m a x i m u mt r a n s m i s s i o ru n i t ) ,对它的限制有多方面的原因,其 中有:硬件( 例如,t d m 传输时隙的长度) 、操作系统( 例如,所有缓冲区都是 5 1 2 字节) 、协议( 例如,分组长度字段的位数) 、遵从某种( 国际) 国内标准、 希望在某种程度上减少重传的错误、希望防止分组占用信道时间过长。最大有效 载荷m t u 字段从4 8 字节( a t m 信元) 到6 5 5 1 5 字节( i p 分组) 都有。两台主机 之间的路径m t u 不一定是个常数。它取决于当时所选择的路由。而选路不一定是 对称的。因此路径m t u 在两个方向上不一定是一致的。当一个大分组想穿越个 m t u 过小的网络时,则需要允许网关将分组划分为段,把各个段作为单独的互连 网分组发送,到达目的主机或者穿过此网络时再把各个段重组成分组。本文的主 要目的就是研究设计一套工具,其功能包括: ( 1 ) 数据包分段前后的格式和内容的对比; ( 2 )不同路由算法下网络中负载分布发生改变时数据包路由情况的变化; ( 3 ) 对不同协议格式的数据包实现演示功能; ( 4 ) 使得网络中各种通信过程能完整的演示出来: 因此,主要研究的内容是: ( 1 ) 如何在网络中进行数据的收发即数据发生器的研究;该部分主要 用于模拟制造负载。 ( 2 ) 研究s n i f f e r 软件的使用以及其如何实现各个数据帧的抓取和分析一 一即数据收集器的研究。除此之外,由于一些s n i f f e r 软件仅仅只是对i p 数据 包的侦听和分析,因此只是工作在i p 的程序,还无法对数据分片和数据帧进行 截获和分析。要满足以上要求,还必须研究如何在数据链路层进行操作。这也是 目前大多数网络工具很少涉及的问题; ( 3 ) 研究网络通信中各协议的数据包格式,帧格式以及数据分片的格式, 并进行分析即数据分析器的研究。 由于作者主要负责负载数据的发生和数据帧的截获,因此本文研究的内容侧 重于前面两点。数据的分析只做简单介绍。 2 1 实验环境 第2 章设计方案概述 在目前的网络环境中,以太网是应用最普遍的。本文的网络环境也主要基于 以太网。一般,在以太网的环境中,需要有路由器,以太网交换机等主要网络设 备,为了检验本文所设计的工具,我们采用图2 - 1 所示网络拓扑结构为实验环境。 主机1 :1 9 2 1 6 8 1 1 2 4主机3 :1 9 2 1 6 8 4 1 2 4 主机5 :1 9 2 1 6 8 7 1 2 4 主机2 :1 9 2 1 6 8 31 2 4主机4 :1 9 2 1 6 8 6 1 2 4 主机6 :1 9 2 1 6 8 8 t 2 4 路由器1 : f a0 0 :1 9 2 1 6 8 1 2 5 4 2 4 s0 0 :1 9 2 1 6 8 2 1 2 4 so 1 :1 9 2 1 6 8 ,9 2 2 4 路由器4 : f a0 0 :1 9 2 1 6 8 7 2 5 3 2 4 so 1 :1 9 2 1 6 8 5 2 2 4 f a0 1 :1 9 2 1 6 8 6 2 5 4 2 4 路由器2 : f a0 0 :1 9 2 1 6 84 2 5 3 2 4 so l :1 9 2 1 6 8 2 2 2 4 f a0 1 :1 9 2 1 6 8 3 2 5 4 2 4 路由器5 : f a0 0 :1 9 21 6 8 7 2 5 4 2 4 f ao 1 : 9 2 1 6 8 8 2 5 4 2 4 s0 0 :1 9 2 1 6 8 9 1 2 4 图2 1 网络结构 f i g u r e2 - 1n e t w o r ks z r u c t u r e 7 一 路由器3 : f a0 0 :1 9 2 1 6 8 4 2 5 4 2 4 s0 0 :1 9 2 1 6 8 5 ,1 2 4 2 。2 角色分布 正如绪论中介绍的那样,本: 具基本目的在于分析网络中数据包的路由路径 等特性,依据分析的结果来判断在网络性能发生变化时,数据包发生的变化。因 此我们根据数据发生器、收集器和分析器以及控制程序的特征建立七个角色:负 载数据发生、负载数据接收、测试数据发送、测试数据接收、数据收集器、数据 分析器以及控制这些角色的控制端。 对于第一个角色负载数据的发生,主要功能是人工制造负载从而对负载对网 络造成的影响进行分析。因为在网络环境中,某一网段的流量的改变会对数据包 的选路造成很大影响,观察数据包的路径改变对网络性能的评估有很大帮助。因 此,负载的模拟发生在实验环境中就显得十分必要。负载是以具体流量的模式进 行发送的。流量的大小由控制端指定。 而第二个角色负载数据的接收,则是与其相对应的接收程序。如果没有 它,数据包在到达目的端时就会被丢弃。负载的发生和接收中需要用到的应用程 序端口可以由控制端来指定。 对于第三个角色测试数据发生器,其主要功能是发送测试数据包,所谓 测试数据包是一个有记录路由选项的数据包,对它的分析将会很容易的得到其在 网络中传输时所经过的路径,实际上就是为了对网络上的数据流量进行分析而专 门制造的数据包。 第四个角色是测试数据接收程序,这和负载的发生器是一样的道理。有所不 同的是,测试数据的发送和接收程序的端口是固定的,这是为了方便区分测试数 据包和负载数据。因此,数据发生器实际上分为2 个模块:负载数据发生和测试 数据包发生。而前者和后者各由连个角色组成发送和接收。 第五个角色是数据收集器,其主要功能是对发送的测试数据包进行收集,并 截获的数据包予以保存。在测试数据包的收集中,需要对测试数据包进行判断, 如果不是则不予任何处理,如果是则保存在个缓冲区数组中,等候上层解析程 序的读取; 第六个角色数据分析器,主要功能是对测试数据包进行分析,重点分析 其路由记录选项中的路由记录。另外,数据包的源和目的地址、采用的协议以及 端口号也可以是解析的内容。 远程的控制系统的主要功能是控制各个主机扮演何种角色并提供角色的参 数,它其实也是一个角色,是一个控制其它角色的角色。 2 3 角色的运行机制 在本文所要使用的环境中,角色的运行机制十分重要,因为它直接影响到 控制端对角色的配置。下面将介绍各个主要角色之间的运行机制。 2 3 ,1 控制端与测试数据发送端 如下图2 2 所示,说明了控制端如何对测试数据发送器进行角色的配置。首 先,控制端向要扮演测试数据发生的角色的主机发送控制码以及参数。控制码表 明主机应当扮演的角色( 是发送数据还是接收还是分析还是停止某一角色) ,参 数包括接收数据的主机的地址、发送的端口号、数据包的流量以及上层的协议。 然后测试数据发送程序启动并开始发送测试数据包。为了方便设计。所有的数据 包( 无论测试用还是负载模拟都是用u d p 作为传输层协议,i p 作为网络层协议) 。 对于测试数据包而言,为了加以区别,其上层应用程序端口设蚤为5 0 5 0 ,而负 载的模拟则可以自定义上层端口号。 1 1 测试数据发送端是否己启动 1 2 发送测试数据 1 3 停止发送测试数 2 1 是 22 正在发送测试数 2 3 已停止发送测试数据包 图2 - 2 控制端和测试数据发送端 f i g u r e2 - 2c o n t r o l l e ra n dt e s t i n gd a t as e n d e r 北京工业大学硕士学位论文 曼曼量鼍e 皇曼鼍鼍曼舅皇曼苎曼曼曼鲁矗曼曼笪曼曼詈邕曼罡皇曼皇舅邕曼曼曼曼曼薯i i 笪曼曼詈皇曼皇曼曼皇 2 。3 。2 控制端和测试数据接收端 测试数据包在发送之前,发送的目的地的相应接口上应当有接收程序启动并 监听,如下图2 3 所示。控制码表明了被控制的主机扮演数据接收的角色( 可能 是停止接收也有可能是开始接收) 。其余则配置了接口地址、端口号等参数。由 于测试数据包主要是用来进行分析的,因此在接收端必须有相应的接收程序,也 就是说测试数据包的发送角色运行时,测试数据包的接收角色也必须运行。 l1 测试数据接收端是否已启动 1 2 接收测试数据 1 3 停止接收测试数 2 1 是 2 2 正在接收测试数 2 3 已停止接收测试数据包 图2 - 3 控制端和测试数据接收端 2 3 3 控制端和负载数据发送端 如下图2 4 所示是控制端和负载数据发送端的运行机制。它与2 3 1 中的机 制基本一样,所不同的是,控制端可以在此指定不同的发送端口号,协议等参数。 1 1 负载数据发送端是否启动 l 2 制造负载 1 3 停止制造负载 2 2 正在制造负载 2 3 己停止制造负载 图2 - 4 控制端和负载数据发送端 f i g u r e2 4c o n t r o l l e ra n dl o a dd a t as e n d e r 2 3 4 控制端和负载数据接收端 控制端和负载数据接收端的机制同2 3 2 中的一样,但是控制端可以不启动 这个角色,因为它并不影响负载的发生。如图2 - 5 。 1 1 负载数据接收端是否启 1 2 开始接收负载数 i 3 停止接收负载数 21 是 2 2 正在接收负载 2 3 己停止接收负载 图2 - 5 控制端和负载数据接收端 f i g u r e2 - 5c o n t r o l l e ra n dl o a dd a t ar e c e i v e r 2 4 角色运行机制的实现 所谓的角色运行的机制的实现就是指控制端对角色发出控制命令的方式。控 1 - 制端是通过命令控制报文对角色进行命令控制的。系统运行时先启动被控制端, 这样位于被控制端的通讯服务器启动并处于侦听状态,然后启动控制端,位于控 制端的通讯客户端启动并利用指定的i p 地址和通讯端口与控制端上的通讯服务 器建立通讯连接。 当控制端和被控制端通讯连接建立后,控制端从用户界面接受命令,并用指 定的参数填充控制报文,然后通过通讯客户端利用t c p 协议把控制报文发送给通 讯服务器,通讯服务器再根据命令控制报文中的控制码以及其他参数启动调用相 应的角色程序。命令控制报文的结构如下表2 - 6 : 表2 - 6 命令控制报文结构 t a b l e2 6t h es t r u c t u r eo f t h ec o m m a n dc o n t r o l l e r l 字节l 字节2 字节4 字节4 字节4 字节 2 5 需要采用的技术 对于设计第一部分即数据发生器而言,将要使用w i n s o c k 网络编程技术,套 接字是技术的关键部分。但针对该部分的两个不同的模块,发送测试数据包的程 序采用的是原始套接字,因为原始套接字可以在发送数据包前对i p 头进行操作。 而由于制造负载无需此类功能,所以制造负载的模块采用的则是普通套接字。对 于第二部分而言,设计中将使用w i n d o w sd d k ,n o i s 等多个涉及w i n d o w s 内核的 技术,是软件设计的重要部分。 2 6 本章小结 本章主要介绍了本文中所研究内容的主要物理结构,包括网络的结构,解决 某些问题的关键点以及需要采用的技术,这对后面的内容起到了一个总起说明的 作用。 第3 章数据发生器的设计 ! i i ! i 量! ! ! ! ! ! 目e e 曼自! ! ! e | | ! 皇! 第3 章数据发生器的设计 3 1w in s o c k 技术的使用 3 1 1w in s o c k w i n s o c k 是一种网络编程接口,而不是协议。使用w i n s o c k 编程接口,应用 程序可通过普通网络协议如t c p i p 或i p x 协议建立通信。w i n s o c k 接口从在u n i x 平台上实现的b s ds o c k e t 套接字中继承了大量的特性。 w i n s o c k 有两个主要版本,即w i n s o c k1 和w i n s o c k2 ,两者都能在除w i n d o w s c e 之外的所有w i n d o w s 平台上运行。开发新应用程序时,把w i n s o c k 2 h 头文件 包含在应用程序中,该程序将使用w i n s o c k2 规范。 每个w i n s o c k 应用都必须加载合适的w i n s o c kd l l 版本。如果调用一个 w i n s o c k 函数之前没有加载w i n s o c k 库,这个函数就会返回一个s o c k e t e r r o r , 错误信息是w s a n o t i n i t i a l i s e d ,加载w i n s o c k 库是通过w s a s t a r t u p 函数实现 的。这个函数的组成如表3 一l ,具体代码定义请参看附录1 。 表3 一l 稻a s t a r t u p 函数的组成 t a b l e3 一l 。t h ec o m p o s i t i o no fw s a s t a r t u pf u n c t i o n 函数名w s a s t a r t u p 函数类型i n t 参数1w v e r s i o n r e q u e s t e d 参数1 类型 w o r d 参数2l o 黔a d a t a 参数2 类型 l p w s a d a t a w v e r s i o n r e q u e s t e d 参数用于制定准备加载的w i n s o c k 库的版本。i p w s a d a t a 参数是指向l p w s a d a t a 结构的指针,w s a s t a r t u p 用与其加载的库版本有关的信 息填充这个结构: t y p e d e fs t r u c tw s a d a t a ( w o r dw v e r s i o n : w o r d c h a r c h a r u n s i g n e ds h o r t u n s i g n e ds h o r t w h i g h v e r s i o n : s z d e s c r i p t i o n ( w s a d e s c r i p t i o n _ l e n + i ) s z s y s t e m s t a t u s ( w s a s y ss t a t u s _ l e n + i ) i m a x s o c k e t s : i m a x u d p d g : 1 p v e n d o r i n f o : w s a d a t a ,* l p w s a d a t a : w s a s t a r t u p 将第一个字段w v e r s i o n 设置为将要使用的w i n s o c k 版本。 w h i g h v e r s i o n 参数包含了现有w i n s o e k 库的最高版本。 在使用w i n s o e k 接口编好应用程序之后,应该调用w s a c l e a n u p 函数。这个 函数能够使w i n s o c k 释放所有由w i n s o c k 分配的资源,并取消这个应用程序挂起 的w i n s o c k 调用。w s a c l e a n u p 函数的定义为: i n tw s a c i e a n u p ( v o i d ) : 3 1 2w in s o c k 中的i p 协议寻址 i p v 4 中,计算机都分配有一个地址,该地址用个3 2 位的数值来表示。客 户机需要通过t c p 或u d p 和服务器通信时,必须指定服务器的i p 地址和服务端 口号。在w i n s o c k 中,应用程序通过s o c k a d d r _ i n 结构来指定i p 地址和服务端 口信息,该结构组成如表3 2 ,具体代码定义请参看附录1 。 表3 - 2s o c k a d d r i n 结构的组成 t a b l e3 - 2t h ec o m p o s i t i o no fs o c k a d d r i ns t r u c t u r e 字段i s i nf a m i l y 字段i 类型s h o r t 字段2s l n p o r t 字段2 类型 us h o r t 字段3 s i na d d r 字段3 类型 s t r u c ti n _ a d d r 字段4 s i n z e r o 8 字段4 类型 c h a r s i n f a m i l y 字段必须设为a f i n e t ,以告知w i n s o c k 此时正在使用i p 地址 簇。 用标识服务器服务的t c p 或u d p 通信端口由s i np o r t 字段定义。因为有些 可用端口号是为“已知的”服务保留的,如f t p 和h t t p ,所以应用程序在选择 端口时必须特别小心。 s o c k a d d r _ i n 结构的s i n _ a d d r 字段把i p v 4 地址作为一个4 字节的量存储起 来,它是无符号长整数的数据类型。根据这个字段的不同用法,它还可以表示一 个本地或远程i p 地址。 3 ,1 3 创建套接字 熟悉w i n s o c k 的人应该知道,a p i 是建立在套接字的基础上的。套接字是传 输提供程序的句柄。在w i n d o w s 中,套接字和文件描述符不是一回事,因而是一 个独立的类型,即w i n s o c k 2 h 中的s o c k e t 类型。有两个函数可以用来创建套接 字:s o c k e t 和w s a s o c k e t 。s o c k e t 的结构如下表3 3 ,具体代码定义见附录l 。 表3 3s o c k e t 结构的组成 t a b l e3 - 3t h ec o m p o s i t i o no fs o c k e ts t r u c t u r e 函数名 s o c k e t 函数类型 s 0 c k e t 参数l a f 参数1 类型 i n t 参数2t y p e 参数2 类型 i n t 参数3p r o t o c 0 1 参数3 类型 i n t 第1 个参数a f 是协议的地址簇。由于本文仅使用i p v 4 来描述w i n s o c k ,因 此应将这个字段设为a f i n e t 。第2 个参数t y p e 是协议的套接字类型。如果使 用t c p i p 创建套接字,应将该字段设为s o c k _ s t r e a m ,而用u d p i p 时则应设为 s o c k d g r a m 。第3 个参数是p r o t o c o l ,用于在给定地址簇和套接字类型具有多 重入口时,对具体的传送作限定。对于t c p ,应将该字段设为i p p r o t ot c p :而 北京工业大学硕士学位论文 i i i 对于u d p 则设为i p p r o t o u d p 。 为控制各种套接字选项和套接字行为,w i n s o c k 提供了4 个有用的函数: s e t s o c k o p t ,g e t s o c k o p t ,i o c t l s o c k e t 及w s a i o c t l 。在简单的w i n s o c k 编程中, 没有必要特别使用这些函数。但在本文所设计的软件中将使用到其中的函数。在 成功的创建了套接字之后,就可以开始在套接字上建立通信,并为收发数据做好 准备。在w i n s o c k 中有两种基本的通信技术:面向连接的通信和无连接的通信。 3 1 4 无连接的通信 和面向连接的协议比较起来,无连接协议的行为有很大的不同,因此,收发 数据的方法也会有所差别。和面向连接的服务器比较起来,无连接接收端改动不 大。在i p 中,无连接通信是通过u d p i p 协议完成的。u d p 不能确保可靠的数据 传输,但能将数据发送到多个目标,或者接受多个数据源。 3 1 4 1 接收端对于在一个无连接套接字上接收数据的进程来说,操作过程并 不复杂。先用s o c k e t 或w s a s o c k e t 创建套接字。再把这个套接字和准备接收数 据的接口绑定在一起,这是通过b i n d 函数来完成的。和面向连接不同的是,不 必调用l i s t e n 和a c c e p t 。相反,只需等待接收数据。由于设有连接,始发于网 络上任何一台机器的数据报都可以被接收端的套接字接收。最简单的接收函数是 r e c v f r o m 。它的定义如表3 4 ,具体代码定义参看附录1 。 表3 4r e c v f r o m 函数的组成 t a b l e3 4 f h ec o m p o $ i t i o n0 fr e c v f r o mf u n c t i o n 函数名 r e c v f r o m 函数类型 i n t 参数i s 参数i 类型 s o c k e t 参数2 b u f 参数2 类型 c h a r 参数3l e n 参数3 类型 i n t 参数4f l a g s 第3 章数据发生器的设计 参数4 类型i n t 参数5f r o m 参数5 类型s t r u c ts o c k a d d r l参数5f r o m l e n j参数6 类型i n t 前面4 个参数和r e c v 的参数是一样的,其中包括的标志的可能值:m s g o o b 和m s g p e e k 。对监听套接字的给定协议来说,f r o m 参数是一个s o c k a i ) d r 结构, 带有指向地址结构长度的f r o m l e n 。这个a p i 调用的返回数据时,s o c k a d d r 结构 内便填入了发送数据的那个工作站的地址。 附录2 的示例代码展示了如何创建一个简单的u d p 接收端应用程序。 3 1 4 2 发送端要在一个无连接的套接字上发送数据,有两种选择。最简单的 一种,便是建立一个套接字,然后调用s e n d t o 。其定义如图3 - 5 ,其代码定义可 参看附录l 。 表3 - 5s e n d t o 函数的组成 t a b l e3 - 5t h et e m p o s i t i o no fs e n d t of u n c t i o n 函数名s e n d t 0 函数类型i n t 参数i s 参数i 类型s o c k e t 参数2 b u f 参数2 类型 c h a r 参数3 t e n 参数3 类型 i n t 参数4f l a g s 参数4 类型 i n t 参数5 t o 参数5 类型 s t r u c ts o c k a d d r 参数6 t o l e n 参数6 类型 i n t 除了b u r 是发送数据的缓冲区,f e n 指明发送多少字节外,其余参数和 r e c v f r o m 的参数一样。另外,t o 参数是一个指向s o c k a d d r 结构的指针,该结构 带有接收数据的那个工作站的目标地址。 附录3 的示例代码展示了如何创建

温馨提示

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

评论

0/150

提交评论