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