Linux內(nèi)核源碼剖析(上下冊(cè))

出版時(shí)間:2011-1  出版社:機(jī)械工業(yè)出版社  作者:樊東東 莫瀾  頁(yè)數(shù):1062  
Tag標(biāo)簽:無(wú)  

前言

有人宣稱Linux人才是未來(lái)20年IT職場(chǎng)中的王者。無(wú)論這種說(shuō)法有多夸張,有一個(gè)事實(shí)是不可否認(rèn)的,那就是,近年來(lái)Linux的市場(chǎng)份額不斷增長(zhǎng),Linux正在受到越來(lái)越多的關(guān)注乃至推崇。由于Linux可廣泛地應(yīng)用到各種系統(tǒng),包括很多嵌入式系統(tǒng)上,以及其他的諸多優(yōu)點(diǎn),如開(kāi)放、高效、豐富的網(wǎng)絡(luò)功能等,這種趨勢(shì)在可預(yù)計(jì)的未來(lái)還將持續(xù)。目前,國(guó)內(nèi)對(duì)Linux各方面的研究工作沒(méi)有國(guó)外那樣廣泛和深入,相關(guān)的出版物水準(zhǔn)參差不齊。特別是在網(wǎng)絡(luò)的實(shí)現(xiàn)方面,有些著作針對(duì)性不強(qiáng),有些則缺少了重要的傳輸層協(xié)議實(shí)現(xiàn)的論述,還有一些雖然有比較全面的介紹,卻不夠深入,選用的Linux版本也比較舊。針對(duì)以上情況,本書(shū)選擇了較新的2.6.2 0版本內(nèi)核RCP/IP實(shí)現(xiàn)作詳細(xì)的論述,在重要的細(xì)節(jié)處甚至逐行分析,并在此基礎(chǔ)上,對(duì)代碼背后的機(jī)制和原理作了深入的闡述,將各關(guān)鍵點(diǎn)連成一個(gè)整體,幫助讀者理清整個(gè)Linux網(wǎng)絡(luò)部分的脈絡(luò)。作者本著嚴(yán)謹(jǐn)?shù)膽B(tài)度,在寫(xiě)作過(guò)程中參閱了大量的中英文資料及相關(guān)的文檔。相信本書(shū)可以成為那些希望深入了解Linux的TCP/IP協(xié)議棧、網(wǎng)絡(luò)部分實(shí)現(xiàn)的人們的有力工具。本書(shū)共有33章,通過(guò)自底向上的方法來(lái)論述TCP/IP的實(shí)現(xiàn),從數(shù)據(jù)鏈路層開(kāi)始,然后是網(wǎng)絡(luò)層(IP、ICMP、IGMP、路由以及鄰居子系統(tǒng)和IP組播),接下來(lái)是套接口,最后是傳輸層(TCP和UDP)。在學(xué)習(xí)的時(shí)候也可以采用自頂向下的方法(從傳輸層開(kāi)始向下),或者結(jié)合以上兩種方法。要理解一個(gè)系統(tǒng)的運(yùn)行機(jī)制,對(duì)于一個(gè)專業(yè)人員來(lái)說(shuō),代碼是最為直接也最為可靠的資源。Linux普及面不斷擴(kuò)展,越來(lái)越多的人會(huì)想通過(guò)研讀內(nèi)核代碼來(lái)了解Linux系統(tǒng),一來(lái)是更好地解決具體工作中的相關(guān)問(wèn)題,二來(lái)是從Linux這個(gè)高質(zhì)量的操作系統(tǒng)中學(xué)習(xí)到更多的編程、架構(gòu)等技術(shù)。本書(shū)的特點(diǎn)如下:選擇的內(nèi)核版本新,內(nèi)容不會(huì)在短期內(nèi)過(guò)時(shí)。對(duì)代碼作了詳細(xì)的論述,在此基礎(chǔ)上進(jìn)一步分析了代碼背后的機(jī)制和原理,為讀者理清了整個(gè)框架的脈絡(luò),幫助讀者避免迷失在細(xì)節(jié)中。寫(xiě)作過(guò)程中參閱了大量中英文資料和相關(guān)的文檔,對(duì)內(nèi)核代碼更是作了長(zhǎng)時(shí)間深入細(xì)致的研究和分析,在細(xì)節(jié)處反復(fù)推敲,以確保本書(shū)的質(zhì)量。

內(nèi)容概要

  本書(shū)詳細(xì)論述了Linux內(nèi)核2.6.20版本中TCP/IP的實(shí)現(xiàn)。書(shū)中給出了大量的源代碼,通過(guò)對(duì)源代碼的詳細(xì)注釋,幫助讀者掌握TCP/IP的實(shí)現(xiàn)。本書(shū)根據(jù)協(xié)議棧層次,從驅(qū)動(dòng)層逐步論述到傳輸層,包括驅(qū)動(dòng)的實(shí)現(xiàn)、接口層的輸入輸出、IP層的輸入輸出以及IP選項(xiàng)的處理、鄰居子系統(tǒng)、路由、套接口及傳輸層等內(nèi)容,全書(shū)基本涵蓋了網(wǎng)絡(luò)體系架構(gòu)全部的知識(shí)點(diǎn)。特別是TCP,包括TCP連接的建立和終止、輸入與輸出,以及擁塞控制的實(shí)現(xiàn)?! ”緯?shū)適用于熟悉Linux的基本使用方法,對(duì)Linux內(nèi)核工作原理以及網(wǎng)絡(luò)知識(shí)有一定的了解,而又極想更深入理解各個(gè)機(jī)制在Linux中的具體實(shí)現(xiàn)的用戶,包括應(yīng)用程序員和嵌入式程序員,以及網(wǎng)絡(luò)管理員等。相關(guān)專業(yè)的科研人員在工作中遇到問(wèn)題時(shí),也可以查閱本書(shū),理解相關(guān)內(nèi)核部分的實(shí)現(xiàn)。此外,計(jì)算機(jī)相關(guān)專業(yè)的本科高年級(jí)學(xué)生和研究生,在學(xué)習(xí)相關(guān)課程(如操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)等)時(shí),可將本書(shū)作為輔助教程,與理論相結(jié)合以便更好地理解相應(yīng)的知識(shí)點(diǎn)。

書(shū)籍目錄

上冊(cè) 前言 第1章  預(yù)備知識(shí)	  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é)議簡(jiǎn)介	  2.3  網(wǎng)絡(luò)架構(gòu)	  2.4  系統(tǒng)調(diào)用接口	  2.5  協(xié)議無(wú)關(guān)接口	  2.6  傳輸層協(xié)議	  2.7  套接口緩存	  2.8  設(shè)備無(wú)關(guān)接口	  2.9  設(shè)備驅(qū)動(dòng)程序	  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ù)存儲(chǔ)相關(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  對(duì)聚合分散I/O數(shù)據(jù)的支持	   3.3.3  對(duì)GSO的支持	   3.3.4  訪問(wèn)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ù)留和對(duì)齊	   3.4.5  克隆和復(fù)制SKB	   3.4.6  鏈表管理函數(shù)	   3.4.7  添加或刪除尾部數(shù)據(jù)	   3.4.8  拆分?jǐn)?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ū)動(dòng)程序相關(guān)結(jié)構(gòu)	   5.1.2  注冊(cè)PCI驅(qū)動(dòng)程序	  5.2  與網(wǎng)絡(luò)設(shè)備有關(guān)的數(shù)據(jù)結(jié)構(gòu)	  ……下冊(cè)

章節(jié)摘錄

插圖:盡管技術(shù)有了巨大的進(jìn)步,但是TCP/IP協(xié)議棧的處理方式卻幾乎沒(méi)有變化。也就是說(shuō),即便用戶使用最先進(jìn)的CPU,依然要處理那些未經(jīng)優(yōu)化的TCP/IP協(xié)議,由此產(chǎn)生巨大的系統(tǒng)開(kāi)銷(xiāo)。例如,TCP/IP的傳輸過(guò)程中需要封裝、解包,這些動(dòng)作對(duì)于處理器而言并不是一個(gè)復(fù)雜的過(guò)程,但是會(huì)占用處理器周期,而且網(wǎng)絡(luò)帶寬越高,這個(gè)問(wèn)題越嚴(yán)重。系統(tǒng)開(kāi)銷(xiāo)的增大不僅僅表現(xiàn)在占用較多的處理器周期,還會(huì)導(dǎo)致處理網(wǎng)絡(luò)相關(guān)數(shù)據(jù)時(shí)的內(nèi)存訪問(wèn)效率降低。這又會(huì)進(jìn)一步降低CPU效能和網(wǎng)絡(luò)效率。過(guò)去,網(wǎng)絡(luò)流量較低,處理網(wǎng)絡(luò)相關(guān)數(shù)據(jù)所產(chǎn)生的開(kāi)銷(xiāo),遠(yuǎn)遠(yuǎn)低于用于執(zhí)行正常任務(wù)的開(kāi)銷(xiāo),所以并未引起重視?,F(xiàn)在,隨著網(wǎng)絡(luò)流量大幅度提升,處理網(wǎng)絡(luò)相關(guān)數(shù)據(jù)所產(chǎn)生的系統(tǒng)開(kāi)銷(xiāo)越來(lái)越不能忽視,甚至已經(jīng)影響到了正常應(yīng)用?,F(xiàn)有幾種解決方案:  (1)TSO(TCP Segmentation Offioad)  通過(guò)網(wǎng)絡(luò)設(shè)備上的專用處理器處理部分或者全部的封包,借此來(lái)降低對(duì)于系統(tǒng)處理器資源的占用,不過(guò)這種解決方案只對(duì)具有某些特征的數(shù)據(jù)包有效。(2)RDMA(。Remote Direct MemoryAccess,遠(yuǎn)程直接內(nèi)存訪問(wèn))發(fā)送端系統(tǒng)直接將有效數(shù)據(jù)送至目的系統(tǒng)指定的內(nèi)存中,無(wú)需移動(dòng)數(shù)據(jù)包的時(shí)間消耗,因此大大提升了網(wǎng)絡(luò)傳輸?shù)男?。但是這種技術(shù)需要專用的網(wǎng)絡(luò)設(shè)備,應(yīng)用程序也需要進(jìn)行修改,甚至還增加了一個(gè)RDMA層的封裝過(guò)程,而且這種操作風(fēng)險(xiǎn)較高,因此目前看來(lái)還不是一個(gè)吸引人的解決方案。  (3)Onloading技術(shù)  將系統(tǒng)處理器作為處理網(wǎng)絡(luò)流量的第一引擎,盡可能地提升CP[J處理網(wǎng)絡(luò)數(shù)據(jù)包的效率,這種思想已經(jīng)被英特爾借鑒。

編輯推薦

《Linux內(nèi)核源碼剖析:TCP/IP實(shí)現(xiàn)(套裝上下冊(cè))》:套接口緩存網(wǎng)絡(luò)設(shè)備IP:網(wǎng)際協(xié)議ICMP:Internet控制報(bào)文協(xié)議IP組播IGMP:Internet組管理協(xié)議鄰居子系統(tǒng)路由表套接口層TCP:傳輸控制協(xié)議TCP連接的建立TOP擁塞控制的實(shí)現(xiàn)TCP的輸出TCP的輸入TCP連接的終止UDP:用戶數(shù)據(jù)報(bào)

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Linux內(nèi)核源碼剖析(上下冊(cè)) PDF格式下載


用戶評(píng)論 (總計(jì)42條)

 
 

  •   印刷質(zhì)量很好,自己買(mǎi)了看不是為了學(xué)習(xí)Linux的TCP/IP的實(shí)現(xiàn),而是為了學(xué)習(xí)其中的編碼技巧。就這方面來(lái)說(shuō),自己已經(jīng)達(dá)到了目的。Linux的編碼都是一些高手所為,編碼的風(fēng)格和技巧很值得自己學(xué)習(xí)。
  •   通過(guò)學(xué)習(xí)內(nèi)核代碼,對(duì)代碼的編寫(xiě)有些指導(dǎo)意義。
  •   講解的很深入 但需要一定基礎(chǔ)
  •   很好的一本書(shū),內(nèi)容很豐富,慢慢看!
  •   此書(shū)買(mǎi)后放入公司圖書(shū)室,大家評(píng)論很好, 前兩周搶著看呢,呵呵
  •   書(shū)絕對(duì)是盜版的;很不爽。
    雖然書(shū)是用來(lái)看的,但花了這么多錢(qián)買(mǎi)個(gè)盜版的很不爽?。?!
    !??!
    當(dāng)當(dāng)圖書(shū)品質(zhì)一向是不錯(cuò)的,真不知道這次怎么搞的,竟然買(mǎi)盜版書(shū)!?。?br /> 氣憤?。。?/li>
  •   值得靜下心來(lái)好好看看。。。
  •   我的水平不夠,看起來(lái)有點(diǎn)吃力~~~
  •   對(duì)學(xué)習(xí)linux網(wǎng)絡(luò)方面還是有幫助的不錯(cuò)。
  •   因工作需要學(xué)習(xí)TCP,基本能滿足要求。就是有些地方?jīng)]講透徹。對(duì)初學(xué)都?jí)毫^大。
  •   這本書(shū)對(duì)于TCP學(xué)習(xí)者來(lái)說(shuō)不可或缺
  •   大體上把上冊(cè)和下冊(cè)的前半部分看完了,感覺(jué)還行。
    不過(guò)很多地方看著有點(diǎn)似曾相識(shí)的感覺(jué)。
    如果是初學(xué)linux的話,還是很值得看的。
  •   只能挺滿意。書(shū)的內(nèi)容其實(shí)是很好的,尤其適合初學(xué)者,唯一的遺憾是,價(jià)格的問(wèn)題,70元左右還可以理解。書(shū)中有很多地方,都是一句概括,不夠詳細(xì)。謝謝。但總體講來(lái),挺滿意!
  •   已經(jīng)開(kāi)始看了,不錯(cuò)的書(shū),每一章開(kāi)始的時(shí)候都會(huì)把基礎(chǔ)知識(shí)進(jìn)行講解,對(duì)于初學(xué)者或者對(duì)理論性的東東不是很理解的童鞋,還是比較有用的。
  •   內(nèi)容詳盡,很豐富,講解的很容易理解
  •   字寫(xiě)的很大,內(nèi)容有待研究,不好說(shuō)
  •   書(shū)是不錯(cuò),可惜代碼太多,甚至整版整版的代碼,覺(jué)得花錢(qián)買(mǎi)來(lái)這么多的印刷的代碼不是很值,完全可以把2本的量放在1本里面,說(shuō)是對(duì)代碼進(jìn)行分析,其實(shí)更多的人需要的是思路的指點(diǎn)而不是在這里去讀源代碼,完全可以減少很多代碼,而是把代碼的具體出處告訴讀者,讓讀者自己去實(shí)踐操作,可能會(huì)更好。
    拋開(kāi)整版的代碼太多的問(wèn)題,其他都還不錯(cuò),需要多看幾遍才能看懂。
  •   本來(lái)挺期待這兩本書(shū)的,但是今天拿到貨后,將兩本書(shū)瀏覽了一下,發(fā)現(xiàn)里面80%的內(nèi)容都是代碼,100多塊錢(qián)太不值了??!
  •   有點(diǎn)心痛花了那么多錢(qián),不值
  •   基本上是一些代碼
  •   為了寫(xiě)書(shū)而寫(xiě)的書(shū),這書(shū)我翻了個(gè)目錄,就再?zèng)]看過(guò).100多大洋啊~~~
  •   書(shū)是不錯(cuò),可惜代碼太多,甚至整版整版的代碼,覺(jué)得花錢(qián)買(mǎi)來(lái)這么多的印刷的代碼不是很值,完全可以把2本的量放在1本里面,說(shuō)是對(duì)代碼進(jìn)行分析,其實(shí)更多的人需要的是思路的指點(diǎn)而不是在這里去讀源代碼,完全可以減少很多代碼,而是把代碼的具體出處告訴讀者,讓讀者自己去實(shí)踐操作,可能會(huì)更好。拋開(kāi)整版的代碼太多的問(wèn)題,其他都還不錯(cuò),需要多看幾遍才能看懂。
  •   作為IT人,看過(guò)的IT技術(shù)書(shū)不少了,原來(lái)的印象是國(guó)內(nèi)的IT書(shū)好的很少,尤其是有大牛掛名的書(shū)(非第一作者的),質(zhì)量其實(shí)更是沒(méi)有保證。這本書(shū)的作者雖然沒(méi)什么名氣,但往往國(guó)內(nèi)的精品書(shū)就是這樣的人寫(xiě)的。我與《深入理解網(wǎng)絡(luò)Linux技術(shù)內(nèi)幕》(包括英文版)對(duì)照著看了,《深入理解》雖然是公認(rèn)的精品書(shū),但其實(shí)瑕疵相當(dāng)多(比《LDD》和《ULK》差遠(yuǎn)了),尤其是驅(qū)動(dòng)層的分析寫(xiě)得不好——組織混亂,還不夠深入。而《Linux剖析》這本國(guó)人作品,雖然形式只是代碼剖析,但是寫(xiě)得很用心,除去代碼的分析外,會(huì)加入原理的介紹和很多圖的說(shuō)明,至少在驅(qū)動(dòng)層的分析上比《深入理解網(wǎng)絡(luò)Linux技術(shù)內(nèi)幕》要好。更難能可貴的是,是對(duì)2.6.20內(nèi)核做的剖析,比較新,使讀者能很快遷移到實(shí)際工作中去,總的來(lái)說(shuō):很棒!贊一個(gè)!
  •   優(yōu)點(diǎn):全面講解Linux網(wǎng)絡(luò)協(xié)議棧的一本好書(shū),內(nèi)容比較充實(shí)。目前已經(jīng)看到15章了,講得比較清楚,收獲比較大。建議大家在看之前先了解下Linux內(nèi)核以及網(wǎng)絡(luò)方面的知識(shí),閱讀起來(lái)會(huì)更輕松些。之前也看過(guò)《Understanding Linux Network Internal》和《TCP/IP詳解卷1》等,但前者沒(méi)有講傳輸層且內(nèi)核版本也比較老;后者重在講理論。缺點(diǎn):1. 雖然買(mǎi)到的第二次印刷的版本,但里面還是有些小的錯(cuò)誤,不過(guò)不影響閱讀。2. 書(shū)的紙張比較差。
  •   同類書(shū)相比,很好的一本書(shū),內(nèi)容很全,很強(qiáng)大,很給力。
  •   不敢說(shuō)這本書(shū)的內(nèi)容上有什么不妥,敢說(shuō)的都是真正的高手。只能說(shuō)書(shū)中內(nèi)容大量引用《深入理解LINUX網(wǎng)絡(luò)技術(shù)內(nèi)幕》。有些關(guān)鍵內(nèi)容沒(méi)講,比如netfilter和bridge等。從提上來(lái)說(shuō),對(duì)初學(xué)者還是很好的。價(jià)格偏高,紙質(zhì)不行。
  •   剛拿到手中,覺(jué)得上面講得還不錯(cuò)~對(duì)我們長(zhǎng)期在linux環(huán)境中編寫(xiě)程序有一定的幫助。
  •   封面有些臟,其他還好
  •   正品,很不錯(cuò),這本書(shū)也寫(xiě)得很好
  •   源碼級(jí)的講解,內(nèi)容沒(méi)得說(shuō)啊!
  •   之前一直看電子版的不舒服,后來(lái)買(mǎi)了,正好項(xiàng)目要用,對(duì)TCP、ip協(xié)議棧的脈絡(luò)說(shuō)的比較清楚,但感覺(jué)有的地方還是不夠詳細(xì),比較,linux東西太多了。再就是價(jià)格,有點(diǎn)貴啊。
  •   字體比較大,紙張不太好
  •   太專業(yè)了,不方便細(xì)說(shuō),自己買(mǎi)了參考就知道
  •   很滿意,基本上該講的都講了,而且比較容易懂。推薦。
  •   書(shū)紙張?zhí)盍?,用手一擦,手上有灰,不知到?duì)身體有害沒(méi)有哦,印刷廠是否合格????jī)?nèi)容未看,對(duì)內(nèi)容先不做評(píng)論。
  •   封皮破了,希望大家引以為戒
  •   講的還不錯(cuò) 國(guó)人講的
  •   剖析的比較細(xì)致
  •   學(xué)習(xí)Linux內(nèi)核代碼的不錯(cuò)選擇
  •   Linux內(nèi)核圖書(shū)
  •   評(píng),您的評(píng)價(jià)將幫助其他
  •   套裝書(shū),包裝不錯(cuò)
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7