出版時間:2011-1 出版社:機械工業(yè)出版社 作者:樊東東 莫瀾 頁數(shù):1062
Tag標(biāo)簽:無
前言
有人宣稱Linux人才是未來20年IT職場中的王者。無論這種說法有多夸張,有一個事實是不可否認的,那就是,近年來Linux的市場份額不斷增長,Linux正在受到越來越多的關(guān)注乃至推崇。由于Linux可廣泛地應(yīng)用到各種系統(tǒng),包括很多嵌入式系統(tǒng)上,以及其他的諸多優(yōu)點,如開放、高效、豐富的網(wǎng)絡(luò)功能等,這種趨勢在可預(yù)計的未來還將持續(xù)。目前,國內(nèi)對Linux各方面的研究工作沒有國外那樣廣泛和深入,相關(guān)的出版物水準參差不齊。特別是在網(wǎng)絡(luò)的實現(xiàn)方面,有些著作針對性不強,有些則缺少了重要的傳輸層協(xié)議實現(xiàn)的論述,還有一些雖然有比較全面的介紹,卻不夠深入,選用的Linux版本也比較舊。針對以上情況,本書選擇了較新的2.6.2 0版本內(nèi)核RCP/IP實現(xiàn)作詳細的論述,在重要的細節(jié)處甚至逐行分析,并在此基礎(chǔ)上,對代碼背后的機制和原理作了深入的闡述,將各關(guān)鍵點連成一個整體,幫助讀者理清整個Linux網(wǎng)絡(luò)部分的脈絡(luò)。作者本著嚴謹?shù)膽B(tài)度,在寫作過程中參閱了大量的中英文資料及相關(guān)的文檔。相信本書可以成為那些希望深入了解Linux的TCP/IP協(xié)議棧、網(wǎng)絡(luò)部分實現(xiàn)的人們的有力工具。本書共有33章,通過自底向上的方法來論述TCP/IP的實現(xiàn),從數(shù)據(jù)鏈路層開始,然后是網(wǎng)絡(luò)層(IP、ICMP、IGMP、路由以及鄰居子系統(tǒng)和IP組播),接下來是套接口,最后是傳輸層(TCP和UDP)。在學(xué)習(xí)的時候也可以采用自頂向下的方法(從傳輸層開始向下),或者結(jié)合以上兩種方法。要理解一個系統(tǒng)的運行機制,對于一個專業(yè)人員來說,代碼是最為直接也最為可靠的資源。Linux普及面不斷擴展,越來越多的人會想通過研讀內(nèi)核代碼來了解Linux系統(tǒng),一來是更好地解決具體工作中的相關(guān)問題,二來是從Linux這個高質(zhì)量的操作系統(tǒng)中學(xué)習(xí)到更多的編程、架構(gòu)等技術(shù)。本書的特點如下:選擇的內(nèi)核版本新,內(nèi)容不會在短期內(nèi)過時。對代碼作了詳細的論述,在此基礎(chǔ)上進一步分析了代碼背后的機制和原理,為讀者理清了整個框架的脈絡(luò),幫助讀者避免迷失在細節(jié)中。寫作過程中參閱了大量中英文資料和相關(guān)的文檔,對內(nèi)核代碼更是作了長時間深入細致的研究和分析,在細節(jié)處反復(fù)推敲,以確保本書的質(zhì)量。
內(nèi)容概要
本書詳細論述了Linux內(nèi)核2.6.20版本中TCP/IP的實現(xiàn)。書中給出了大量的源代碼,通過對源代碼的詳細注釋,幫助讀者掌握TCP/IP的實現(xiàn)。本書根據(jù)協(xié)議棧層次,從驅(qū)動層逐步論述到傳輸層,包括驅(qū)動的實現(xiàn)、接口層的輸入輸出、IP層的輸入輸出以及IP選項的處理、鄰居子系統(tǒng)、路由、套接口及傳輸層等內(nèi)容,全書基本涵蓋了網(wǎng)絡(luò)體系架構(gòu)全部的知識點。特別是TCP,包括TCP連接的建立和終止、輸入與輸出,以及擁塞控制的實現(xiàn)?! ”緯m用于熟悉Linux的基本使用方法,對Linux內(nèi)核工作原理以及網(wǎng)絡(luò)知識有一定的了解,而又極想更深入理解各個機制在Linux中的具體實現(xiàn)的用戶,包括應(yīng)用程序員和嵌入式程序員,以及網(wǎng)絡(luò)管理員等。相關(guān)專業(yè)的科研人員在工作中遇到問題時,也可以查閱本書,理解相關(guān)內(nèi)核部分的實現(xiàn)。此外,計算機相關(guān)專業(yè)的本科高年級學(xué)生和研究生,在學(xué)習(xí)相關(guān)課程(如操作系統(tǒng)、計算機網(wǎng)絡(luò)等)時,可將本書作為輔助教程,與理論相結(jié)合以便更好地理解相應(yīng)的知識點。
書籍目錄
上冊 前言 第1章 預(yù)備知識 1.1 應(yīng)用層配置診斷工具 1.1.1 iputils 1.1.2 net-tools 1.1.3 iproute2 1.2 內(nèi)核空間與用戶空間的接口 1.2.1 procfs 1.2.2 sysctl(/proc/sys目錄) 1.2.3 sysfs(/sys文件系統(tǒng)) 1.2.4 ioctl系統(tǒng)調(diào)用 1.2.5 netlink套接口 1.3 網(wǎng)絡(luò)I/O加速 1.3.1 TSO/GSO 1.3.2 I/O AT 1.4 其他 1.4.1 slab分配器 1.4.2 RCU 第2章 網(wǎng)絡(luò)體系結(jié)構(gòu)概述 2.1 引言 2.2 協(xié)議簡介 2.3 網(wǎng)絡(luò)架構(gòu) 2.4 系統(tǒng)調(diào)用接口 2.5 協(xié)議無關(guān)接口 2.6 傳輸層協(xié)議 2.7 套接口緩存 2.8 設(shè)備無關(guān)接口 2.9 設(shè)備驅(qū)動程序 2.10 網(wǎng)絡(luò)模塊源代碼組織 第3章 套接口緩存 3.1 引言 3.2 sk_buff結(jié)構(gòu) 3.2.1 網(wǎng)絡(luò)參數(shù)和內(nèi)核數(shù)據(jù)結(jié)構(gòu) 3.2.2 SKB組織相關(guān)的變量 3.2.3 數(shù)據(jù)存儲相關(guān)的變量 3.2.4 通用的成員變量 3.2.5 標(biāo)志性變量 3.2.6 特性相關(guān)的成員變量 3.3 skb_shared_info結(jié)構(gòu) 3.3.1 "零拷貝"技術(shù) 3.3.2 對聚合分散I/O數(shù)據(jù)的支持 3.3.3 對GSO的支持 3.3.4 訪問skb_shared_info結(jié)構(gòu) 3.4 管理函數(shù) 3.4.1 SKB的緩存池 3.4.2 分配SKB 3.4.3 釋放SKB 3.4.4 數(shù)據(jù)預(yù)留和對齊 3.4.5 克隆和復(fù)制SKB 3.4.6 鏈表管理函數(shù) 3.4.7 添加或刪除尾部數(shù)據(jù) 3.4.8 拆分數(shù)據(jù):skb_split() 3.4.9 重新分配SKB的線性數(shù)據(jù)區(qū):pskb_expand_head() 3.4.10 其他函數(shù) 第4章 網(wǎng)絡(luò)模塊初始化 4.1 引言 4.2 網(wǎng)絡(luò)模塊初始化順序 4.3 優(yōu)化基于宏的標(biāo)記 4.4 網(wǎng)絡(luò)設(shè)備處理層初始化 第5章 網(wǎng)絡(luò)設(shè)備 5.1 PCI設(shè)備 5.1.1 PCI驅(qū)動程序相關(guān)結(jié)構(gòu) 5.1.2 注冊PCI驅(qū)動程序 5.2 與網(wǎng)絡(luò)設(shè)備有關(guān)的數(shù)據(jù)結(jié)構(gòu) ……下冊
章節(jié)摘錄
插圖:盡管技術(shù)有了巨大的進步,但是TCP/IP協(xié)議棧的處理方式卻幾乎沒有變化。也就是說,即便用戶使用最先進的CPU,依然要處理那些未經(jīng)優(yōu)化的TCP/IP協(xié)議,由此產(chǎn)生巨大的系統(tǒng)開銷。例如,TCP/IP的傳輸過程中需要封裝、解包,這些動作對于處理器而言并不是一個復(fù)雜的過程,但是會占用處理器周期,而且網(wǎng)絡(luò)帶寬越高,這個問題越嚴重。系統(tǒng)開銷的增大不僅僅表現(xiàn)在占用較多的處理器周期,還會導(dǎo)致處理網(wǎng)絡(luò)相關(guān)數(shù)據(jù)時的內(nèi)存訪問效率降低。這又會進一步降低CPU效能和網(wǎng)絡(luò)效率。過去,網(wǎng)絡(luò)流量較低,處理網(wǎng)絡(luò)相關(guān)數(shù)據(jù)所產(chǎn)生的開銷,遠遠低于用于執(zhí)行正常任務(wù)的開銷,所以并未引起重視?,F(xiàn)在,隨著網(wǎng)絡(luò)流量大幅度提升,處理網(wǎng)絡(luò)相關(guān)數(shù)據(jù)所產(chǎn)生的系統(tǒng)開銷越來越不能忽視,甚至已經(jīng)影響到了正常應(yīng)用。現(xiàn)有幾種解決方案: (1)TSO(TCP Segmentation Offioad) 通過網(wǎng)絡(luò)設(shè)備上的專用處理器處理部分或者全部的封包,借此來降低對于系統(tǒng)處理器資源的占用,不過這種解決方案只對具有某些特征的數(shù)據(jù)包有效。(2)RDMA(。Remote Direct MemoryAccess,遠程直接內(nèi)存訪問)發(fā)送端系統(tǒng)直接將有效數(shù)據(jù)送至目的系統(tǒng)指定的內(nèi)存中,無需移動數(shù)據(jù)包的時間消耗,因此大大提升了網(wǎng)絡(luò)傳輸?shù)男?。但是這種技術(shù)需要專用的網(wǎng)絡(luò)設(shè)備,應(yīng)用程序也需要進行修改,甚至還增加了一個RDMA層的封裝過程,而且這種操作風(fēng)險較高,因此目前看來還不是一個吸引人的解決方案。 (3)Onloading技術(shù) 將系統(tǒng)處理器作為處理網(wǎng)絡(luò)流量的第一引擎,盡可能地提升CP[J處理網(wǎng)絡(luò)數(shù)據(jù)包的效率,這種思想已經(jīng)被英特爾借鑒。
編輯推薦
《Linux內(nèi)核源碼剖析:TCP/IP實現(xiàn)(套裝上下冊)》:套接口緩存網(wǎng)絡(luò)設(shè)備IP:網(wǎng)際協(xié)議ICMP:Internet控制報文協(xié)議IP組播IGMP:Internet組管理協(xié)議鄰居子系統(tǒng)路由表套接口層TCP:傳輸控制協(xié)議TCP連接的建立TOP擁塞控制的實現(xiàn)TCP的輸出TCP的輸入TCP連接的終止UDP:用戶數(shù)據(jù)報
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載