版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
用戶空間和內核空間通訊之Netlink引言AlanCox在內核1.3版本的開發階段最先引入了Netlink,剛開始時Netlink是以字符驅動接口的方式提供內核與用戶空間的雙向數據通信;隨后,在2.1內核開發過程中,AlexeyKuznetsov將Netlink改寫成一個更加靈活、且易于擴展的基于消息通信接口,并將其應用到高級路由子系統的基礎框架里。自那時起,Netlink就成了Linux內核子系統和用戶態的應用程序通信的主要手段之一。2001年,ForCESIETF委員會正式對Netlink進行了標準化的工作。JamalHadiSalim提議將Netlink定義成一種用于網絡設備的路由引擎組件和其控制管理組件之間通信的協議。不過他的建議最終沒有被采納,取而代之的是我們今天所看到的格局:Netlink被設計成一個新的協議域,domain。Linux之父托瓦斯曾說過“Linuxisevolution,notintelligentdesign”。什么意思?就是說,Netlink也同樣遵循了Linux的某些設計理念,即沒有完整的規范文檔,亦沒有設計文檔。只有什么?你懂得---“Readthef**kingsourcecode”。當然,本文不是分析Netlink在Linux上的實現機制,而是就“什么是Netlink”以及“如何用好Netlink”的話題和大家做個分享,只有在遇到問題時才需要去閱讀內核源碼弄清個所以然。<spanstyle="font-size:10.5pt;mso-bidi-font-size:11.0pt;font-family:宋體;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:">什么是Netlink關于Netlink的理解,需要把握幾個關鍵點:1、面向數據報的無連接消息子系統2、基于通用的BSDSocket架構而實現關于第一點使我們很容易聯想到UDP協議,能想到這一點就非常棒了。按著UDP協議來理解Netlink不是不無道理,只要你能觸類旁通,做到“活學”,善于總結歸納、聯想,最后實現知識遷移這就是學習的本質。Netlink可以實現內核->用戶以及用戶->內核的雙向、異步的數據通信,同時它還支持兩個用戶進程之間、甚至兩個內核子系統之間的數據通信。本文中,對后兩者我們不予考慮,焦點集中在如何實現用戶<->內核之間的數據通信。看到第二點腦海中是不是瞬間閃現了下面這張圖片呢?如果是,則說明你確實有慧根;當然,不是也沒關系,慧根可以{__u32nlmsg_len;/*Lengthofmessageincludingheader*/__u16nlmsg_type;/*Messagecontent*/__u16nlmsg_flags;/*Additionalflags*/__u32nlmsg_seq;/*Sequencenumber*/__u32nlmsg_pid;/*SendingprocessPID*/};消息頭中各成員屬性的解釋及說明:nlmsg_type:消息的類型,即是數據還是控制消息。目前(內核版本2.6.21)Netlink僅支持四種類型的控制消息,如下:NLMSG_NOOP-空消息,什么也不做;NLMSG_ERROR-指明該消息中包含一個錯誤;NLMSG_DONE-如果內核通過Netlink隊列返回了多個消息,那么隊列的最后一條消息的類型為NLMSG_DONE,其余所有消息的nlmsg_flags屬性都被設置NLM_F_MULTI位有效。NLMSG_OVERRUN-暫時沒用到。nlmsg_flags:附加在消息上的額外說明信息,如上面提到的NLM_F_MULTI。摘錄如下:<tableclass="MsoTableGrid"style="border-collapse:collapse;border:none;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm5.4pt0cm5.4pt"border="1"cellpadding="0"cellspacing="0">標記<tdstyle="width:340.45pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-left:none;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">作用及說明<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:none;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="114">NLM_F_REQUEST<tdstyle="width:340.45pt;border-top:none;border-left:none;border-bottom:solidblack1.0pt;mso-border-bottom-themecolor:text1;border-right:solidblack1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">如果消息中有該標記位,說明這是一個請求消息。所有從用戶空間到內核空間的消息都要設置該位,否則內核將向用戶返回一個EINVAL無效參數的錯誤<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:none;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="114">NLM_F_MULTI<tdstyle="width:340.45pt;border-top:none;border-left:none;border-bottom:solidblack1.0pt;mso-border-bottom-themecolor:text1;border-right:solidblack1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">消息從用戶->內核是同步的立刻完成,而從內核->用戶則需要排隊。如果內核之前收到過來自用戶的消息中有NLM_F_DUMP位為1的消息,那么內核就會向用戶空間發送一個由多個Netlink消息組成的鏈表。除了最后個消息外,其余每條消息中都設置了該位有效。<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:none;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="114">NLM_F_ACK<tdstyle="width:340.45pt;border-top:none;border-left:none;border-bottom:solidblack1.0pt;mso-border-bottom-themecolor:text1;border-right:solidblack1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">該消息是內核對來自用戶空間的NLM_F_REQUEST消息的響應<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:none;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="114">NLM_F_ECHO<tdstyle="width:340.45pt;border-top:none;border-left:none;border-bottom:solidblack1.0pt;mso-border-bottom-themecolor:text1;border-right:solidblack1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:solidblack.5pt;mso-border-top-themecolor:text1;mso-border-left-alt:solidblack.5pt;mso-border-left-themecolor:text1;mso-border-alt:solidblack.5pt;mso-border-themecolor:text1;padding:0cm5.4pt0cm5.4pt"valign="top"width="454">如果從用戶空間發給內核的消息中該標記為1,則說明用戶的應用進程要求內核將用戶發給它的每條消息通過單播的形式再發送給用戶進程。和我們通常說的“回顯”功能類似。<tdstyle="width:85.65pt;border:solidblack1.0pt;mso-border-themecolor:text1;border-top:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供熱管網系統運行工崗中應急綜合考核試卷含答案
- 油鋸工崗中理論知識考核試卷含答案
- 戲鞋工安全宣教強化考核試卷含答案
- 表面(化學)熱處理工崗位適應能力模擬考核試卷含答案
- 芳烴抽提裝置操作工崗前內部控制考核試卷含答案
- 烷基苯裝置操作工崗中團隊建設考核試卷含答案
- 陽極爐工安全技能考核試卷含答案
- MA專業就業機會
- 2026年度護理人員麻精藥品使用管理試題及答案
- 公司企業三八婦女節活動方案策劃
- 大客戶制管理辦法
- 旅游直播培訓課件
- 既有建筑幕墻檢查及安全性鑒定技術標準
- 十歲那年的試題及答案
- 廠區生活垃圾管理制度
- 臨建拆除施工方案新
- 勵耕計劃 申請書
- DB11-T 1771-2020 地源熱泵系統運行技術規范
- 游戲開發外包合同
- 呼吸機霧化吸入療法護理實踐專家共識
- 車輛維修保養服務 投標方案(技術方案)
評論
0/150
提交評論