Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹.doc

Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹.doc

ID:61499074

大?。?2.50 KB

頁數(shù):13頁

時(shí)間:2021-02-07

Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹.doc_第1頁
Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹.doc_第2頁
Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹.doc_第3頁
Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹.doc_第4頁
Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹.doc_第5頁
資源描述:

《Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序介紹,(安徽建筑工業(yè)學(xué)院電子與信息工程學(xué)院通信工程2班)摘要:Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序是Linux網(wǎng)絡(luò)應(yīng)用的重要組成部分。本文詳細(xì)分析了Linux內(nèi)核中網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的運(yùn)行機(jī)理,并著重介紹了實(shí)現(xiàn)Linux網(wǎng)絡(luò)驅(qū)動(dòng)程序的關(guān)鍵過程,最后給出了一種實(shí)現(xiàn)模式和具體實(shí)例。關(guān)鍵詞:Linux操作系統(tǒng);網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序;內(nèi)核;模塊Linuxnetworkdevicedriverdescription,(07CommunicationEngineering2Course,,ElectronicandInformationEngineering,AnhuiUniversityo

2、fArchitecture,,China)Abstract:LinuxNetworkLinuxnetworkdevicedriverisanimportantpartoftheapplication.ThispaperanalyzestheLinuxkernelnetworkdevicedriverrunningmechanism,withanemphasisonLinuxnetworkdriverstoachievethekeyprocesses,andfinallyanimplementationmodelandgivenspecificexamples.Keywords:Linuxo

3、peratingsystem;networkdevicedriver;kernel;module0引言1驅(qū)動(dòng)程序設(shè)計(jì)原理1.1體系結(jié)構(gòu)1.2初始化1.3數(shù)據(jù)包的發(fā)送與接收2實(shí)現(xiàn)模式3LINUX系統(tǒng)下的設(shè)備驅(qū)動(dòng)程序3.1入口點(diǎn)結(jié)構(gòu)3.2入口點(diǎn)位置3.3LINUX系統(tǒng)下的具體實(shí)現(xiàn)4應(yīng)用實(shí)例4.1模塊加載和卸載4.2網(wǎng)絡(luò)接口初始化4.3網(wǎng)絡(luò)接口設(shè)備的打開和關(guān)閉4.4數(shù)據(jù)包的接收和發(fā)送5結(jié)束語0引言Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序是Linux網(wǎng)絡(luò)應(yīng)用中一個(gè)重要的組成部分,分析其運(yùn)行機(jī)理,對(duì)于設(shè)計(jì)Linux網(wǎng)絡(luò)應(yīng)用程序很有幫助。因?yàn)橛袝r(shí)需要我們在網(wǎng)絡(luò)驅(qū)動(dòng)程序這一層次做應(yīng)用開發(fā),例如,設(shè)計(jì)Linux防火墻和

4、網(wǎng)絡(luò)入侵檢測系統(tǒng)時(shí),可以在網(wǎng)絡(luò)驅(qū)動(dòng)程序的基礎(chǔ)上攔截網(wǎng)絡(luò)數(shù)據(jù)包,繼而對(duì)其進(jìn)行分析。本文將就Linux內(nèi)核中的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序部分進(jìn)行討論,并介紹實(shí)現(xiàn)Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的方法。1驅(qū)動(dòng)程序設(shè)計(jì)原理1.1體系結(jié)構(gòu)Linux網(wǎng)絡(luò)驅(qū)動(dòng)程序的體系結(jié)構(gòu)可以劃分為四層(參見圖1),從上到下分別為網(wǎng)絡(luò)協(xié)議接口層、網(wǎng)絡(luò)設(shè)備接口層、提供實(shí)際功能的設(shè)備驅(qū)動(dòng)功能層,以及網(wǎng)絡(luò)設(shè)備和網(wǎng)絡(luò)媒介層。我們在設(shè)計(jì)網(wǎng)絡(luò)驅(qū)動(dòng)程序時(shí),最主要的工作就是完成設(shè)備驅(qū)動(dòng)功能層,使其滿足我們所需的功能。在Linux中所有網(wǎng)絡(luò)設(shè)備都抽象為一個(gè)接口,這個(gè)接口提供了對(duì)所有網(wǎng)絡(luò)設(shè)備的操作集合。由數(shù)據(jù)結(jié)構(gòu)structdevice來表示網(wǎng)絡(luò)設(shè)備在內(nèi)

5、核中的運(yùn)行情況,即網(wǎng)絡(luò)設(shè)備接口。它既包括純軟件網(wǎng)絡(luò)設(shè)備接口,如環(huán)路(Loopback),也包括硬件網(wǎng)絡(luò)設(shè)備接口,如以太網(wǎng)卡。而由以dev_base為頭指針的設(shè)備鏈表來集體管理所有網(wǎng)絡(luò)設(shè)備,該設(shè)備鏈表中的每個(gè)元素代表一個(gè)網(wǎng)絡(luò)設(shè)備接口。數(shù)據(jù)結(jié)構(gòu)device中有很多供系統(tǒng)訪問和協(xié)議層調(diào)用的設(shè)備方法,包括供設(shè)備初始化和系統(tǒng)注冊用的init函數(shù),打開和關(guān)閉網(wǎng)絡(luò)設(shè)備的open和stop函數(shù),處理數(shù)據(jù)包發(fā)送的hard_start_xmit函數(shù),以及中斷處理函數(shù)等。有關(guān)device數(shù)據(jù)結(jié)構(gòu)(在內(nèi)核中就是net_device)的詳細(xì)內(nèi)容,可以參看/linux/include/linux/netdevice.

6、h。1.2初始化網(wǎng)絡(luò)設(shè)備的初始化主要由device數(shù)據(jù)結(jié)構(gòu)中的init函數(shù)指針?biāo)赶虻某跏蓟瘮?shù)來完成,當(dāng)內(nèi)核啟動(dòng)或加載網(wǎng)絡(luò)驅(qū)動(dòng)模塊的時(shí)候,就會(huì)調(diào)用這個(gè)初始化函數(shù)。在初始化函數(shù)中通過檢測物理設(shè)備的硬件特征來偵測網(wǎng)絡(luò)物理設(shè)備是否存在,然后再對(duì)設(shè)備進(jìn)行資源配置,接下來構(gòu)造設(shè)備的device數(shù)據(jù)結(jié)構(gòu),并用檢測到的數(shù)據(jù)對(duì)device中的變量初始化,最后向Linux內(nèi)核注冊該設(shè)備并申請(qǐng)內(nèi)存空間。1.3數(shù)據(jù)包的發(fā)送與接收數(shù)據(jù)包的發(fā)送和接收是實(shí)現(xiàn)Linux網(wǎng)絡(luò)驅(qū)動(dòng)程序中兩個(gè)最關(guān)鍵的過程,對(duì)這兩個(gè)過程處理的好壞將直接影響到驅(qū)動(dòng)程序的整體運(yùn)行質(zhì)量。在網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)加載時(shí),通過device域中的init函數(shù)指針

7、調(diào)用網(wǎng)絡(luò)設(shè)備的初始化函數(shù)對(duì)設(shè)備進(jìn)行初始化,如果操作成功再通過device域中的open函數(shù)指針調(diào)用網(wǎng)絡(luò)設(shè)備的打開函數(shù)打開設(shè)備,并通過device域中建立硬件包頭函數(shù)指針hard_header來建立硬件包頭信息。最后通過協(xié)議接口層函數(shù)dev_queue_xmit(參見/linux/net/core/dev.c)來調(diào)用device域中的hard_start_xmit函數(shù)指針完成數(shù)據(jù)包的發(fā)送。該函數(shù)把存放在套接字緩沖區(qū)中的數(shù)據(jù)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。