網(wǎng)絡(luò)設(shè)備驅(qū)動程序分析與設(shè)計(jì)_第1頁
網(wǎng)絡(luò)設(shè)備驅(qū)動程序分析與設(shè)計(jì)_第2頁
網(wǎng)絡(luò)設(shè)備驅(qū)動程序分析與設(shè)計(jì)_第3頁
網(wǎng)絡(luò)設(shè)備驅(qū)動程序分析與設(shè)計(jì)_第4頁
網(wǎng)絡(luò)設(shè)備驅(qū)動程序分析與設(shè)計(jì)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議圖11-1TCP/IP協(xié)議分層結(jié)構(gòu)圖目前一頁\總數(shù)二十二頁\編于九點(diǎn)11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議(1)TCP(TransferControlProtocol)傳輸控制協(xié)議TCP協(xié)議是基于連接的協(xié)議,在需要通信的兩個應(yīng)用程序之間建立起一條虛擬的連接線路,而這條線路間可能會經(jīng)過很多子網(wǎng)、網(wǎng)關(guān)和路由器。TCP協(xié)議保證在兩個應(yīng)用程序之間可靠地傳送和接收數(shù)據(jù),并且可以保證沒有丟失的或者重復(fù)的數(shù)據(jù)包。(2)UDP(UserDatagramProtocol)用戶數(shù)據(jù)包協(xié)議UDP協(xié)議是一種無連接、不可靠的傳輸層協(xié)議。使用該協(xié)議只是把應(yīng)用程序傳來的數(shù)據(jù)加上UDP頭包括端口號、段長等字段,作為UDP數(shù)據(jù)包發(fā)送出去,但并不保證數(shù)據(jù)包能到達(dá)目的地,其可靠性由應(yīng)用層來提供。目前二頁\總數(shù)二十二頁\編于九點(diǎn)11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議(3)IP(InternetProtocol)網(wǎng)際協(xié)議①版本:占4比特,指IP協(xié)議的版本。。②首部長度:占4比特,數(shù)據(jù)據(jù)包包頭的長度。以32位(相當(dāng)于4字節(jié))長度為單位。③服務(wù)類型:占8比特,主機(jī)要求通信子網(wǎng)提供的服務(wù)類型。包括一個3比特長度的優(yōu)先級,4個標(biāo)志位D、T、R和C,其中D、T、R、C分別表示延遲、呑吐量、可靠性和代價,另外1比特未用。目前三頁\總數(shù)二十二頁\編于九點(diǎn)11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議(3)IP(InternetProtocol)網(wǎng)際協(xié)議④總長度:占16比特,數(shù)據(jù)報(bào)的總長度,包括頭部和數(shù)據(jù),以字節(jié)為單位。數(shù)據(jù)報(bào)的最大長度為2^161字節(jié),即65535字節(jié)。⑤標(biāo)識:占16比特,標(biāo)識數(shù)據(jù)報(bào)。當(dāng)數(shù)據(jù)報(bào)長度超出網(wǎng)絡(luò)最大傳輸單元(MTU)時,必須進(jìn)行分割,并且需要為分割段(fragment)提供標(biāo)識。所有屬于同一數(shù)據(jù)報(bào)的分割段被賦予相同的標(biāo)識值。目前四頁\總數(shù)二十二頁\編于九點(diǎn)11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議(3)IP(InternetProtocol)網(wǎng)際協(xié)議⑥標(biāo)志:占3比特,指出該數(shù)據(jù)報(bào)是否可分段。目前只有前兩個比特有意義。⑦片偏移:占13比特,若有分段時,用以指出該分段在數(shù)據(jù)報(bào)中的相對位置。片偏移以8字節(jié)為偏移單位,即每個分片的長度一定是8字節(jié)(64位)的整數(shù)倍。⑧生存時間或生命期:占8比特,記為TTL(TimeToLive),即數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中的壽命,生存時間每經(jīng)過一個路由結(jié)點(diǎn)都要遞減,當(dāng)生存時間減到零時,分組就要被丟棄。目前五頁\總數(shù)二十二頁\編于九點(diǎn)11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議(3)IP(InternetProtocol)網(wǎng)際協(xié)議⑨協(xié)議:占8比特,指示傳輸層所采用的協(xié)議,如TCP、UDP或ICMP等。⑽首部校驗(yàn)和:占16比特,此字段只檢驗(yàn)數(shù)據(jù)報(bào)的首部,不包括數(shù)據(jù)部分。⑾任選字段:支持各種選項(xiàng),提供擴(kuò)展余地。根據(jù)選項(xiàng)的不同,該字段是可變長的,從1字節(jié)到40字節(jié),可用來支持排錯、測量以及安全等措施。⑿IP地址:占32比特,32位的源地址與目的地址分別指出源主機(jī)和目的主機(jī)的網(wǎng)絡(luò)地址。目前六頁\總數(shù)二十二頁\編于九點(diǎn)11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議(4)ARP(AddressResolutionProtocol)地址解析協(xié)議ARP協(xié)議實(shí)現(xiàn)了從IP地址到對應(yīng)物理地址的轉(zhuǎn)換。希望把IP地址翻譯成硬件地址的主機(jī)使用廣播地址向網(wǎng)絡(luò)中的所有節(jié)點(diǎn)發(fā)送一個包括IP地址的ARP請求數(shù)據(jù)包,目的主機(jī)的ARP收到這份廣播報(bào)文后,識別出這是發(fā)送端在詢問它的IP地址,于是發(fā)送一個包含目的主機(jī)IP地址及對應(yīng)的MAC地址的ARP應(yīng)答給源主機(jī)。為了加快ARP協(xié)議解析的數(shù)據(jù),每臺主機(jī)上都有一個ARP高速緩存,存放最近的IP地址到硬件地址之間的映射記錄。這樣,當(dāng)在ARP的生存時間之內(nèi)連續(xù)進(jìn)行ARP解析的時候,就不需要反復(fù)發(fā)送ARP請求了。目前七頁\總數(shù)二十二頁\編于九點(diǎn)11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議(5)SLIP(SerialLineInternetProtocol)串行線路網(wǎng)際協(xié)議用戶接入Internet,在傳送數(shù)據(jù)時都需要有數(shù)據(jù)鏈路層協(xié)議,其中最為廣泛的是串行線路網(wǎng)際協(xié)議(SLIP)和點(diǎn)對點(diǎn)協(xié)議(PPP)。SLIP是一種在串行線路上對IP數(shù)據(jù)報(bào)進(jìn)行封裝的簡單形式,該協(xié)議是Windows遠(yuǎn)程訪問的一種舊工業(yè)標(biāo)準(zhǔn),主要在Unix遠(yuǎn)程訪問服務(wù)器中使用,現(xiàn)今仍然用于連接某些ISP。因?yàn)镾LIP協(xié)議是面向低速串行線路的,可以用于專用線路,也可以用于撥號線路,Modem的傳輸速率在1200bps到19200bps。目前八頁\總數(shù)二十二頁\編于九點(diǎn)11.1以太網(wǎng)概述11.1TCP/IP網(wǎng)絡(luò)協(xié)議(6)PPP(PointtoPointProtocol)點(diǎn)對點(diǎn)協(xié)議PPP是面向字符類型的協(xié)議。PPP具有處理錯誤檢測、支持多個協(xié)議、允許在連接時刻協(xié)商IP地址、允許身份認(rèn)證等功能。圖11-3PPP幀格式目前九頁\總數(shù)二十二頁\編于九點(diǎn)11.2以太網(wǎng)以太網(wǎng)拓?fù)浣Y(jié)構(gòu)總線拓?fù)涞膬?yōu)點(diǎn)是:電纜長度短,易于布線和維護(hù);結(jié)構(gòu)簡單,傳輸介質(zhì)又是無源元件,從硬件的角度看,十分可靠??偩€拓?fù)涞娜秉c(diǎn)是:因?yàn)榭偩€拓?fù)涞木W(wǎng)不是集中控制的,所以故障檢測需要在網(wǎng)上的各個站點(diǎn)上進(jìn)行;在擴(kuò)展總線的干線長度時,需重新配置中繼器、剪裁電纜、調(diào)整終端器等;總線上的站點(diǎn)需要介質(zhì)訪問控制功能,這就增加了站點(diǎn)的硬件和軟件費(fèi)用。目前十頁\總數(shù)二十二頁\編于九點(diǎn)11.2以太網(wǎng)以太網(wǎng)協(xié)議以太網(wǎng)采用載波監(jiān)聽沖突檢測CSMA/CD,其工作原理是:發(fā)送數(shù)據(jù)前先監(jiān)聽信道是否空閑,若空閑,則立即發(fā)送數(shù)據(jù)。在發(fā)送數(shù)據(jù)時,邊發(fā)送邊繼續(xù)監(jiān)聽,若監(jiān)聽到?jīng)_突,則立即停止發(fā)送數(shù)據(jù),這種在傳輸?shù)倪^程中監(jiān)測電纜的方法稱為沖突檢測。CSMA/CD不僅僅只檢測沖突,它也能從沖突中恢復(fù)。在一個沖突發(fā)生后,計(jì)算機(jī)必須等待電纜再次空閑后才能傳輸幀。然而,如果以太網(wǎng)一空閑計(jì)算機(jī)就開始傳輸,那么另一次沖突就會發(fā)生。為了防止多次沖突,以太網(wǎng)要求每臺計(jì)算機(jī)在沖突后延遲一段時間才嘗試傳輸。標(biāo)準(zhǔn)指定了最大延遲d,并且要求每臺計(jì)算機(jī)選擇一個小于d的隨機(jī)延遲。目前十一頁\總數(shù)二十二頁\編于九點(diǎn)11.2以太網(wǎng)以太網(wǎng)幀結(jié)構(gòu)同步位:由8個(以太網(wǎng)幀)或7個(IEEE802.3)字節(jié)的交替出現(xiàn)的1和0組成,設(shè)置該字段的目的是指示幀的開始并便于網(wǎng)絡(luò)中的所有接收器均能與到達(dá)幀同步。幀首定界符(SOF):該字段僅在IEEE802.3標(biāo)準(zhǔn)中有效,它可以被看作前序字段的延續(xù)。目標(biāo)和源地址:表示發(fā)送和接收幀的工作站的地址,各占6個字節(jié)。目前十二頁\總數(shù)二十二頁\編于九點(diǎn)11.2以太網(wǎng)以太網(wǎng)幀結(jié)構(gòu)類型:僅存在于以太網(wǎng)幀中,占用2個字節(jié),指定接收數(shù)據(jù)的高層協(xié)議。長度:存在于IEEE802.3幀中,表示緊隨其后的以字節(jié)為單位的數(shù)據(jù)段的長度。數(shù)據(jù):數(shù)據(jù)段長度不能超過1500字節(jié),不能低于46字節(jié)。幀校驗(yàn)序列(FSC):該序列包含長度為4個字節(jié)的循環(huán)冗余校驗(yàn)值(CRC),由發(fā)送設(shè)備計(jì)算產(chǎn)生,在接收方被重新計(jì)算,以確定幀在傳送過程中是否被損壞。目前十三頁\總數(shù)二十二頁\編于九點(diǎn)11.3嵌入式網(wǎng)絡(luò)接口網(wǎng)卡工作在網(wǎng)絡(luò)OSI模型的最后兩層,物理層和數(shù)據(jù)鏈路層。物理層定義了數(shù)據(jù)傳送與接收所需要的電與光信號、線路狀態(tài)、時鐘基準(zhǔn)、數(shù)據(jù)編碼和電路等,并向數(shù)據(jù)鏈路層設(shè)備提供標(biāo)準(zhǔn)接口。物理層的芯片稱之為PHY。數(shù)據(jù)鏈路層則提供尋址機(jī)構(gòu)、數(shù)據(jù)幀的構(gòu)建、數(shù)據(jù)差錯檢查、傳送控制、向網(wǎng)絡(luò)層提供標(biāo)準(zhǔn)的數(shù)據(jù)接口等功能。以太網(wǎng)卡中數(shù)據(jù)鏈路層的芯片稱之為MAC控制器。目前十四頁\總數(shù)二十二頁\編于九點(diǎn)11.3嵌入式網(wǎng)絡(luò)接口1、內(nèi)置網(wǎng)絡(luò)的微處理器將微控制器、以太網(wǎng)媒體接入控制器(MAC)和物理接口收發(fā)器(PHY)整合進(jìn)同一芯片,這樣能去掉許多外接元器件。這種方案可使MAC和PHY實(shí)現(xiàn)很好的匹配,同時還可減小引腳數(shù)、縮小芯片面積。2、通過以太網(wǎng)芯片擴(kuò)充網(wǎng)絡(luò)(1)RTL8019RTL8019AS是一種全雙工即插即用的以太網(wǎng)控制器,它在一塊芯片上集成了RTL8019內(nèi)核和一個16KB的SDRAM存儲器。目前十五頁\總數(shù)二十二頁\編于九點(diǎn)11.3嵌入式網(wǎng)絡(luò)接口2、通過以太網(wǎng)芯片擴(kuò)充網(wǎng)絡(luò)(2)CS8900CS8900A是CIRRUSLOGIC公司生產(chǎn)的低功耗、性能優(yōu)越的16位以太網(wǎng)控制器,功能強(qiáng)大。該芯片的突出特點(diǎn)是使用靈活,其物理層接口、數(shù)據(jù)傳輸模式和工作模式等都能根據(jù)需要而動態(tài)調(diào)整,通過內(nèi)部寄存器的設(shè)置來適應(yīng)不同的應(yīng)用環(huán)境。(3)ENC28J60ENC28J60是MicrochipTechnology(美國微芯科技公司)近期推出的28引腳獨(dú)立以太網(wǎng)控制器。(4)DM9000DM9000是一款完全集成、符合成本效益單芯片快速以太網(wǎng)MAC控制器與一般處理接口,一個10/100M自適應(yīng)的PHY和4KDWORD值的SRAM。目前十六頁\總數(shù)二十二頁\編于九點(diǎn)11.4嵌入式Linux網(wǎng)絡(luò)驅(qū)動11.4.1Linux網(wǎng)絡(luò)設(shè)備驅(qū)動程序的體系結(jié)構(gòu)目前十七頁\總數(shù)二十二頁\編于九點(diǎn)11.4嵌入式Linux網(wǎng)絡(luò)驅(qū)動11.4.2網(wǎng)絡(luò)驅(qū)動程序的基本方法(1)初始化(initialize)驅(qū)動程序必須有一個初始化方法。在把驅(qū)動程序載入系統(tǒng)的時候會調(diào)用這個初始化程序。它做以下幾方面的工作。檢測設(shè)備。在初始化程序里你可以根據(jù)硬件的特征檢查硬件是否存在,然后決定是否啟動這個驅(qū)動程序。(2)打開(open)open這個方法在網(wǎng)絡(luò)設(shè)備驅(qū)動程序里是網(wǎng)絡(luò)設(shè)備被激活的時候被調(diào)用(即設(shè)備狀態(tài)由down-->up)。(3)關(guān)閉(stop)close方法做和open相反的工作??梢葬尫拍承┵Y源以減少系統(tǒng)負(fù)擔(dān)。close是在設(shè)備狀態(tài)由up轉(zhuǎn)為down時被調(diào)用的。目前十八頁\總數(shù)二十二頁\編于九點(diǎn)11.4嵌入式Linux網(wǎng)絡(luò)驅(qū)動11.4.2網(wǎng)絡(luò)驅(qū)動程序的基本方法(4)發(fā)送(hard_start_xmit)所有的網(wǎng)絡(luò)設(shè)備驅(qū)動程序都必須有這個發(fā)送方法。在系統(tǒng)調(diào)用驅(qū)動程序的xmit時,發(fā)送的數(shù)據(jù)放在一個sk_buff結(jié)構(gòu)中。一般的驅(qū)動程序把數(shù)據(jù)傳給硬件發(fā)出去。也有一些特殊的設(shè)備比如loopback把數(shù)據(jù)組成一個接收數(shù)據(jù)再回送給系統(tǒng),或者dummy設(shè)備直接丟棄數(shù)據(jù)。(5)接收(reception)驅(qū)動程序并不存在一個接收方法。有數(shù)據(jù)收到應(yīng)該是驅(qū)動程序來通知系統(tǒng)的。一般設(shè)備收到數(shù)據(jù)后都會產(chǎn)生一個中斷,在中斷處理程序中驅(qū)動程序申請一塊sk_buff(skb),從硬件讀出數(shù)據(jù)放置到申請好的緩沖區(qū)里。接下來填充sk_buff中的一些信息。skb->dev=dev,判斷收到幀的協(xié)議類型,填入skb->protocol(多協(xié)議的支持)。目前十九頁\總數(shù)二十二頁\編于九點(diǎn)11.4嵌入式Linux網(wǎng)絡(luò)驅(qū)動11.4.2網(wǎng)絡(luò)驅(qū)動程序的基本方法(6)硬件幀頭(hard_header)硬件一般都會在上層數(shù)據(jù)發(fā)送之前加上自己的硬件幀頭,比如以太網(wǎng)(Ethernet)就有14字節(jié)的幀頭。這個幀頭是加在上層ip、ipx等數(shù)據(jù)包的前面的。驅(qū)動程序提供一個hard_header方法,協(xié)議層(ip、ipx、arp等)在發(fā)送數(shù)據(jù)之前會調(diào)用這段程序。(7)地址解析(xarp)(8)參數(shù)設(shè)置和統(tǒng)計(jì)數(shù)據(jù)在驅(qū)動程序里還提供一些方法供系統(tǒng)對設(shè)備的參數(shù)進(jìn)行設(shè)置和讀取信息。一般只有超級用戶(root)權(quán)限才能對設(shè)備參數(shù)進(jìn)行設(shè)置。目前二十頁\總數(shù)二十二頁\編于九點(diǎn)11.4嵌入式Linux網(wǎng)絡(luò)驅(qū)動11.4.3網(wǎng)絡(luò)驅(qū)動中主要的數(shù)據(jù)結(jié)構(gòu)(1)net_device數(shù)據(jù)結(jié)構(gòu)

structnet_device結(jié)構(gòu)體是整個網(wǎng)絡(luò)驅(qū)動結(jié)構(gòu)的核心,其中定義了很多供網(wǎng)絡(luò)協(xié)議接口層調(diào)用設(shè)備的標(biāo)準(zhǔn)方法,供操作系統(tǒng)或協(xié)議層調(diào)用,該結(jié)構(gòu)在2.6內(nèi)核源碼樹文件中定義,在內(nèi)核目錄的/include/linux/netdevice.h,其英文注釋非常詳細(xì),其整

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論