出版時(shí)間:2010-4 出版社:北京航空航天大學(xué)出版社 作者:秦健 頁(yè)數(shù):578
Tag標(biāo)簽:無(wú)
前言
學(xué)習(xí)過(guò)TCP/IP協(xié)議的讀者可能會(huì)感覺(jué)面對(duì)長(zhǎng)篇大論的一堆文字往往不知道從何入手,甚至很多讀者在認(rèn)真閱讀之后也無(wú)法領(lǐng)會(huì)協(xié)議的作用,更無(wú)法進(jìn)入內(nèi)核的協(xié)議棧閱讀代碼,以至于無(wú)法從事網(wǎng)絡(luò)方面的開發(fā)與維護(hù)。然而,高速發(fā)展的網(wǎng)絡(luò)時(shí)代要求技術(shù)人員必須快速掌握和運(yùn)用協(xié)議的知識(shí),那么有沒(méi)有一種有效的方法可以幫助我們實(shí)現(xiàn)這一目標(biāo)呢?相信讀者可以在本書中找到答案。理論的學(xué)習(xí)固然是基礎(chǔ),但是不一定具備了理論才開始閱讀代碼,就像以往大家只采取背單詞、記語(yǔ)法的方式學(xué)英語(yǔ),結(jié)果十幾年之后仍然不會(huì)說(shuō)英語(yǔ),不會(huì)用英語(yǔ);因?yàn)檫@種英語(yǔ)教學(xué)方法只停留在理論層上,現(xiàn)代的英語(yǔ)教學(xué)則打破了以理論為主線的學(xué)習(xí)方法,從應(yīng)用性和實(shí)用性出發(fā),極大改變了學(xué)習(xí)的效果。因此,本書借鑒現(xiàn)代英語(yǔ)的學(xué)習(xí)模式,選擇從實(shí)際應(yīng)用出發(fā),以應(yīng)用程序?yàn)橹骶€進(jìn)入Linux內(nèi)核,通過(guò)應(yīng)用程序的工作過(guò)程層層解析內(nèi)核的協(xié)議棧,揭示協(xié)議棧的工作路線及網(wǎng)絡(luò)的真實(shí)過(guò)程,幫助讀者徹底掌握協(xié)議棧,使其在閱讀完本書之后有一種登上泰山頂峰的興奮之情。目前,市場(chǎng)針對(duì)Linux網(wǎng)絡(luò)的講解書籍已經(jīng)很多,但內(nèi)容基本都是對(duì)理論的泛泛而談,有的書籍缺少主線,有的書籍缺少與實(shí)際應(yīng)用的結(jié)合,有的書籍采用的內(nèi)核版本過(guò)于陳舊,這些問(wèn)題加大了閱讀的難度,導(dǎo)致很多讀者使用“壓箱子底”的辦法放棄了學(xué)習(xí)。相反,本書克服了上述問(wèn)題,并且在描述每一個(gè)關(guān)鍵過(guò)程時(shí),采取穿插圖片和逐行解釋的方式解決了這些難點(diǎn)。本書針對(duì)的是2.6版本的Linux內(nèi)核,對(duì)于內(nèi)核的進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)等內(nèi)容,讀者可以借鑒本書推薦書籍或者直接跳過(guò)這些內(nèi)容只閱讀核心部分;對(duì)于難以理解的內(nèi)容可以先放一放,往往在讀第二遍時(shí)就會(huì)自然而解,因?yàn)閮?nèi)核的知識(shí)點(diǎn)是互為補(bǔ)充的。由于內(nèi)容繁多,不足之處在所難免,請(qǐng)讀者指正。廣州工程技術(shù)職業(yè)學(xué)院馮偉老師對(duì)本書的圖片編輯提供了幫助,羅燕軍、楊永祥、張文盛、李華、倪巍、馮偉、劉國(guó)兵、葛德奇、朱德良、羅兵、彭海、白瑜、顏詩(shī)敏、傅海熒、李柱棟、盛曉輝、修宸、張澤榮、陳嘉順、時(shí)安營(yíng)、周丹、江均勇、楊碩、羅偉彬、李洪彬、楊春雷、付金平、繆曉及鐘海文也對(duì)本書的編輯提供了支持,在此向他們的辛勤付出表示感謝。
內(nèi)容概要
本書以應(yīng)用程序?yàn)榫€索,詳細(xì)描述了數(shù)據(jù)包在協(xié)議棧的分段、重組、發(fā)送、接收過(guò)程,同時(shí)分析了路由的初始化和設(shè)置過(guò)程,主要包括socket應(yīng)用程序、TCP/IP協(xié)議、路由、通知鏈、鄰居子系統(tǒng)等內(nèi)容。全書涵蓋了協(xié)議棧的全部知識(shí)點(diǎn),對(duì)于廣大的讀者來(lái)說(shuō)這是一本極其難得的技術(shù)資料。同時(shí),書中論述了網(wǎng)絡(luò)設(shè)備的工作原理,解釋了RTL8169和嵌入式CS8900、DM9000網(wǎng)卡設(shè)備的核心過(guò)程。 本書可作為3G網(wǎng)絡(luò)開發(fā)人員、嵌入式通信產(chǎn)品開發(fā)人員、網(wǎng)絡(luò)應(yīng)用開發(fā)人員、網(wǎng)絡(luò)管理人員及網(wǎng)絡(luò)愛(ài)好者、從事網(wǎng)絡(luò)方向的本科生、研究生的參考書。
作者簡(jiǎn)介
秦健,嵌入式研發(fā)工程師。精通Linux內(nèi)核,多年從事嵌入式軟硬件開發(fā),使用Linux平臺(tái)設(shè)計(jì)電子產(chǎn)品。已經(jīng)三十四歲的他憑借一顆熱愛(ài)技術(shù)、永不放棄的心,十年如一地堅(jiān)持技術(shù)研發(fā)的人生道路,推翻了“三十歲是技術(shù)員墳?zāi)埂钡闹囌?,為年輕工程師樹立了榜樣。
書籍目錄
第1章 本書的計(jì)劃 1.1 基本路線和要求 1.2 TCP/IP協(xié)議層的劃分與基本知識(shí) 1.3 函數(shù)到系統(tǒng)調(diào)用的過(guò)程 1.4 網(wǎng)絡(luò)文件系統(tǒng)第2章 socket的創(chuàng)建 2.1 本章幾個(gè)重要數(shù)據(jù)結(jié)構(gòu) 2.2 分配并初始化socket結(jié)構(gòu) 2.3 使用協(xié)議族的函數(shù)表初始化socket 2.4 分配并初始化sock結(jié)構(gòu) 2.5 TCP協(xié)議對(duì)sock結(jié)構(gòu)初始化 2.6 socket與文件系統(tǒng)的關(guān)聯(lián)第3章 socket地址設(shè)置 3.1 地址設(shè)置接口 3.2 地址結(jié)構(gòu)定義 3.3 地址類型 3.4 設(shè)置地址和端口 3.5 網(wǎng)絡(luò)空間總管init_net第4章 路由 4.1 路由函數(shù)表結(jié)構(gòu)及關(guān)系圖 4.2 路由函數(shù)表的初始化 4.3 通過(guò)路由函數(shù)表查找路由信息 4.4 路由的設(shè)置及相關(guān)結(jié)構(gòu)的初如化 4.5 基于輸出方向的路由表查找與創(chuàng)建 4.6 基于輸入方向的路由表查找與創(chuàng)建第5章 通知鏈 5.1 設(shè)備通知鏈節(jié)點(diǎn)的掛入 5.2 地址通知鏈節(jié)點(diǎn)的掛入 5.3 通知鏈的調(diào)用和執(zhí)行第6章 netlink概述 6.1 netlink的創(chuàng)建 6.2 注冊(cè)路由的netlink 6.3 通過(guò)netlink通信第7章 監(jiān)聽(tīng)連接請(qǐng)求 7.1 內(nèi)核的監(jiān)聽(tīng)函數(shù) 7.2 內(nèi)核的監(jiān)聽(tīng)隊(duì)列第8章 接收連接請(qǐng)求 8.1 接收連接函數(shù) 8.2 異步接收方式 8.3 獲取連接請(qǐng)求第9章 準(zhǔn)備連接請(qǐng)求 9.1 內(nèi)核的連接函數(shù) 9.2 分配數(shù)據(jù)包結(jié)構(gòu)和數(shù)據(jù)塊空間 9.3 構(gòu)建、發(fā)送TCP數(shù)據(jù)包 9.4 進(jìn)化成IP數(shù)據(jù)包 9.5 進(jìn)化成以太網(wǎng)數(shù)據(jù)包 9.6 發(fā)送以太網(wǎng)數(shù)據(jù)包第10章 鄰居子系統(tǒng) 10.1 鄰居子系統(tǒng)的初始化 10.2 查找鄰居結(jié)構(gòu) 10.3 鄰居子系統(tǒng)的發(fā)送事件 10.4 鄰居子系統(tǒng)的接收處理第11章 流量控制 11.1 排隊(duì)規(guī)則的初始 11.2 排隊(duì)規(guī)則的入隊(duì)和發(fā)送第12章 建立連接的過(guò)程 12.1 驅(qū)動(dòng)程序接收并建立數(shù)據(jù)包 12.2 查找數(shù)據(jù)包類型且調(diào)用其處理函數(shù) 12.3 接收或轉(zhuǎn)發(fā)IP數(shù)據(jù)包 12.4 TCP數(shù)據(jù)包的處理 12.5 3次握手過(guò)程第13章 Internet控制信息的傳輸 13.1 發(fā)送ICMP信息 13.2 接收ICMP信息第14章 數(shù)據(jù)包的分段與重組 14.1 數(shù)據(jù)包的分段發(fā)送 14.2 數(shù)據(jù)包的分段接收和重組 14.3 分段數(shù)據(jù)包的接收隊(duì)列 14.4 查找與創(chuàng)建分段隊(duì)列 14.5 釋放和銷毀分段隊(duì)列第15章 發(fā)送和接收數(shù)據(jù)包 15.1 內(nèi)核的發(fā)送、接收函數(shù) 15.2 客戶端發(fā)送數(shù)據(jù)包 15.3 服務(wù)器接收數(shù)據(jù)包第16章 socket的關(guān)閉 16.1 內(nèi)核的關(guān)閉函數(shù) 16.2 服務(wù)器與客戶端的共同關(guān)閉索引參考文獻(xiàn)
章節(jié)摘錄
插圖:1.本書的主要特點(diǎn)本書以socket應(yīng)用過(guò)程為路線,以函數(shù)調(diào)用為線索,按照代碼的執(zhí)行線路將整個(gè)網(wǎng)絡(luò)的組織和架構(gòu)串聯(lián)成一個(gè)整體,這是本書的最大特色。知識(shí)點(diǎn)模塊化是本書的另一個(gè)特點(diǎn),全部的知識(shí)點(diǎn)被分布到各個(gè)章節(jié)結(jié)合實(shí)際場(chǎng)景敘述,有時(shí)在函數(shù)的過(guò)程中登臺(tái)亮相,也有時(shí)隨著代碼的剖析赫然而出,這種靈活的安排加強(qiáng)了閱讀的流暢性。2.socket的概念與意義socket這個(gè)單詞是插座的意思,但是在計(jì)算機(jī)領(lǐng)域中有時(shí)稱為插口,也有時(shí)稱為套接字;無(wú)論什么稱謂其作用是不變的,它是應(yīng)用程序在網(wǎng)絡(luò)通信中的橋梁與紐帶。舉一個(gè)電話通信的例子,在這個(gè)例子中用客戶與服務(wù)商通電話的過(guò)程來(lái)說(shuō)明socket的含義與作用??蛻粜枰螂娫捊o服務(wù)商,因此例子中有2部電話就好比2個(gè)socket進(jìn)程,電話號(hào)碼是它們的socket地址,客戶的電話相當(dāng)于客戶端socket;同理,服務(wù)商的電話相當(dāng)于服務(wù)器的socket。現(xiàn)在客戶拿起電話開始拔打服務(wù)商的電話號(hào)碼,相當(dāng)于客戶端socket向服務(wù)器socket發(fā)出連接請(qǐng)求;服務(wù)商如果此時(shí)正好空閑就可以接聽(tīng)電話,相當(dāng)于服務(wù)器socket在等待連接請(qǐng)求,電話鈴響起說(shuō)明服務(wù)器soeket已經(jīng)接收到了連接請(qǐng)求,此時(shí)服務(wù)商拿起電話后雙方就可以正式通話了,相當(dāng)于客戶端與服務(wù)器的socket連接成功;通話過(guò)程中客戶的聲音被傳送到服務(wù)商的電話中,相當(dāng)于客戶端socket發(fā)送數(shù)據(jù)而服務(wù)器socket接收數(shù)據(jù);通話完成后,掛起電話則相當(dāng)于關(guān)閉客戶端的socket和服務(wù)器的socket。
編輯推薦
《追蹤Linux TCP/IP代碼運(yùn)行·基于2.6內(nèi)核》:從事技術(shù)性工作十余年間,作者不斷地探索、研究有效的學(xué)習(xí)方法,不斷地提高學(xué)習(xí)效果,最終在分析Linux內(nèi)核中得出了“用中學(xué)習(xí)、用中理解”的方法。這種方法在《追蹤Linux TCP/IP代碼運(yùn)行·基于2.6內(nèi)核》中得到了很好的運(yùn)用,能幫助讀者順利進(jìn)入Linux的網(wǎng)絡(luò)世界,也能使讀者掌握正確的學(xué)習(xí)方法,這就是我們常講的“授人以魚,不如授人以漁”?!蹲粉橪inux TCP/IP代碼運(yùn)行·基于2.6內(nèi)核》采取了從應(yīng)用到內(nèi)核,從實(shí)踐到理論,從軟件到硬件的講解方式。全書通過(guò)應(yīng)用程序這條主線,幫助讀者剖析網(wǎng)絡(luò)通信的具體過(guò)程和細(xì)節(jié),讓讀者理解協(xié)議線的具體內(nèi)容,提高讀者的網(wǎng)絡(luò)開發(fā)能力。讀者在學(xué)習(xí)時(shí)不需要具備網(wǎng)絡(luò)知識(shí),只需要具備一定的C語(yǔ)言基礎(chǔ)就可以順利閱讀。
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
追蹤Linux TCP/IP代碼運(yùn)行 PDF格式下載