- 論壇徽章:
- 0
|
本帖最后由 qinjiana0786 于 2010-05-16 11:15 編輯
非常感謝大家的關(guān)注,很多朋友為了學(xué)習(xí)方便來信要求將《TCP/IP協(xié)議內(nèi)核源碼分析》付印成書,經(jīng)過嚴(yán)格修訂后終于由北京航空航天大學(xué)出版社出版了,點擊此處查看詳細(xì)圖書信息,點擊此處直接轉(zhuǎn)到卓越書店訂購,該書名為《追蹤Linux TCP/IP代碼運行——基于2.6內(nèi)核》,它由十六章組成,全書仍舊采取從應(yīng)用程序到內(nèi)核的分析方法,大家可以先看一下樣章,樣章點擊此處下載。
初稿電子書仍然提供下載,但是它存在一些不足,這些問題都已經(jīng)在正式書稿中改進(jìn)完善了,特此提醒讀者以正式出版的書為準(zhǔn)。
初稿電子書讓大家引起了誤解,它并不是即將出版的書稿,只是前期的草稿,而且內(nèi)容不全,初稿電子書不到二百頁,而整理后的書稿全書超過了五百頁并且以服務(wù)閱讀的角度對內(nèi)容進(jìn)行了分類整理,書中所列的許多函數(shù)與結(jié)構(gòu)都是在網(wǎng)絡(luò)上無法搜索到的,它們是辛苦總結(jié)而來的,由此看出本書的學(xué)習(xí)價值。
特別強(qiáng)調(diào)一點,本書是基于2.6.26版本的LINUX內(nèi)核,它是從實踐到理論式的講解,這對于想掌握網(wǎng)絡(luò)的朋友是珍貴的資料,并不象TCP詳解那樣鋪天蓋地羅列理論,也不象深入LINUX網(wǎng)絡(luò)內(nèi)幕那樣毫無主線對函數(shù)解析,并且這二者都不是針對最流行的2.6內(nèi)核。相信本書的出版一定會使讀者很容易進(jìn)入并掌握LINUX的網(wǎng)絡(luò)世界。
內(nèi)容簡介:
本書以應(yīng)用程序為線索,詳細(xì)描述了數(shù)據(jù)包在協(xié)議棧的分段、重組、發(fā)送、接收過程,同時分析了路由的初始化和設(shè)置過程,主要包括socket應(yīng)用程序、 TCP/IP協(xié)議、路由、通知鏈、鄰居子系統(tǒng)等內(nèi)容。全書涵蓋了協(xié)議棧的全部知識點,對于廣大的讀者來說這是一本極其難得的技術(shù)資料。同時,書中論述了網(wǎng)絡(luò)設(shè)備的工作原理,解釋了RTL8169和嵌入式CS8900、DM9000網(wǎng)卡設(shè)備的核心過程。
本書可作為3G網(wǎng)絡(luò)開發(fā)人員、嵌入式通信產(chǎn)品開發(fā)人員、網(wǎng)絡(luò)應(yīng)用開發(fā)人員、網(wǎng)絡(luò)管理人員及網(wǎng)絡(luò)愛好者、從事網(wǎng)絡(luò)方向的本科生、研究生的參考書。
前言:
學(xué)習(xí)過TCP/IP協(xié)議的讀者可能會感覺面對長篇大論的一堆文字往往不知道從何入手,甚至很多讀者在認(rèn)真閱讀之后也無法領(lǐng)會協(xié)議的作用,更無法進(jìn)入內(nèi)核的協(xié)議棧閱讀代碼,以至于無法從事網(wǎng)絡(luò)方面的開發(fā)與維護(hù),然而,高速發(fā)展的網(wǎng)絡(luò)時代要求技術(shù)人員必須快速掌握和運用協(xié)議的知識,那么有沒有一種有效的方法可以幫助我們實現(xiàn)這一目標(biāo)呢?相信讀者可以在本書中找到答案。
理論的學(xué)習(xí)固然是基礎(chǔ),但是不一定具備了理論才開始閱讀代碼,就象以往的英語學(xué)習(xí)方法,大家只采取背單詞、記語法的方式,結(jié)果十幾年之后仍然不會說英語,不會用英語,因為這種英語教學(xué)方法只停留在理論層上,現(xiàn)代的英語教學(xué)則打破了理論為主線的學(xué)習(xí)方法,從應(yīng)用性和實用性出發(fā),從而極大改變了學(xué)習(xí)的效果。因此,本書借鑒現(xiàn)代英語的學(xué)習(xí)模式,選擇從實際應(yīng)用出發(fā),以應(yīng)用程序為主線進(jìn)入Linux內(nèi)核,通過應(yīng)用程序的工作過程層層解析內(nèi)核的協(xié)議棧,揭示協(xié)議棧的工作路線,揭露網(wǎng)絡(luò)的真實過程,幫助讀者徹底掌握協(xié)議棧,讀者在閱讀完本書之后將會有一種登上泰山頂峰的興奮之情。目前,市場針對Linux網(wǎng)絡(luò)的講解書籍已經(jīng)很多,內(nèi)容基本都是對理論的泛泛而談,有的書籍缺少主線,有的書籍缺少與實際應(yīng)用的結(jié)合,有的書籍采用的內(nèi)核版本過于陳舊,這些問題加大了閱讀的難度,導(dǎo)致很多讀者使用 “壓箱子底”的辦法放棄了學(xué)習(xí)。與此相反,本書克服了上述全部問題,并且在描述每一個關(guān)鍵過程時,采取穿插圖片和逐行解釋的方式解決了這些難點,從而使全書象一部小說那樣具備整體性和情節(jié)性。
本書針對的是2.6版本的Linux內(nèi)核,對于內(nèi)核的進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)等內(nèi)容,請讀者借鑒本書推薦書籍或者直接跳過這些內(nèi)容只閱讀核心部分,對于難以理解的內(nèi)容可以先放一放,往往在讀第二遍時就會自然而解,這是因為內(nèi)核的知識點互為補充的結(jié)果。由于內(nèi)容繁多,不足和漏洞之處可能還會存在,請讀者諒解并提出修改建議。
馮偉對本書的圖片編輯提供了幫助,同時對本書的編輯提供支持的還有:
羅燕軍、楊永祥、張文盛、李 華、倪 巍、劉國兵、葛德奇、朱德良、羅 兵、彭 海
白 瑜、顏詩敏、傅海熒、李柱棟、盛曉暉、修 宸、張澤榮、陳嘉順、時安營、周 丹
江均勇、楊 碩、羅偉彬、李洪彬、楊春雷、付金平、繆 曉、鐘海文、卓 深、林曉川
在此向他們的辛勤付出表示感謝。
目錄:
第1章 本書的計劃1
1.1基本路線和要求1
技術(shù)要點:分析路線服務(wù)器程序?qū)W習(xí)要求
1.2 TCP/IP協(xié)議層的劃分與基本知識4
技術(shù)要點:協(xié)議層知識服務(wù)器與客戶端的通信路線
1.3函數(shù)到系統(tǒng)調(diào)用的過程6
技術(shù)要點:庫函數(shù)的真實定義系統(tǒng)調(diào)用的總?cè)肟诩皞髦?br />
1.4網(wǎng)絡(luò)文件系統(tǒng)11
技術(shù)要點:網(wǎng)絡(luò)文件系統(tǒng)的特點initcall機(jī)制網(wǎng)絡(luò)文件系統(tǒng)的安裝
第2章 socket的創(chuàng)建15
2.1本章幾個重要數(shù)據(jù)結(jié)構(gòu)15
技術(shù)要點:socket結(jié)構(gòu)、sock結(jié)構(gòu)、sk_buff結(jié)構(gòu)、tcp_sock結(jié)構(gòu)的定義
2.2分配并初始化socket結(jié)構(gòu)23
技術(shù)要點:分配socket結(jié)構(gòu)空間分配文件節(jié)點
2.3使用協(xié)議族的函數(shù)表初始化socket27
技術(shù)要點:登記函數(shù)表定義、注冊及初始化協(xié)議族結(jié)構(gòu)
2.4分配并初始化sock結(jié)構(gòu)38
技術(shù)要點:分配結(jié)構(gòu)空間初始化sock結(jié)構(gòu)及數(shù)據(jù)包隊列頭
2.5TCP協(xié)議對sock結(jié)構(gòu)初始化43
技術(shù)要點:TCP協(xié)議的初始化函數(shù)tcp_sock等結(jié)構(gòu)的關(guān)聯(lián)
2.6socket與文件系統(tǒng)的關(guān)聯(lián)46
技術(shù)要點:分配文件指針和文件號指定文件操作表
第3章 socket地址設(shè)置51
3.1地址設(shè)置接口51
技術(shù)要點:地址設(shè)置過程查找socket和文件指針復(fù)制數(shù)據(jù)到內(nèi)核
3.2地址結(jié)構(gòu)定義54
技術(shù)要點:結(jié)構(gòu)的定義及賦值協(xié)議族的設(shè)置函數(shù)網(wǎng)絡(luò)空間結(jié)構(gòu)
3.3地址類型58
技術(shù)要點:地址類型的概念 查驗地址類型獲取路由函數(shù)表
3.4設(shè)置地址和端口62
技術(shù)要點:地址與端口的隊列結(jié)構(gòu)地址與端口的查找與建立
3.5網(wǎng)絡(luò)空間總管init_net73
技術(shù)要點:init_net結(jié)構(gòu)的初始化 隊列頭的初始化
第4章 路由78
4.1路由函數(shù)表結(jié)構(gòu)及關(guān)系圖78
技術(shù)要點:fib_table結(jié)構(gòu)、fn_zone結(jié)構(gòu)、fib_node結(jié)構(gòu)及fib_info結(jié)構(gòu)的關(guān)系
4.2路由函數(shù)表的初始化78
技術(shù)要點:路由表隊列、路由函數(shù)表隊列的初始化路由規(guī)則結(jié)構(gòu)、路由函數(shù)表結(jié)構(gòu)、路由區(qū)結(jié)構(gòu)的定義子網(wǎng)掩碼的作用
4.3通過路由函數(shù)表查找路由信息100
技術(shù)要點:路由區(qū)及路由節(jié)點的匹配和查找路由信息、路由跳轉(zhuǎn)結(jié)構(gòu)的查找
4.4路由的設(shè)置及相關(guān)結(jié)構(gòu)的初如化109
技術(shù)要點:設(shè)置路由的三條路線路由配置結(jié)構(gòu)的定義路由區(qū)的建立路由信息的創(chuàng)建和調(diào)整隊列節(jié)點的鏈入與摘除路由跳轉(zhuǎn)結(jié)構(gòu)的初始化路由函數(shù)表的查找
路由別名結(jié)構(gòu)的建立路由表的沖刷與釋放
4.5基于輸出方向的路由表查找與創(chuàng)建156
技術(shù)要點:路由鍵值結(jié)構(gòu)的定義路由表結(jié)構(gòu)的定義路由表隊列的輪詢路由表的創(chuàng)建與查找
4.6基于輸入方向的路由表查找與創(chuàng)建189
技術(shù)要點:為數(shù)據(jù)包查找路由表創(chuàng)建轉(zhuǎn)發(fā)的路由表
第5章 通知鏈200
5.1設(shè)備通知鏈節(jié)點的掛入200
技術(shù)要點:通知鏈節(jié)點結(jié)構(gòu)的定義設(shè)備配置結(jié)構(gòu)的定義設(shè)備通知鏈的建立
5.2地址通知鏈節(jié)點的掛入206
技術(shù)要點:地址通知鏈的定義和鏈入
5.3通知鏈的調(diào)用和執(zhí)行207
技術(shù)要點:網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)的登記注冊通知節(jié)點函數(shù)的調(diào)用
第6章 netlink概述212
6.1netlink的創(chuàng)建212
技術(shù)要點:netlink的sock結(jié)構(gòu)定義及初始化
6.2注冊路由的netlink217
技術(shù)要點:路由的netlink結(jié)構(gòu)定義及注冊
6.3通過netlink通信219
技術(shù)要點:netlink的信息結(jié)構(gòu)、消息頭結(jié)構(gòu)、路由消息結(jié)構(gòu)的定義及初始化netlink數(shù)據(jù)包的建立及發(fā)送
第7章 監(jiān)聽連接請求234
7.1內(nèi)核的監(jiān)聽函數(shù)234
技術(shù)要點:協(xié)議族監(jiān)聽函數(shù)的調(diào)用連接數(shù)的控制監(jiān)聽結(jié)構(gòu)的建立及定義連接請求結(jié)構(gòu)及隊列
7.2內(nèi)核的監(jiān)聽隊列241
技術(shù)要點:監(jiān)聽隊列的鏈入過程監(jiān)聽隊列的睡眠等待和喚醒
第8章 接收連接請求245
8.1接收連接函數(shù)245
技術(shù)要點:協(xié)議族接收函數(shù)的調(diào)用定時等待連接請求
8.2異步接收方式253
技術(shù)要點:異步接收實例異步喚醒路線查詢客戶端sock結(jié)構(gòu)和連接請求結(jié)構(gòu)
8.3獲取連接請求257
技術(shù)要點:客戶端socket、sock結(jié)構(gòu)的對接獲取客戶端的地址INET協(xié)議族結(jié)構(gòu)的定義
第9章 準(zhǔn)備連接請求262
9.1內(nèi)核的連接函數(shù)263
技術(shù)要點:客戶端程序及服務(wù)器程序的通信效果協(xié)議族連接函數(shù)的調(diào)用源路由的分類和查找TCP協(xié)議的socket結(jié)構(gòu)定義端口的查找與復(fù)用SYN數(shù)據(jù)包的建立路由項結(jié)構(gòu)的定義MTU、MSS的作用及設(shè)置滑動窗口的初始化
9.2分配數(shù)據(jù)包結(jié)構(gòu)和數(shù)據(jù)塊空間286
技術(shù)要點:創(chuàng)建并初始化數(shù)據(jù)包共享結(jié)構(gòu)的定義及數(shù)據(jù)塊的分類TCP的控制結(jié)構(gòu)發(fā)送隊列的鏈入和計數(shù)數(shù)據(jù)包的結(jié)構(gòu)示意圖
9.3構(gòu)建、發(fā)送TCP數(shù)據(jù)包299
技術(shù)要點:TCP頭部的定義TCP層的發(fā)送過程克隆數(shù)據(jù)包的建立重發(fā)數(shù)據(jù)包的依據(jù)擁塞報告的建立
9.4進(jìn)化成IP數(shù)據(jù)包312
技術(shù)要點:IP層的發(fā)送過程IP選項的定義IP頭部的定義及初始化ID編號的生成和設(shè)置鏈路層頭部緩存結(jié)構(gòu)的定義鄰居子系統(tǒng)的發(fā)送函數(shù)
9.5進(jìn)化成以太網(wǎng)數(shù)據(jù)包330
技術(shù)要點:鏈路層頭部及其緩存結(jié)構(gòu)的初始化以太網(wǎng)頭部結(jié)構(gòu)的定義及初始化
9.6發(fā)送以太網(wǎng)數(shù)據(jù)包335
技術(shù)要點:分段發(fā)送的檢測網(wǎng)卡驅(qū)動程序的發(fā)送過程
第10章 鄰居子系統(tǒng)345
10.1鄰居子系統(tǒng)的初始化345
技術(shù)要點:ARP的鄰居表結(jié)構(gòu)、鄰居結(jié)構(gòu)的定義鄰居表的鏈入查找、創(chuàng)建ARP的鄰居函數(shù)表
10.2查找鄰居結(jié)構(gòu)355
技術(shù)要點:鄰居結(jié)構(gòu)的查找過程
10.3鄰居子系統(tǒng)的發(fā)送事件356
技術(shù)要點:鄰居結(jié)構(gòu)的狀態(tài)類型及檢測鄰居結(jié)構(gòu)的定時器、定時函數(shù)ARP包的建立及初始化ARP頭部的定義ARP包的發(fā)送
10.4鄰居子系統(tǒng)的接收處理366
技術(shù)要點:ARP數(shù)據(jù)包類型結(jié)構(gòu)ARP數(shù)據(jù)包的接收和處理解包獲取客戶端地址
更新鄰居結(jié)構(gòu)
第11章 流量控制374
11.1排隊規(guī)則的初始化374
技術(shù)要點:排隊規(guī)則的定義網(wǎng)卡設(shè)備結(jié)構(gòu)的登記與注冊排隊規(guī)則的創(chuàng)建及初始化
排隊規(guī)則函數(shù)表的定義
11.2排隊規(guī)則的入隊和發(fā)送382
技術(shù)要點:排隊規(guī)則的入隊操作排隊規(guī)則對數(shù)據(jù)包的流量控制和發(fā)送過程
第12章 建立連接的過程388
12.1驅(qū)動程序接收并建立數(shù)據(jù)包388
技術(shù)要點:網(wǎng)卡驅(qū)動程序的接收過程構(gòu)建數(shù)據(jù)包軟中斷數(shù)據(jù)結(jié)構(gòu)的運用軟中斷函數(shù)的接收過程
12.2查找數(shù)據(jù)包類型且調(diào)用其處理函數(shù)400
技術(shù)要點:數(shù)據(jù)包類型結(jié)構(gòu)的定義IP數(shù)據(jù)包類型及數(shù)據(jù)包類型隊列IP層的接收過程
12.3接收或轉(zhuǎn)發(fā)IP數(shù)據(jù)包408
技術(shù)要點:IP選項的檢查源路由的執(zhí)行路由表的轉(zhuǎn)發(fā)和接收過程
12.4TCP數(shù)據(jù)包的處理415
技術(shù)要點:傳輸層函數(shù)表結(jié)構(gòu)的定義TCP協(xié)議的函數(shù)表注冊TCP層的接收過程
查找與喚醒服務(wù)器進(jìn)程
12.53次握手過程427
技術(shù)要點:查找、創(chuàng)建客戶端sock結(jié)構(gòu)建立連接請求結(jié)構(gòu)創(chuàng)建并發(fā)送ACK包連接請求的轉(zhuǎn)接
第13章 Internet控制信息的傳輸446
13.1發(fā)送ICMP信息446
技術(shù)要點:ICMP的作用ICMP的發(fā)送函數(shù) ICMP信息結(jié)構(gòu)、頭部結(jié)構(gòu)、緩存結(jié)構(gòu)的定義 ICMP控制結(jié)構(gòu)數(shù)組 ICMP發(fā)送速率的設(shè)置
13.2接收ICMP信息458
技術(shù)要點:ICMP協(xié)議的函數(shù)表 ICMP協(xié)議的接收過程
第14章 數(shù)據(jù)包的分段與重組461
14.1數(shù)據(jù)包的分段發(fā)送461
技術(shù)要點:數(shù)據(jù)包的分段示意圖 IP層的分段函數(shù) 快發(fā)送、慢發(fā)送過程 分段數(shù)據(jù)的復(fù)制
14.2數(shù)據(jù)包的分段接收和重組472
技術(shù)要點:IP層的重組函數(shù) 整理、合并分段數(shù)據(jù)包過程
14.3分段數(shù)據(jù)包的接收隊列482
技術(shù)要點:IP分段隊列結(jié)構(gòu)INET協(xié)議族的分段隊列頭結(jié)構(gòu) 網(wǎng)絡(luò)空間、INET協(xié)議族的分段管理結(jié)構(gòu)
14.4查找與創(chuàng)建分段隊列485
技術(shù)要點:IPv4分段信息結(jié)構(gòu)查找、創(chuàng)建INET分段隊列頭初始化IP分段隊列結(jié)構(gòu)
14.5釋放和銷毀分段隊列489
技術(shù)要點:清除分段隊列釋放分段數(shù)據(jù)包和隊列頭
第15章 發(fā)送和接收數(shù)據(jù)包494
15.1內(nèi)核的發(fā)送、接收函數(shù)494
技術(shù)要點:3種發(fā)送、接收的系統(tǒng)調(diào)用過程網(wǎng)絡(luò)文件系統(tǒng)的發(fā)送、接收函數(shù)
15.2客戶端發(fā)送數(shù)據(jù)包501
技術(shù)要點:消息結(jié)構(gòu)、緩沖區(qū)結(jié)構(gòu)的定義與初始化 構(gòu)建發(fā)送數(shù)據(jù)包 TCP層的發(fā)送過程TCP層的分段發(fā)送阻塞的檢測
15.3服務(wù)器接收數(shù)據(jù)包529
技術(shù)要點:TCP層的接收過程預(yù)處理隊列的鏈入和處理預(yù)處理進(jìn)程的接收過程
復(fù)制數(shù)據(jù)到程序的緩沖區(qū) 處理后備隊列的數(shù)據(jù)包
第16章 socket的關(guān)閉551
16.1內(nèi)核的關(guān)閉函數(shù)551
技術(shù)要點:網(wǎng)絡(luò)文件系統(tǒng)的關(guān)閉函數(shù)刪除、釋放異步結(jié)構(gòu) 釋放接收隊列的數(shù)據(jù)包 釋放、銷毀sock結(jié)構(gòu)、連接請求結(jié)構(gòu)
16.2服務(wù)器與客戶端的共同關(guān)閉563
技術(shù)要點:服務(wù)器與客戶端FIN、ACK、RST包的交互過程狀態(tài)改變與強(qiáng)制關(guān)閉
索引569
參考文獻(xiàn)579 |
-
-
樣章.rar
2009-10-15 14:33 上傳
點擊文件名下載附件
90.47 KB, 下載次數(shù): 21059
評分
-
查看全部評分
|