青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-60  評論-111  文章-0  trackbacks-0

標 題: Windows網(wǎng)絡(luò)體系結(jié)構(gòu)總結(jié)
作 者: jbwang
時 間: 2009-11-23,11:22:25
鏈 接: http://bbs.pediy.com/showthread.php?t=101794

做了一些東西自己也看了一些書,最近總結(jié)了一下,想給大家分享一下,高手可以飛過了。如果有什么問題可以給小弟指正一下,多謝!

在介紹Windows網(wǎng)絡(luò)體系架構(gòu)之前,我首先介紹一下Windows中的兩個重要編程規(guī)范——TDI,NDIS.,然后再介紹網(wǎng)絡(luò)體系的架構(gòu)。
TDI,Transport Driver Interface,傳輸驅(qū)動程序接口。\Windows\System32\Drivers\Tdi.sys
在實現(xiàn)網(wǎng)絡(luò)API驅(qū)動程序時,由于牽涉到很多不同協(xié)議,會用到不同協(xié)議驅(qū)動提供的接口,使得開發(fā)的工作復雜化。所以Microsoft在網(wǎng)絡(luò)API驅(qū)動程序和協(xié)議驅(qū)動之間又增加了一層TDI。TDI接口只是一種"將網(wǎng)絡(luò)請求格式化成IRP,以及申請網(wǎng)絡(luò)地址和數(shù)據(jù)通信"的做法規(guī)范化。遵從TDI標準的傳輸協(xié)議向他們的客戶(如Socket emulator,Netbios emulator等)導出了TDI接口,有利于上下層之間的通信:
?  一方面,對于TDI上層的網(wǎng)絡(luò)API驅(qū)動程序就不需要使用所有協(xié)議驅(qū)動程序所提供的接口,直接使用TDI提供的統(tǒng)一接口。
?  另一方面,對于下層協(xié)議驅(qū)動程序(也稱為TDI Transport Provider傳輸器)直接由TDI接口來調(diào)用,發(fā)出請求。
 


在Windows VISTA版本之后,TDI就不再使用了,取而代之的是Windows filter platform和Winsock kernel。

NDIS,Network Driver Interface Specification,網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范,在操作系統(tǒng)中的位置
\Windows\System32\Drivers\NDIS.sys
當一個協(xié)議驅(qū)動程序想要按照其協(xié)議的格式解析網(wǎng)上讀寫的數(shù)據(jù)時,而這些數(shù)據(jù)必須通過網(wǎng)絡(luò)適配器才能取得,期望協(xié)議驅(qū)動程序能夠理解市場上的每一款網(wǎng)絡(luò)適配器的細微區(qū)別是不可能的。所以在1989年,由Microsoft和3Com聯(lián)合開發(fā)的了NDIS,使得協(xié)議驅(qū)動程序可以以一種與設(shè)備無關(guān)的方式來跟網(wǎng)絡(luò)適配器驅(qū)動程序進行通信。遵從NDIS的網(wǎng)絡(luò)適配器驅(qū)動程序稱為NDIS minport driver。

 

 
NDIS規(guī)范實現(xiàn)了與TDI標準類似的功能,都是將復雜的下層調(diào)用規(guī)范化、標準化,大大提高了Windows操作系統(tǒng)的可擴展性和兼容性。也表現(xiàn)在兩個方面:
?  對于下層,讓網(wǎng)絡(luò)適配器制造商很easy的開發(fā)自己的設(shè)備驅(qū)動程序,也就是Ndis miniport driver。這些miniport driver直接利用NDIS提供的接口發(fā)送指令,NDIS對這些格式化的指令進行解析,做進一步處理。(這些處理就到了HAL了)
?  對于上層,多個協(xié)議驅(qū)動程序與下層minport driver之間的通信,也都是通過統(tǒng)一的NDIS接口,NidsAllocatePacket,NdisSend等函數(shù)來收發(fā)數(shù)據(jù)。

廢話兩句:TDI和NDIS兩大接口規(guī)范,有力的提升了Windows操作系統(tǒng)對不同設(shè)備廠商的支持,降低了設(shè)備廠商對設(shè)備驅(qū)動程序開發(fā)的難度;也增加了對于不同網(wǎng)絡(luò)協(xié)議的支持,給用戶更強大的網(wǎng)絡(luò)功能支持。這種設(shè)計我們也可以在Windows存儲管理中看到,從中我們似乎可以了解到一些,Windows操作系統(tǒng)在商業(yè)上取得成功的原因。Linux操作系統(tǒng)中沒有這樣的驅(qū)動層次結(jié)構(gòu)。

設(shè)備制造商開發(fā)的Ndis miniport driver直接調(diào)用NDIS庫中的接口函數(shù),因此不需要考慮重入的問題,就是一個請求尚未結(jié)束的時候,新的請求又進來了。NDIS庫對請求進行了序列化,但是這種序列化也妨礙了多處理器的擴展性。所以NDIS5中提供了非序列化的操作項。下面,我來介紹一下,Deserialized和Serialized minport driver的區(qū)別:
Deserialized NDIS miniport driver自己序列化對MinportXxx函數(shù)的操作,排隊和管理多個并發(fā)請求的任務(wù)都由驅(qū)動程序自己來完成。而Serialized NDIS miniport driver以上的工作都是依賴于NDIS庫來完成的。從性能角度看,Deserialized NDIS miniport driver的性能是Serialized NDIS miniport driver性能的2倍多,所以到NDIS6.0之后的所有Miniport driver都是deserialize的。

 
以上是我參考MSDN以及自己的一些理解畫出來的windows網(wǎng)絡(luò)架構(gòu)圖,下面我就從上到下來簡單介紹一下其中的各個層。

 


1.  網(wǎng)絡(luò)應(yīng)用程,Network applicantion,用戶態(tài)的應(yīng)用程序調(diào)用Windows操作系統(tǒng)提供的網(wǎng)絡(luò)API,網(wǎng)絡(luò)API包括:
a)  Windows套接字(winsock)
b)  遠程過程調(diào)用RPC
c)  Web訪問API
d)  命名管道和郵件槽
e)  其他網(wǎng)絡(luò)API
這些API既可以在用戶模式下實現(xiàn),也可以同時在用戶模式和內(nèi)核模式下實現(xiàn)。從本質(zhì)上說這些API是下層提供接口的另一層封裝而已。
2.  TDI Clients,傳輸驅(qū)動程序接口客戶,是內(nèi)核模式的設(shè)備驅(qū)動程序,用于實現(xiàn)網(wǎng)絡(luò)API的內(nèi)核部分。將網(wǎng)絡(luò)API的請求轉(zhuǎn)換成IRP,通過TDI標準格式化后,發(fā)送給下層的協(xié)議驅(qū)動(也就是TDI傳輸器)。從sockets emulator的架構(gòu)圖看到,TDI Clients的實現(xiàn)可以有用戶態(tài)的部分,也有內(nèi)核態(tài)的部分。AFD輔助功能驅(qū)動程序通過向協(xié)議驅(qū)動程序發(fā)送TDI IRP來執(zhí)行網(wǎng)絡(luò)套接字操作,比如發(fā)送和接受消息。AFD沒有不是確定使用哪一個協(xié)議驅(qū)動,而是上層通知其要使用的協(xié)議名稱,然后AFD去打開相應(yīng)協(xié)議的設(shè)備對象。

 

 
3.  TDI Transport Providers、TDI傳輸器、NDIS協(xié)議驅(qū)動程序、協(xié)議驅(qū)動程序,所有這些其實就是指的同一個東西,我在后面就稱其為協(xié)議驅(qū)動程序。這個部分就是我們對某個協(xié)議的具體實現(xiàn)部分。做過網(wǎng)絡(luò)協(xié)議開發(fā)的朋友一定知道,協(xié)議其實就是雙發(fā)協(xié)商好的一套通信的規(guī)則。以IP協(xié)議為例,實際上就是對網(wǎng)絡(luò)數(shù)據(jù)的一種處理方式,根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包的解析結(jié)構(gòu),做出相應(yīng)的處理。Windows的tcpip.sys就實現(xiàn)了多個協(xié)議,ip、tcp、udp、arp、icmp、igmp,它為上層的TDI Clients提供了5個設(shè)備對象,用于訪問使用這些協(xié)議,TDI Clients打開這些設(shè)備對象,向其發(fā)送IRP請求來實現(xiàn)自己的操作。通過DDK的DeviceTree我們可以得到這些設(shè)備對象
a)  \Device\Rawip
b)  \Device\Tcp
c)  \Device\Udp
d)  \Device\IPMULTICAST
e)  \Device\Ip
協(xié)議驅(qū)動程序處理的數(shù)據(jù)是通過NDIS庫中提供的接口來獲取的,不需要發(fā)送IRP來取得。在DDK XP中提供了一個協(xié)議驅(qū)動程序了源程序Ndisuio,DDK XP后的版本提供的是Ndisport。在DriverEntry中我們可以看到,驅(qū)動程序一開始就注冊了一個NDIS_PROTOCOL_CHARACTERISTICS,這個結(jié)構(gòu)體中是一堆NdisXxxx函數(shù)。NDIS規(guī)范在這里就開始發(fā)揮它的作用了。
協(xié)議驅(qū)動程序的另一個作用就是監(jiān)聽網(wǎng)絡(luò)數(shù)據(jù),自己開發(fā)一個網(wǎng)絡(luò)協(xié)議通過Ndis API獲得所有的網(wǎng)絡(luò)數(shù)據(jù),但是不能夠攔截網(wǎng)絡(luò)數(shù)據(jù),因為其他協(xié)議驅(qū)動也可以通過Nids API獲取數(shù)據(jù)。一個典型的應(yīng)用就是Winpcap了,使用NPF.SYS來捕獲網(wǎng)絡(luò)數(shù)據(jù),并且做好充分緩沖處理,防止大數(shù)據(jù)量到來時出現(xiàn)數(shù)據(jù)包丟失的情況。詳情情節(jié)winpcap的開源代碼。
具體的協(xié)議驅(qū)動開發(fā)過程,我就不細述了,大家可以參看Ndisuio和DDK doc,我推薦boywhp的一篇文檔《NDIS協(xié)議驅(qū)動開發(fā)》給大家。
4.  NDIS,Network Driver Interface Specification,網(wǎng)絡(luò)協(xié)議接口標準。從圖中我們可以看到包裹在其中的兩個驅(qū)動程序,一個是NDIS intermediate driver,NDIS中間層驅(qū)動程序,另一個是NDIS minport driver,小端口驅(qū)動程序。下面簡單介紹一下這兩個驅(qū)動程序:
a)  Ndis intermediate driver,NDIS中間層驅(qū)動程序,對于上層的protocol driver它充當minport driver的作用,對于下層的minport driver它充當一個protocol driver的作用,所以在驅(qū)動程序DriverEntry中就注冊NDIS_PROTOCOL_CHARACTERISTICS和NDIS_MINIPORT_CHARACTERISTICS,使用protocol characteristics中NDIS API從miniport driver那里取得數(shù)據(jù)包,再用miniport characteristics的NDIS API向上層的protocol driver發(fā)送數(shù)據(jù)包。Nids intermediate driver最大的優(yōu)勢就是所有miniport driver的數(shù)據(jù)包都要通過它這里倒手給protocol driver,所以網(wǎng)絡(luò)防火墻就看上了這塊風水寶地。現(xiàn)在很多網(wǎng)絡(luò)防火墻都使用NDIS intermediate driver做數(shù)據(jù)包的過濾和攔截工作,過濾的規(guī)則設(shè)置到MPSendPackets,PTReceive,PTReceiveRacket這三個函數(shù)。具體開發(fā)過程請大家參考DDK提供的PassThru源代碼,www.ndis.com, 網(wǎng)上有很多相關(guān)的資料。
NDIS 6.0之后,filter driver就取代了Ndis intermediate driver,WDK中提供源碼。
b)  Ndis miniport driver一般是由設(shè)備廠商提供的,在DDK中也提供了miniport driver的一個例子e100bex,支持Intel EtherExpressTM PRO/100+ Ethernet PCI adapter 和Intel EtherExpressTM PRO/100B PCI adapter兩款網(wǎng)絡(luò)適配器。
5.  最后介紹一下總線,計算機總線有好幾種,USB總線、ISA總線、PCI總線、虛擬總線等,一般都是以PCI總線作為根總線,在Windows系統(tǒng)中其他的總線可以理解為PCI總線上的一個設(shè)備。PCI總線作為根總線,其傳輸速度較高,可以達到133MB/S,顯卡和網(wǎng)卡很多都是用PCI插槽。
PCI-ISA橋設(shè)備,也稱為南橋,實現(xiàn)了ISA總線與PCI總線的橋接, 南橋還包括終端、IDE、USB、DMA等控制器設(shè)備。其中USB-HOST設(shè)備實現(xiàn)了USB總線和PCI總線的橋接。HOST/PCI橋稱為北橋,是主處理器中心啊到基礎(chǔ)PCI局部總線。南橋和北橋組成了主板的芯片組,通過芯片的擴展實現(xiàn)了多種總線與基礎(chǔ)PCI局部總線的橋接。
總線驅(qū)動程序和PNP管理器實現(xiàn)了即插即用的功能,物理設(shè)備對象PDO就是由總線驅(qū)動程序產(chǎn)生的。

posted on 2011-02-22 14:48 shaker(太子) 閱讀(1178) 評論(0)  編輯 收藏 引用 所屬分類: C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美成年网站| 久久久久www| 亚洲欧美日韩国产综合| 欧美一区亚洲二区| 精品51国产黑色丝袜高跟鞋| 欧美 日韩 国产 一区| 亚洲视频视频在线| 欧美激情视频在线播放| 亚洲色图制服丝袜| 狠狠色香婷婷久久亚洲精品| 欧美理论电影在线播放| 欧美一区二区三区免费观看视频| 亚洲日本乱码在线观看| 国产精品福利在线观看网址| 欧美在线看片| 亚洲国产电影| 欧美一区二区三区视频免费播放| 午夜精品久久久久久99热软件| 亚洲人屁股眼子交8| 国内精品久久久| 国产伦精品一区二区三区四区免费 | 性8sex亚洲区入口| 亚洲国产婷婷香蕉久久久久久99| 久久成人资源| 亚洲夜晚福利在线观看| 亚洲精品久久久久久下一站| 一区二区三区在线视频播放| 亚洲日韩成人| 久久久精品999| 久久频这里精品99香蕉| 欧美在线综合视频| 免费高清在线视频一区·| 久久综合给合久久狠狠色| 欧美在线免费观看亚洲| 亚洲第一成人在线| 欧美一区二区三区日韩| 欧美精品日韩一本| 欧美日韩在线看| 国产精品国产a级| 亚洲第一精品夜夜躁人人躁| 伊人久久亚洲美女图片| 在线视频观看日韩| 欧美在线影院| 亚洲视频欧美视频| 欧美精品导航| 亚洲人线精品午夜| 免费观看30秒视频久久| 欧美一区激情| 国产欧美一区二区三区在线老狼 | 亚洲视频一二区| 欧美绝品在线观看成人午夜影视| 尤物yw午夜国产精品视频明星| 欧美在线观看一二区| 夜夜嗨av一区二区三区| 先锋影音网一区二区| 国产精品v欧美精品v日本精品动漫 | 在线视频欧美一区| 久久黄色小说| 亚洲高清资源综合久久精品| 久久久久国产免费免费| 狠狠综合久久| 午夜久久影院| 欧美不卡高清| 99在线观看免费视频精品观看| 久久五月天婷婷| 欧美日韩岛国| 欧美一区二区三区精品| 亚洲在线播放电影| 久久久久久久一区| 国语自产精品视频在线看抢先版结局 | 亚洲精品一区中文| 亚洲综合视频一区| 欧美69wwwcom| 另类av一区二区| 国产精品r级在线| 亚洲欧美欧美一区二区三区| 免费成人你懂的| 蜜桃久久精品乱码一区二区| 国产精品夜色7777狼人| 亚洲国产老妈| 久久精品成人| 久久一本综合频道| 亚洲精品久久久久久久久久久| 亚洲国产三级| 国产精品久久久久毛片软件| 日韩视频中文字幕| 久久亚洲私人国产精品va| 久久久噜噜噜久久久| 亚洲电影中文字幕| 欧美一区二区在线免费观看| 亚洲欧美国产精品va在线观看 | 亚洲理论电影网| 久久免费视频一区| 日韩视频在线一区二区| 亚洲欧美日韩另类| 91久久久久久| 亚洲一区二区精品在线观看| 在线日韩成人| 在线亚洲观看| 亚洲黄色免费电影| 香蕉久久一区二区不卡无毒影院| 亚洲国产日韩精品| 亚洲欧美一区二区激情| 亚洲精品网站在线播放gif| 亚洲欧美日韩精品久久久久| 日韩一级网站| 久久―日本道色综合久久| 亚洲一区国产| 蜜桃av噜噜一区| 久久久7777| 国产精品免费小视频| 亚洲国产成人高清精品| 国内揄拍国内精品久久| 亚洲无限av看| 国产午夜精品在线观看| 久久9热精品视频| 欧美乱妇高清无乱码| 久久偷窥视频| 国产精品v片在线观看不卡| 亚洲成色www8888| 欧美日韩国产综合久久| 另类图片综合电影| 欧美多人爱爱视频网站| 亚洲福利电影| 久久一区二区视频| 国产伦精品一区二区三区视频黑人| 亚洲日韩视频| 亚洲国产影院| 免费观看久久久4p| 农村妇女精品| 在线观看91精品国产入口| 欧美中文字幕第一页| 久久成人18免费观看| 国产精品一区视频| 亚洲自拍偷拍色片视频| 性xx色xx综合久久久xx| 久久国产精品久久久久久| 亚洲国内自拍| 久久综合伊人77777蜜臀| 麻豆成人av| 亚洲第一福利在线观看| 免费黄网站欧美| 亚洲国产婷婷香蕉久久久久久99 | 黑丝一区二区三区| 久久精精品视频| 美女任你摸久久| 亚洲承认在线| 欧美精品 国产精品| 亚洲精品欧洲| 午夜伦理片一区| 国产一区二区三区不卡在线观看| 欧美国产一区二区在线观看| 在线免费不卡视频| 欧美成人xxx| 亚洲精品一区二区三区蜜桃久| 亚洲视频欧美在线| 国产日韩欧美综合| 美女尤物久久精品| 99热精品在线观看| 久久精品99久久香蕉国产色戒| 黄色精品一二区| 欧美日韩国产不卡在线看| 亚洲免费小视频| 欧美大片一区| 国产视频在线观看一区二区| 久久国产精品久久w女人spa| 亚洲国产成人91精品| 亚洲视频一区二区| 国内精品久久久久影院色 | 欧美激情一区二区三区在线| 99国产麻豆精品| 国内久久视频| 欧美三级日本三级少妇99| 亚洲国产日韩欧美在线动漫| 亚洲手机视频| 狠狠久久五月精品中文字幕| 欧美日韩99| 久久国产视频网站| 在线视频亚洲欧美| 亚洲第一成人在线| 久久福利视频导航| 在线中文字幕一区| 亚洲国产精品精华液网站| 国产精品乱码人人做人人爱| 狂野欧美一区| 午夜精品久久久久久久久久久久| 91久久精品日日躁夜夜躁欧美| 欧美电影打屁股sp| 国产午夜精品全部视频在线播放 | 一区二区三区国产在线观看| 国色天香一区二区| 国产精品免费观看在线| 欧美国产日韩一二三区| 欧美激情在线免费观看| 欧美一区二区三区喷汁尤物| 亚洲精品一区在线观看香蕉| 国产亚洲视频在线观看| 国产精品久久久久国产精品日日 | 亚洲女女做受ⅹxx高潮| 91久久午夜|