(计算机应用技术专业论文)windows下的tcp协议栈开发.pdf_第1页
(计算机应用技术专业论文)windows下的tcp协议栈开发.pdf_第2页
(计算机应用技术专业论文)windows下的tcp协议栈开发.pdf_第3页
(计算机应用技术专业论文)windows下的tcp协议栈开发.pdf_第4页
(计算机应用技术专业论文)windows下的tcp协议栈开发.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(计算机应用技术专业论文)windows下的tcp协议栈开发.pdf.pdf 免费下载

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

文档简介

毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 w i n d o w s 下的t c p 协议栈开发 摘要 t c p 应用于无线环境时,由于丢包多是由无线误码引起而不一定是拥塞丢包, 其拥塞控制算法出现了不适应性,因此需要新的算法来修f 。为了在w i n d o w s 环 境下测试新算法,我们需要修改t c p 协议栈源码,然而系统本身的t c p 协议栈 是非开放源码的,因此我们需要开发一个运行于w i n d o w s 的t c p 协议栈。 这篇论文中主要介绍了我们开发t c p 协议栈的所使用的技术、具体方法和实 现的过程,协议栈各个部分的流程设计、每个模块的功能实现与整体设计实现, 以及功能测试。 w i n d o w s 的驱动开发套件( d d k ) 中对协议驱动开发有较为详细地说明与规 定,依照d d k 中的说明,我们可以开发一个协议驱动其下层接口符合网络驱动 接口规范( n d i s ) ,则无需关心下层网卡相关驱动;上层接口符合传输驱动接口 ( t d i ) 规定,则无需关心上层应用。因此,我们选择n d i s 和t d i 作为我们整 体上下层接口的规范。 t c p 协议向应用层提供了面向连接的服务,以确保网络上所传送的数据包被 完整、正确、可靠地接收。一旦数据有损伤或丢失,则出t c p 协议负责重传,应 用层不参与解决。实现这个复杂的过程,需要大量代码支撑。我们根据t c p 原理 设计出了主要数据结构、上下层接口和功能模块,然而具体实现上仍然举步维艰。 实际上,网上有很多的开放t c p 协议栈源码,如b s d t c p i p 协议栈、u c i p 、l w l p 、 u i p 、t i n y t c p 协议栈等,于是我们想到了移植。 根据多方面比较分析,最后我们选择了l i n u xk e m e l2 4 2 0 4 8 的t c p 协议栈 源码作为我们的参考。由于l i n u x 系统的机制与w i n d o w s 系统有很大的差别,绝 大部分代码是无法直接移植的。不过根据该协议栈的实现流程,我们设计出了自 己流程,结合d d k ,找到了进一步工作的途径。 我们所开发的t c p 协议栈大致可以分为以下几部分:t d i 接口,n d i s 接口, t c p 上层接口,t c p 下层接口,发送模块,接收模块,定时器和内存管理。每个 部分都有其特定的功能,进行不同的操作。其中,t d i 接口是t c p 与上层应用交 互的接口,n d i s 接口是t c p 与下层驱动交互的接口,发送模块完成整个发送数 据流程,接收模块完成整个接收数据流程,定时器控制其相关操作的等待时间, 内存管理模块使缓存的使用更有效。这些部分相互协作,构成了整个我们的t c p 隶属项目:基于f u z z y 综合评判的无线环境下丢包率区分算法的研究“ 毕业设计( 论文) :w i n d o w s 下的t c p 哳议栈开发 协议栈。 我们开发的t c p 协议栈仍不完善,还需要进一步修改,不过今日之成果已得 来非易,值得我为之骄傲,同时也希望不久的将来能有更大的收获。 关键词:t c p ,n ) i s ,t d i ,传输层,面向连接,协议驱动 隶属项目:基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 3 d e v e l o p m e n t o ft c ps t a c ku n d e rw i n d o w s a b s t r a c t w h e nt c pa p p l i e dt ow i r e l e s se n v i r o n m e n t ,i t sc o n g e s t i o nc o n t r o la r i t h m e t i c b e c o m ei n a p p l i c a b l eb e c a u s eo f t h ep a c k e tl o s ti sc a u s e db yw i r e l e s se r r o ra l m o s t l yn o t b yc o n g e s t i o n ,s ot h ec o n g e s t i o nc o n t r o la r i t h m e t i cn e e dr e v i s eb yan e wa r i t h m e t i c w en e e d e dt om o d i f yt c ps t a c ks o u r c ef o rt e s tt h en e wa r i t h m e t i cu n d e rw i n d o w s e n v i r o n m e n t b u tt h et c ps t a c ko ft h es y s t e mi sn o to p e n s o u r c e ,s ow em u s td e v e l o p at c ps t a c ku n d e rw i n d o s wp l a t f o r mb yo u r s e l v e s t h i s p a p e rm a i n l y i n t r o d u c e dt h e t e c h n o l o g y , m a t e r i a l m e t h o da n dt h e i m p l e m e n t i n gp r o c e s so fu sd e v e l o p i n gt h et c ps t a c k ,f l o wd e s i g t m a e n to fe v e r yp a r t , f u n c t i o no f e v e r ym o d u l ea n du n i t a r yd e s i g ni m p l e m e n t a t i o n t h e r ea r ed e t a i li n s t r u c t i o na n dr e g u l a t i o nf o rp r o t o c o ld r i v e rd e v e m o p m e n ti n w i n d o w sd r i v e rd e v e l o p e m n tk i t a c c o r d i n gt ot h ei n s t r u c t i o no fd d k ,w ec a n d e v e l o pap r o t o c o ld r i v e rw h i c hl o wi n t e r f a c ec o n f o r mn e t w o r kd r i v e ri n t e r f a c e s p e c i f i c a t i o n ( n d i s ) ,s ow en e e d n tt oc a r ea b o u tb o t t o mn i c d r i v e r a n di t sh i g hl a y e r i n t e r f a c e rc o n f o t i nt r a n s p o r td r i v e ri n t e r f a c e ( t d i ) r e g u l a t i o n ,s ow en e e d n tc a r e a b o u th i 鼬l a y e ra p p l i c a t i o n f o rt h e s er e a s o n s ,w ec h o o s en d i sa n dt d if o ro u r s p e c i f i c a t i o no f w h o l eh i 曲一l o w l a y e ri n t e r f a c e s t c pp r o t o c o ls u p p o r t sc o n n e c t i o n - o r i e n t e ds e r v i c ef o ra p p l i c a t i o nt oi n s u r et h e p a c k e to ni n t e m e to fb e i n gr e c e i v e di n t a c t , c o r r e c ta n dr e l i a b l e i fd a t ai ss c a t h i n go r l o s t ,t c pw i l lr e t r a n s m i t t e di t ,a p p l i c a t i o nl a y e rd o n tk n o wt h i s t oi m p l e m e n tt h i s c o m p l e xp r o c e s s ,n e e dap l e n t yo fc o d e ss u p p o r t i n g w ed e s i g n e d m a i nd a t as t r u c t u r e , h i g h l o w l a y e ri n t e r f a c e sa n df u n c t i o nm o d u l e sa c c o r d i n gt ot c pt h e o r y , b u ti t ss t i l l v e r yh a r dt oc o m et r u eo nc o d i n g a c c t u r l l yt h e r ea r em a n yo p e n - s o u r c et c p s t a c ko n i n t e r n e t ,s u c ha sb s dt c p i ps t a c k ,u c i e , l w l p , u i p , t i n y t c ps t a c k ,a n ds oo n t h e n t h ei d e ao f t r a n s p l a n t a t i o nc o m et oo u rb r a i n s a f t e rm u c hc o m p a r ea n da n a l y s e ,w ec h o o s et h et c ps t a c ko fl i n u xk e m e l 2 4 2 0 4 8f o r 血er e f e r e n c e b e c a u s et h e r ea r eb i gd i f f e r e n c e sb e t w e e nl i n u xs y s t e m m e c h a n i s ma n dw i n d o w ss y s t e m ,m o s to ft h es o u r c e sc o u n d tb et r a n s p l a n t e dd i r e c t l y b u tw ed e s i g n e do u ro w nf l o wa c c o r d i n gt ot h ei m p l e m e n t i n gf l o wo ft h ep r o t o c o l 隶属项目:基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论义) :w i n d o w s 下的t c p 协议栈开发 t d s t a c k w ec o n b i n e di tw i t hd d k t h e l lf o u n dan e x tw a yt oc o n t i n i l e o u rt c ps t a c kh a p l yc a nd i v i d et os e v e r a lp a r t sf o l l o w i n g t d ii n t e r f a c e n d i s i n t e r f a c e ,t c ph i l g hl a y e ri n t e r f a c e ,t c pl o wl a y e ri n t e r f a c e ,s e n dm o d u l e ,r e c e r v e m o d u l e ,t i m e ra n dm e m o r ym a n a g e m e n t e v e r yp a r th a si t ss p e c i a lf u n c t i o n ,c o m m i t d i f f e r e n to p e r a t e s t h e r e i n t o t d ii n t e r f a c ei st h ei n t e r f a c ew h i c ht c pi n t e r a c tw i m l l i g hl a y e ln d i si n t e r f a c ei st h ei n t e r f a c ew h i c ht c pi n t e r a c tw h i c hb o s o md r i v e r , s e n dm o d u l ea c c o m p l i s ht h ew h o l es e n dp r o c e s s ,r e c e i v em o d u l ea c c o m p l i s ht h ew h o l e r e c e i v ep r o c e s s ,t i m e rc o n t r o lt h ew a i tt i m eo fr e l a t e do p e r a t e ,m e m o r ym a n a g e m e n t m o d u l em a k et h eu s eo ft h em e m o r ym o r ee f f e c t i v e t h e s ep a r t sc o o p e r a t e ,f o r mt h e w h o l et c ps t a c k o u tt c ps t a c ki sn o tp e r f e c t ,a n dn e e dm o r em o d i f i c a t i o n ,b u tt h eh a r v e s tw eg a i n t o d a yi sn o te a s y , d e s e r v em yp r o n do fi t a n dih o p ew ec a ng e tl a r g e rh a r v e s ti n f u t u r e k e y w o r d s :t c p ,n d i s ,t d i ,t r a n s p o r tl a y e r , c o n n e c t i o n - o r i e n t e d p r o t o c o ld r i v e r 隶属项目:基于f u z z y 综台评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w m d o w s 下的t c p 协议栈开发 独创性( 或创新性) 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究成 果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包 含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他教 育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:查国日期:垒璺兰:兰羔 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保 留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权书。非保密论 文注释:本学位论文不属于保密范围,适用本授权书。 本人签名:霉垒銎一 同期:兰竺互兰兰l 导师签名:型鲁蚣日期:越兰2 圣 隶属项目t 基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) ;w i n d o w s 下的t c p 协议栈开发 1 1 课题背景 第一章引言 传输控制协议( t c p ) 的发展经历了从t c pt a h o e 到当前广泛使用的t c p n e w r e n o 多个版本的改进,其不断更新的拥塞控制策略保证了端到端的可靠的数 据流传输服务。重复确认、超时所标识的数据包丢失均被解释为网络拥塞,通过 启动拥塞控制机制进行流量控制:加大重发问隔、缩小发送窗口来适应网络拥塞。 这种方法适宜于链路质量良好的有线环境,其优化也都是针对有线网络的。 然而在无线网络中拥塞已不再是数据丢失的唯一原因。在无线网络中,分组丢 失和延迟通常是由于链路误码、本地重传或切换等原因导致的,传统t c p 把所有 的分组丢失简单归因于网络拥塞策略的盲目性严重恶化了无线环境中t c p 的性 能:如果t c p 仍然遵循丢包必然是由拥塞引起的原则,盲目减小发送速率,就 势必降低带宽利用率,导致t c p 性能恶化。无线链路的特性主要表现在较高的 链路误码率、有限的带宽、较大的时延和时延抖动、终端的移动性、能源消耗约 束等方面。因此, 在有线无线网络混合的异构环境下,要实现理想的控制策略。 就必须能够j 下确区分无线误码造成的数据丢失和网络拥塞造成的数据丢失。从而 采取不同的控制策略。即:如果是拥塞所致,就按照传统t c p 协议,减小拥塞窗 口,重传丢失的报文段:如果是无线链路出错所致,只需重传而不必减小拥塞窗 口。当前多种无线通信技术迅速发展,其与有线网络的融合趋势也越来越明显。 因此,在无线网络和有线网络混合、异构的网络环境下,明确而简便地区分因为 网络拥塞和无线误码所引起的丢包具有重大意义:可以因此采用合适的控制策略, 握高阻络的吞吐量,这对于提高两络硬雨率具有非常重要。 、 ,一。,_ _ - _ 然而,我们新的控制策略的使用必须通过修改t c p 的拥塞控制部分源码实 现,但是w i n d o w s 操作系统的t c p 协议栈源码是非开放的,这使得新的策略和 算法无法应用其中。因此,我们需要开发一个基于w i n d o w s 平台的t c p 协议栈, 以便测试和应用这些新的策略和算法。 1 2w i n d o w s 下t c p 协议栈的开发之路 1 2 1 如何开发w i n d o w s 下的t c p 协议栈 “如何开发w m d o w s 下的t c p 协议栈? ”这个问题从项目之初,一直到现 在,都时不时的困扰着我们。 首先,“是应该独立于系统t c p 运行,还是替换系统t c p 运行? ” 隶属项目;基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 ( 1 ) 最理想的情况,是直接修改系统t c p 。为此,我们查阅了大量的资料 和网站,甚至网上传播的w i n 2 k 和w i n n t 源码,最后只能得出只有微软开发该 协议的人可能才知道源码的结论。不过在此过程中,我们找到了可以把s y s ( 系 统的t c p i p 协议以t c p i p s y s 文件的形式被加载使用) 文件转成汇编语言的工具。 然而,在转成汇编的3 0 多万行代码中历时数星期,我们仍然没能找到想要的那部 分。也就是说,直接修改系统t c p 基本上行不通。 ( 2 ) 开发一个t c p 协议替换系统t c p 。根据面向对象的方法,只要提供同 一接口,便与具体实现无关。因此,我们只需要知道系统t c p 与上下层之间的接 口,便可以开发一个t c p 协议替换系统t c p 。为此,我们又开始了数周的资料查 找。结果,无论是在网络上还是书上或是微软提供的各种资料上,都没有找到确 切的答案。也就是说,替换系统t c p 也是行不通的。 不过收获还是有的,在w i n d o w s 驱动开发套件( d d k ) 中提到,t c p 协议 在其上层采用了传输驱动接口( t d i ) 。t d i 是传输层与应用层之白j 的接口规范, 因具体实现不同而不同。w i n d d k 中也有一章,其中讲述了网络协议驱动开发的 方法以及一个实例。网络驱动接口规范( n d i s ) 是网络层与底层驱动之间的接口 规范,符合该接口规范的协议驱动可以不考虑底层网卡微端口中间层驱动,而 收发网卡上的数据。这对我们后来的选择产生了决定性的影响。 ( 3 ) 综上所述,替换系统t c p 在我们的能力范围内暂时做不到,我们只能 开发一个独立于系统t c p 运行的t c p 协谬。 其次,“如何开发独立于系统t c p 的t c p 协议? ” 方案一,从应用层软件到底层网卡驱动,全部都自己写。我们知道,t c p i p 是一个非常复杂的协议,单独实现一个t c p 可能就需要几万甚至几十万行代码, 如果再加上网卡驱动、上层服务( 如f i p ) 、上层应用,以我们目前的人数和能力, 恐怕需要花费毕生功力了吧。 方案二,不考虑下层驱动,只实现上层。n d i s 使得我们可以不考虑底层驱 动,但是如果从t c p 开始往上都实现的话,工作量也几乎没减少多少。如果上层 接口私有,意味着所有上层都需要根据我们自己订的接口来写,几乎没有什么实 用性了。 方案三,下层和上层都使用w i n d o w s 提供的接口,我们只实现t c p 协议。 在前面我们提到,w i n d d k 提供了传输层与应用层之间的接口规范t d i ,以及网 络层与底层驱动之间的接口规范n d i s 。w i n d d k 中的网络驱动开发方法及其实 例,给了那时的我们很大的启发。 也就是说,经过分析和验证,只有方案三是可行的,也是唯一一个确实有径 可循的。 隶属项目;基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 拂议栈开发 然后,“如何实现t c p 协议? ”下层采用n d i s 接口规范,上层采用t d i 接 口规范,实现这两部分需要花两三个月学习新的东西,在具体实现过程中也要根 据需要修改,不过这都属于可知部分了。t c p 本身的实现问题成为很难逾越的又 一道坎。 ( 1 ) w i n d d k 的帮助使得我们能够写一个自己的协议收发网络数据,那么 在该数据上添加t c p 首部,就成了收发t c p 数据。然而,t c p 是不可能这么简 单的,单要实现三次握手,就要用到发送数据、定时器、缓存管理、接收数据、 连接管理等t c p 几乎所有的功能,而每一个功能模块的实现都要从功能设计、数 据结构设计、流程设计、函数设计等步骤开始。实际上单从t c p 原理出发的话, 我们几乎无法把各种功能组合到一起,甚至每个功能如何划分成更小单元都很难 想象。好不容易设计出来的数据结构,几个星期后发现冲突,又要重新设计;数 据结构重新设计,导致函数也得重新设计。 ( 2 ) 网上有很多t c p 的源码,u c i p 、l w i p 、u l p 、t i n y t c p 等,我们阅读 了大量的t c p 源码,虽然都是嵌入式或l i n u x 下的,但是原理上是一样的,我们 可以参考其方法。然而单看源码的话,几乎无法理解,不明白为什么要那么做。 ( 3 ) w r i c h a r ds t e v e n s 所著的t c p f l p 详解,这三卷书详细阐述了 4 4 b s d l i t e 中t c p 口协议栈的原理、实现与工作机制。与单看源码不同,这部 分代码是做什么的,为什么要这么做,实现的是哪些功能,都成为我们的导航灯。 虽然w i n d o w s 与l i n u x 的实现机制有很大差别,但是t c p 原理是一样的。也就 是说,我们可以参考现有t c p 源码的实现流程和方法,来写我们自己的协议。在 这里我们选择了l i n u xk e r n e l2 0 2 0 4 8 的t c p 协议栈作为我们的参考。 最后,综上所述,我们经过不断地摸索和实践,选择了w i n d d k 提供的t d i 作为上层接口,n d i s 作为下层接口;以l i n u x 内核t c p 源码为参考,依据t c p 来开发我们的t c p 协议栈这条开发之路。 1 2 2 主要技术及原理 微软的驱动开发套件w i n d o w sd d k ( w i n d o w s 驱动开发套件) 使得我们可以方 便的开发与w i n d o w so s 兼容的驱动,其中的协议驱动部分更为我们开发可与现 有软件方便兼容的t c p 协议栈提供了参考方法与工具。 l 、n d i s 协议驱动程序 n d i s 协议驱动程序与n d i s ( 网络驱动接口规范) 进行通信来发送和接收网 络数据包,并绑定和使用低层微端口n i c 驱动程序或中间层n d i s 驱动程序,它 在下边界导出一组p r o t o c o l x x x 函数。 2 ,t d i 传输器 隶属项目t 基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 t d i ( 传输驱动程序接口) 定义了在传输协议栈上边界提供的核心模式网络 接口。 要求所有传输驱动程序提供单一公共接口( t d i ) 简化了传输驱动程序开发 的任务,这样所有传输器只需要支持这些预定的单一接口就行了。由于减少了必 须编写的传输器相关的代码量,这也简化了客户开发的任务。 3 、t c p 协议 t c p 协议是面向连接的。t c p 协议向应用层提供了面向连接的服务,以确保 网络上所传送的数据包被完整、正确、可靠地接收。一旦数据有损伤或丢失,则 由t c p 协议负责重传,应用层不参与解决。 在t c p 会话初期,有所谓的“三握手”:对每次发送的数据量是怎样跟踪进行 协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及 数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送, t c p 在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给 目标机之后的确认消息。t c p 总是用来发送大批量的数据。当应用程序在收到数 据后要做出确认时也要用到t c p 。 在t c p 协议之上是应用层协议( 如f t p 、s m t p 、t e l n e t 等) ,最终需依靠 它们实现主机间的通信。t c p 协议携带了部分应用层信息,可用来区别同一报文 数据流的一组口包及其性质。 1 3 论文各个部分的主要内容 w m d o w s 下的t c p 协议栈开发,除了t c p 本身的开发外,还需要设计其上 下接口。考虑到可移植性、可扩展性、灵活性等多方面原因,我们利用现有技术 设计并实现了一个在w m d o w s 下运行的t c p 协议及其测试工具。 本文的第一章引言部分主要介绍了本课题的开发背景、我们选择现在的开发 方法的原因及采用的主要技术;第二、三章详细说明了所用到的两种接口技术, 即微软的w i n d o w s 驱动开发套件( w m d o w s d r i v e r d e v e l o p m e n t k i t 简称w i n d d k ) 所提供的n d i s 接口规范与t d i 接口:第四章简单介绍了t c p 原理及t c p 协议 栈实现模块;第五、六章详细说明了我们自己所设计开发的t c p 协议栈的各个模 块及其实现方法;最后一章作出总体并介绍了一个简单的功能测试。 隶属项目;基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 第二章w i n d o w s 下的的网络协议驱动开发 我们选择了网络驱动接口规范( n d i s ) 作为我们的t c p 协议栈与底层之间 的接口规范,那么n d i $ 是怎么样一个规范? 网络驱动程序是什么,它处于 w m d o w s 系统的网络结构的什么位置呢? 网络协议驱动又是怎样的定位呢? 这些 知识和概念对于没接触过的人可能会一时间难以理解,那么我们在这一章来简单 介绍一下。 2 1 网络驱动程序 w i n d o w s2 0 0 0 网络结构是以国际标准化组织( i s o ) f 6 0 定的七层网络模型为基 础的,1 9 7 8 年,i s o 制定的开放式系统( o s l ) 参考模型,将网络描述为一系列的协 议层,在每个协议层中完成一系列的特定功能。每一层都向上一层提供明确的服 务,同时将本层服务的实现封装起来一个在相邻层之间完善的接口定义了下层对 上层所提供的服务以及如何访问这些服务。 w i n d o w s2 0 0 0 的网络驱动程序实现了这个网络结构的下面四层。 其中物理层通过网络接口卡( n i c ) 来实现,物理层的收发是依缚于n i c 介质 的。使用串行端口的网络组件,物理层也同样包含了底层的网络软件,它定义了 串行位流是如何分成数据包的。 数据链路层进一步分成逻辑链路控制子层l l c 和介质访问控制子层m a c , l l c 在传输驱动程序中实现,而m a c 则在网络接口卡( n i c ) 中实现,n i c 由一个 名为n i c 驱动程序的设备驱动程序软件控制。 网络层控制着子网的运作,它基于多种因素决定数据的物理路径:( 1 ) 网络 状况;( 2 ) 服务优先权;( 3 ) 其他因素,包括路由、流量控制、帧的分解和重组、 逻辑到物理地址的映射、用户帐号。 传输层确保信息传送的无错传输,连续传输和不丢失或不重复。它使得上层 协议与上层协议之间或与它同层的协议之间通讯不必关心数据的传输。传输层所 在的协议栈至少应包括一个可靠的网络层,或在逻辑链路控制子层中提供一个虚 电路。例如,传输层协议t c p 提供了一个可靠的网络层d 在w i n d o w s2 0 0 0 网络结构中,逻辑链路层,物理层和传输层都是通过名为 传输驱动程序的软件实现的,它有时也称作协议,协议驱动程序或协议模块。 w m d o w s2 0 0 0 附带了t c p ,m ,i p x s p x ,n e t b e u i 和a p p l e t a l k 传输驱动程序。 网络驱动程序接口说明( n d i s ) 库将网络硬件抽象为网络驱动程序。n d i s 也 说明了网络驱动程序间的标准接口,因此它将用来管理硬件的底层驱动程序抽象 隶属项目:基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 为上层驱动程序,例如网络传输层。n d i s 也维护着状态信息和网络驱动程序的 参数,包括指向函数的指针,句柄和链按时参数块的指针,以及其他系统参数。 n d i s 支持以下几种类型的网络驱动程序: 微端口驱动程序( m i n i p o r td r i v e r s ) 中间层驱动程序( i n t e r m e d i a t ed r i v e r s ) 协议驱动程序( p r o t o c o ld r i v e r s ) 它们的结构关系如下: n d i sd v e r , 图2 1 网络驱动分层关系 网络协议驱动位于网络驱动的最上层,它向上提供t d i 接口( 或私有接口) 用来向网络用户提供服务,向下提供协议接口用来向低层驱动程序发送和接收数 据包。 2 2n d i s 协议驱动程序 n d i s 协议驱动程序与n - d i s ( 网络驱动接口规范) 进行通信来发送和接收网 络数据包,并绑定和使用低层微端口n i c 驱动程序或中间层n d i s 驱动程序,它 在下边界导出一组p r o t o c o l x x x 函数。 上述的n d i s 协议驱动程序可能在上边界支持t d i ,或者可以通过驱动程序 的传送栈,其中包括栈顶支持t d i 的栈,向高层核心模式驱动程序导出私有接口。 例如,n d i s 协议驱动程序可能是多模块传输实现的标准协议的最低层模块,如 隶属项目:基于f u 冽综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 最高层模块支持t d i 的t c p ,p 协议。 和低层n d i s 驱动程序通信来发送和接收数据包的协议驱动程序总是使用 n d i s 提供的函数来进行通信。例如,下边界面向无连接的协议驱动程序( 和面 向无连接介质的低层驱动程序进行通信,如以太网、令牌环网) 必须调用n d i s s e n d 或者n d i s s d p a c k c t s 向低层n d i s 驱动程序发送数据包,也必须调用n d i s r e q u e s t 来产生或传送查询,以及用网络相关的低层面向无连接驱动程序支持的 o l dx x x 的设置信息请求。 n d i s 也提供一组隐藏低层操作系统细节的n d i s x x x 函数。例如,协议驱动 程序调用n d i s l n i t i a l i z e e v e n t 为同步目的创建事件,调用n d i s i i l i t i a l i z e l i s t h e a d 创 建链表。使用那些函数的n d i s 版本的协议驱动程序在支持w i n 3 2 接口的微软操 作系统中可移植性更好。协议驱动程序也可调用o s 专用的核心模式支持的例程, 像用k e i n i t i a l i z e e v e n t 创建事件、用k e w a i t f o r s i n g l e o b j e c t 同步两个执行线程。 核心模式支持例程的文档可查阅“k e r n e l m o d ed r i v e r sr e f e r e n c e ”。 协议驱动程序的d r i v e r e n t r y 函数以及其中调用的代码,应该用 n d i si n r rf u n c t i o n 宏指定为仅仅用于初始化的代码。该宏标识的代码默认 情况下只在系统初始化时运行一次,并且作为结果,该部分代码只在那时被映射。 在函数代码被标识为仅用于初始化时,该代码将成为可丢弃的。 如果驱动程序分配的共享资源可以被两个驱动程序函数同时访问,或者如果 协议驱动程序能够运行在s m p 机器上,使得同一个协议驱动程序函数可以从多 个处理器上同时访问某些资源,那么这些访问必须被同步。例如,如果驱动程序 维护共享队列,自旋锁可用来串行对该队列的访问,该自旋锁应在队列创建的时 候初始化。 然而,也不应过分保护共享资源,如内部驱动程序队列。有些只读操作对队 列访问可不必串行化,但任何变换队列连接的操作都必须串行化。自旋锁应该尽 可能少地使用,并尽可能地减少其存在时间。关于自旋锁的深入讨论请参阅“t h e k e r n e l m o d ed r i v e r sd e s i g ng u i d e ”。 2 2 1 协议d r i v e r e n t r y 及其初始化 对于驱动程序初始化要求的入口点,为了使引导程序能够识别,必须被明确 地命名为d r i v e r e n t r y 形式。所有其他的被描述为p r o t d c o l x x x 的导出函数,由于 其地址被传给了n d i s ,则可由开发者指定任何确定的名字。任何内核模式驱动 程序的d r i v e r e n t r y 定义具有以下形式: n t s t a u s d r i v e r e n t r y ( i np d r i v e r _ o b j e c td r i v e t o b j e c t 隶属项目:基于f u z z y 综合评判的无线环境下丢包宰区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 i np u n i c o d e _ s t r i n gr e g i s t r y p a t h ) ; 如果除了n d i s 定义的p r o t o c o l x x x 之外,驱动程序还导出一组标准的内核 模式驱动程序例程,如( t d i ) d i s p a t e h x x x 和卸载例程,那么协议驱动程序必须 将这些标准例程的地址以d r i v o r o b j c c t 的形式传入d r i v e r e n t r y ,就像任何其他的 内核模式中间层驱动程序一样。 为了和n d i s 库建立通信,协议的d r i v e r e n t r y 必须调用n d i s r e g i s t e r p r o t o c o l 作为 协议驱动程序注册,稍候将作详细描述。 d r i v e r e n t r y 也能够初始化协议要求的自旋锁,如保护用于跟踪连接和运行中 的发送任务或驱动程序分配的队列等的状态变量。 如果d r i v e r e n l a y 分配某个协议要求的资源失败,那么它应该释放先前为其分 配的任何资源,如果必要,甚至可以包括调用n d i s d c r e g i s t e r p r o t o c o l ,然后返回 一个适当的错误状态。 当协议驱动程序能够分配d r i v e r e n t r y 中要求的所有资源时,如果驱动程序提 供了像2 3 节描述的p r o t o c o l b i n d a d a p t c r 函数,那么可以推迟对低层n i c ( 或虚 n i c ) 驱动程序的断开和绑定,并保留系统资源管理绑定直到出现初始的网络f o 请求。然后,当p r o t o c o l b i n d a d a p t e r 调用n d i s o p c n a d a p t e r 时,将分配低层n i c ( 打开的) 要求的资源。 2 2 2 下边界面向无连接的协议驱动程序的p r o t o c o l x x x 函数 面向无连接驱动程序必须和可能要求的导出协议函数如下所列: b i n d a d a p t e r h a n d l e r 这是一个必须提供的函数。n d i s 调用该函数请求协议驱动程序绑定到低层 网卡或虚拟网卡上,网卡名作为该处理程序的参数传递。关于动态绑定的更多的 信息参见2 3 节 u n b i n d a d a p t e r h a n d l e r 这是一个必须提供的函数。n d i s 调用p r o t o c o l u n b i n d a d a p t e r 释放对低层网 卡或虚拟网卡的绑定,网卡名作为参数传递。当绑定成功解除时, p r o t o c o l u n b i n d a d a p t e r 函数调用n d i s c l o s o a d a p t o r 并释放资源。 o p e n a d a p t e r c o m p l e t e h a n d l e r 这是一个必须提供的函数。如果协议驱动程序对n d i s o p e n a d a p t e r 的调用返 回n d i ss t a t u s _ p e n d i n g ,则接着调用p r o t o c o l o p e n a d a p t e r c o m p l e t e 来完成 绑定操作。 c l o s e a d a p t e r c o m p l e t e h a n d l e r 这是一个必须提供的函数。如果协议驱动程序对n d i s c l o s e a d a p t e r 的调用返 隶属项目;基于f u z z y 综合评判的无线环境下丢包率区分算法的研究 毕业设计( 论文) :w i n d o w s 下的t c p 协议栈开发 回n d i ss t a t u sp e n d i n g ,则接着调用p r o t o c o l c l o s e a d a p t e r c o m p l e t e 来完成 解除绑定操作。 r e c e i v e h a n d l e l 这是一个必须提供的函数。p r o t o c o l r e c e i v e 函数以前视缓冲区的指针为参数 被调用执行。如果该缓冲区包含的不是完整的接收到的网络数据包, p r o t o c o l r e c e i v e 以协议分配的数据包描述符作为参数,调用n d i s t r a n s f e r d a t a 指定 协议分配缓冲区接收数据包的其余部分。 r e c e i v e c o m p l e t e h a n d l e r 这是一个必须提供的函数。p r o t o c o l r e c e i v e c o m p l e t e 用来指出:以前指示给 p r o t o c o l r e c e i v e 的接收数据包现在可以延期处理。 t r a n s f e r c o m p l e t e h a n d l e r 这是一个必须提供的函数,除

温馨提示

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

评论

0/150

提交评论