出版時間:2011-5 出版社:電子工業(yè)出版社 作者:單立平 頁數(shù):480
Tag標(biāo)簽:無
內(nèi)容概要
《嵌入式linux網(wǎng)絡(luò)體系結(jié)構(gòu)設(shè)計與tcp/ip協(xié)議?!泛w了linux嵌入式系統(tǒng)開發(fā)中網(wǎng)絡(luò)體系結(jié)構(gòu)實現(xiàn)的主要內(nèi)容。
《嵌入式linux網(wǎng)絡(luò)體系結(jié)構(gòu)設(shè)計與tcp/ip協(xié)議?!饭卜?2章,第1章概述linux內(nèi)核組件與內(nèi)核技術(shù)特點,以及網(wǎng)絡(luò)體系結(jié)構(gòu)實現(xiàn)應(yīng)用到的內(nèi)核開發(fā)的基礎(chǔ)知識。第2~5章在介紹了實現(xiàn)網(wǎng)絡(luò)體系結(jié)構(gòu)、協(xié)議棧、設(shè)備驅(qū)動程序的兩個最重要的數(shù)據(jù)結(jié)構(gòu)sk_buff和net_device的基礎(chǔ)上,展示了linux內(nèi)核中為網(wǎng)絡(luò)設(shè)備?動程序設(shè)計和開發(fā)而建立的系統(tǒng)構(gòu)架,最后以兩個實例來具體說明如何著手開發(fā)網(wǎng)絡(luò)設(shè)備驅(qū)動程序,數(shù)據(jù)在硬件設(shè)備上的接收和發(fā)送過程。第6章討論了網(wǎng)絡(luò)協(xié)議棧中數(shù)據(jù)鏈路層收發(fā)數(shù)據(jù)的設(shè)計和實現(xiàn),以及硬件層與協(xié)議層之間的接口。第7章講解了網(wǎng)絡(luò)層ip協(xié)議的實現(xiàn)。第8~9章介紹傳輸層數(shù)據(jù)收發(fā)過程,重點介紹基于套接字的tcp/udp傳輸實現(xiàn)。第10章討論了linux內(nèi)核套接字層的實現(xiàn),以及套接字層與應(yīng)用層、傳輸層之間的接口。第11章介紹網(wǎng)絡(luò)應(yīng)用軟件的開發(fā)技術(shù),以及內(nèi)核對網(wǎng)絡(luò)應(yīng)用的支持。第12章講解在嵌入式系統(tǒng)開發(fā)中如何將硬件驅(qū)動程序、內(nèi)核代碼、?用程序集成在一起下載至芯片中,形成嵌入式可運行的系統(tǒng),作為全書的總結(jié)。
《嵌入式linux網(wǎng)絡(luò)體系結(jié)構(gòu)設(shè)計與tcp/ip協(xié)議?!房梢宰鳛楦叩仍盒S嬎銠C、通信專業(yè)學(xué)生學(xué)習(xí)操作系統(tǒng)的參考書,也可以作為從事嵌入式、計算機行業(yè)的工程技術(shù)人員的參考書。
作者簡介
單立平,電子科技大學(xué)計算機學(xué)院計算機軟件碩士,精通C語言和匯編語言程序設(shè)計,以及實時軟件系統(tǒng)開發(fā)。在母校執(zhí)教期間,主講《計算機組成原理》、《計算機導(dǎo)論》、《匯編語言程序設(shè)計》、《C語言程序設(shè)計》、《Java程序設(shè)計》等課程,參與編寫多本高校規(guī)劃教材,同時從事通信、數(shù)據(jù)庫、嵌入式方向的科研工作。亦有在信息產(chǎn)業(yè)部第十研究所從事衛(wèi)星跟蹤實時軟件系統(tǒng)研發(fā)的經(jīng)歷。2005年后定居加拿大,先后在MEADE
WILLIS Company及BlueTree Wireless Data
Inc.任職,主攻Linux平臺下嵌入式無線通信、GPS全球定位系統(tǒng)、汽車電子系統(tǒng)的研究與開發(fā)。
書籍目錄
第1章 概述
1.1 linux內(nèi)核組件
1.2 linux內(nèi)核中的活動
1.2.1 進程和系統(tǒng)調(diào)用
1.2.2 硬件中斷
1.2.3 tasklet
1.2.4 workqueue
1.2.5 軟件中斷
1.3 互斥機制
1.3.1 spin lock
1.3.2 讀-寫 spin lock
1.3.3 讀-復(fù)制-更新(read-copy-update,rcu)
1.4 內(nèi)核模塊(module)
1.4.1 管理內(nèi)核模塊
1.4.2 自動裝載模塊
1.4.3 模塊功能的注冊和取消
1.4.4 在模塊裝載時給模塊傳遞參數(shù)
1.4.5 內(nèi)核和模塊的符號表
1.5 內(nèi)存資源
1.5.1 高速緩沖區(qū)(memory cache)
1.5.2 高速緩存和哈希鏈表
1.6 時間管理
1.7 嵌入式的挑戰(zhàn)
1.8 本章總結(jié)
第2章 linux網(wǎng)絡(luò)包傳輸?shù)年P(guān)鍵數(shù)據(jù)結(jié)構(gòu)——socket buffer
2.1 socket buffer 設(shè)計概述
2.1.1 socket buffer與tcp/ip協(xié)議棧
2.1.2 socket buffer的對外接口
2.1.3 socket buffer的特點
2.2 socket buffer的構(gòu)成
2.2.1 socket buffer的基本組成
2.2.2 socket buffer穿越tcp/ip協(xié)議棧
2.3 sk_buff數(shù)據(jù)域的設(shè)計和含義
2.3.1 sk_buff 中的結(jié)構(gòu)管理域
2.3.2 常規(guī)數(shù)據(jù)域
2.3.3 sk_buff 的網(wǎng)絡(luò)功能配置域
2.4 操作sk_buff的函數(shù)
2.4.1 創(chuàng)建和釋放socket buffer
2.4.2 數(shù)據(jù)空間的預(yù)留和對齊
2.4.3 復(fù)制和克隆
2.4.4 操作隊列的函數(shù)
2.4.5 引用計數(shù)的操作
2.4.6 協(xié)議頭指針操作
2.5 數(shù)據(jù)分片和分段
2.5.1 為什么要分割數(shù)據(jù)包
2.5.2 設(shè)計skb_shared_info數(shù)據(jù)結(jié)構(gòu)的目的
2.5.3 操作skb_shared_info的函數(shù)
2.6 本章總結(jié)
第3章 網(wǎng)絡(luò)設(shè)備在內(nèi)核中的抽象——struct net_device數(shù)據(jù)結(jié)構(gòu)
3.1 協(xié)議棧與網(wǎng)絡(luò)設(shè)備
3.1.1 協(xié)議棧軟件與網(wǎng)絡(luò)設(shè)備硬件之間的接口
3.1.2 設(shè)備獨立接口文件dev.c
3.1.3 設(shè)備驅(qū)動程序
3.1.4 struct net_device數(shù)據(jù)結(jié)構(gòu)
3.2 struct net_device 數(shù)據(jù)結(jié)構(gòu)
3.2.1 struct net_device數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)域
3.2.2 struct net_device數(shù)據(jù)結(jié)構(gòu)的其他數(shù)據(jù)域
3.3 struct net_device數(shù)據(jù)結(jié)構(gòu)中數(shù)據(jù)域的功能分類
3.3.1 設(shè)備管理域
3.3.2 設(shè)備配置管理域
3.3.3 設(shè)備狀態(tài)
3.3.4 統(tǒng)計
3.3.5 設(shè)備鏈表
3.3.6 鏈路層組傳送
3.3.7 流量管理
3.3.8 常規(guī)域
3.3.9 操作函數(shù)結(jié)構(gòu)
3.4 函數(shù)指針
3.4.1 設(shè)備初始化
3.4.2 傳送
3.4.3 硬件協(xié)議頭
3.4.4 網(wǎng)絡(luò)統(tǒng)計狀態(tài)
3.4.5 修改配置
3.5 本章總結(jié)
第4章 網(wǎng)絡(luò)設(shè)備在linux內(nèi)核中識別
4.1 內(nèi)核初始化的特點
4.1.1 命令行參數(shù)
4.1.2 網(wǎng)絡(luò)子系?的命令行參數(shù)
4.2 內(nèi)核啟動過程
4.2.1 用do_initcall函數(shù)完成的初始化
4.2.2 標(biāo)記初始化函數(shù)的宏
4.2.3 網(wǎng)絡(luò)子系統(tǒng)初始化
4.2.4 網(wǎng)絡(luò)設(shè)備的初始化
4.3 網(wǎng)絡(luò)設(shè)備的注冊和struct net_device數(shù)據(jù)結(jié)構(gòu)實例的初始化
4.3.1 初始化函數(shù)的任務(wù)
4.3.2 網(wǎng)絡(luò)設(shè)備的注冊和注銷
4.3.3 網(wǎng)絡(luò)設(shè)備的引用計數(shù)(reference count)
4.3.4 允許和禁止網(wǎng)絡(luò)設(shè)備
4.4 網(wǎng)絡(luò)設(shè)備的管理
4.4.1 管理網(wǎng)絡(luò)設(shè)備的鏈表
4.4.2 網(wǎng)絡(luò)設(shè)備的搜索函數(shù)
4.5 事件通知鏈
4.5.1 事件通知鏈構(gòu)成
4.5.2 注冊回調(diào)函數(shù)到事件通知鏈
4.5.3 通知子系統(tǒng)有事件發(fā)生
4.5.4 網(wǎng)絡(luò)子系統(tǒng)中的事件通知鏈
4.5.5 網(wǎng)絡(luò)子系統(tǒng)傳送的事件
4.6 本章總結(jié)
第5章 網(wǎng)絡(luò)設(shè)備驅(qū)動程序
5.1 網(wǎng)絡(luò)設(shè)備驅(qū)動程序概述
5.1.1 網(wǎng)絡(luò)設(shè)備驅(qū)動程序的任務(wù)
5.1.2 網(wǎng)絡(luò)設(shè)備驅(qū)動程序的構(gòu)成
5.2 網(wǎng)絡(luò)設(shè)備與內(nèi)核的交互
5.2.1 設(shè)備與內(nèi)?的交互方式
5.2.2 硬件中斷
5.2.3 中斷在內(nèi)核的實現(xiàn)
5.2.4 軟件中斷
5.3 網(wǎng)絡(luò)設(shè)備驅(qū)動程序的實現(xiàn)
5.3.1 網(wǎng)絡(luò)適配器的初始化
5.3.2 網(wǎng)絡(luò)設(shè)備活動功能函數(shù)
5.3.3 網(wǎng)絡(luò)設(shè)備管理函數(shù)
5.3.4 在適配器中支持組發(fā)送
5.4 cs8900a網(wǎng)絡(luò)適配器驅(qū)動程序的實現(xiàn)
5.4.1 cs8900a網(wǎng)絡(luò)控制芯片的功能概述
5.4.2 cs8900a的packetpage結(jié)構(gòu)
5.4.3 cs8900a的操作
5.4.4 cs8900a設(shè)備驅(qū)動程序分析
5.5 本章總結(jié)
第6章 數(shù)據(jù)鏈路層數(shù)據(jù)幀的收發(fā)
6.1 關(guān)鍵數(shù)據(jù)結(jié)構(gòu)
6.1.1 struct napi_struct數(shù)據(jù)結(jié)構(gòu)
6.1.2 struct softnet_data數(shù)據(jù)結(jié)構(gòu)
6.2 數(shù)據(jù)幀的接收處理
6.2.1 napi的實現(xiàn)
6.2.2 netif_rx函數(shù)分析
6.3 網(wǎng)絡(luò)接收軟件中斷
6.3.1 net_rx_action的工作流程
6.3.2 net_rx_action函數(shù)的實現(xiàn)細節(jié)
6.3.3 從輸入隊列中讀取數(shù)據(jù)幀
6.3.4 處理輸入數(shù)據(jù)幀
6.4 數(shù)據(jù)鏈路層?網(wǎng)絡(luò)層的接口
6.4.1 輸入數(shù)據(jù)幀協(xié)議解析
6.4.2 實現(xiàn)數(shù)據(jù)鏈路層與網(wǎng)絡(luò)層接口的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)
6.4.3 接口的組織
6.5 數(shù)據(jù)鏈路層對數(shù)據(jù)幀發(fā)送的處理
6.5.1 啟動/停止設(shè)備發(fā)送數(shù)據(jù)
6.5.2 調(diào)度設(shè)備發(fā)送數(shù)據(jù)幀
6.5.3 隊列策略接口
6.5.4 dev_queue_xmit函數(shù)
6.5.5 發(fā)送軟件中斷
6.5.6 watchdog時鐘
6.6 本章總結(jié)
第7章 網(wǎng)絡(luò)層傳送
7.1 internet協(xié)議的基本概念
7.1.1 internet協(xié)議的任務(wù)
7.1.2 internet 協(xié)議頭
7.1.3 linux內(nèi)核中描述ip協(xié)議頭的數(shù)據(jù)結(jié)構(gòu)
7.2 ip協(xié)議實現(xiàn)前的準備工作
7.2.1 協(xié)議初始化
7.2.2 與網(wǎng)絡(luò)過濾子系統(tǒng)的交互
7.2.3 與路由子系統(tǒng)的交互
7.3 輸入數(shù)據(jù)包在ip層的處理
7.3.1 ip_rcv函數(shù)分析
7.3.2 ip_rcv_finish函數(shù)分析
7.3.3 接收操作中ip選項的處理
7.4 ip選項
7.4.1 ip選項的格式
7.4.2 描述ip選項的數(shù)據(jù)結(jié)構(gòu)
7.4.3 linux內(nèi)核對ip選項的處理
7.4.4 linux內(nèi)核對ip選項處理的具體實現(xiàn)
7.5 ipv4數(shù)據(jù)包的前送和本地發(fā)送
7.5.1 數(shù)據(jù)包的前送
7.5.2 dst_output函數(shù)的實現(xiàn)
7.5.3 本地發(fā)送的處理
7.6 在ip層的發(fā)送
7.6.1 執(zhí)行發(fā)送的關(guān)鍵函數(shù)
7.6.2 發(fā)送數(shù)據(jù)包相關(guān)信息的數(shù)據(jù)結(jié)構(gòu)
7.6.3 ip_queue_xmit函數(shù)
7.6.4 ip_append_data函數(shù)預(yù)備
7.6.5 ip_append_data函數(shù)分析
7.6.6 ip_append_page 函數(shù)
7.6.7 ip_push_pending_frames函數(shù)
7.6.8 發(fā)送數(shù)據(jù)包的整體過程
7.7 與相鄰子系統(tǒng)的接口
7.8 數(shù)據(jù)包的分片與重組
7.8.1 數(shù)據(jù)分片需要考慮的問題
7.8.2 在上層分片的效率
7.8.3 數(shù)據(jù)包分片/重組使用的ip 協(xié)議頭數(shù)據(jù)域
7.9 本章總結(jié)
第8章 傳輸層udp協(xié)議的實現(xiàn)
8.1 udp協(xié)議基礎(chǔ)
8.2 udp協(xié)議實現(xiàn)的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)
8.2.1 udp協(xié)議頭的數(shù)據(jù)結(jié)構(gòu)
8.2.2 udp的控制緩沖區(qū)
8.2.3 udp套接字的數(shù)據(jù)結(jié)構(gòu)
8.2.4 應(yīng)用程序發(fā)送給udp負載數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)
8.3 udp、套接字層、ip層之間的接口
8.3.1 udp協(xié)議實例與套接字層間的接口
8.3.2 udp協(xié)議與ip層之間的接口
8.4 發(fā)送udp數(shù)據(jù)報的實現(xiàn)
8.4.1 初始化一個連接
8.4.2 在udp套接字上發(fā)送數(shù)據(jù)包
8.4.3 向ip層發(fā)送數(shù)據(jù)包
8.4.4 從用戶地址空間復(fù)制數(shù)據(jù)到數(shù)據(jù)報
8.5 udp 協(xié)議接收的實現(xiàn)
8.5.1 udp協(xié)議接收的處理函數(shù)
8.5.2 將數(shù)據(jù)包放入套接字接收隊列的處理函數(shù)
8.5.3 udp協(xié)議接收廣播與組發(fā)送數(shù)據(jù)包
8.5.4 udp的哈希鏈表
8.5.5 將數(shù)據(jù)包放到套接字接收隊列
8.6 udp協(xié)議在套接字層的接收處理
8.6.1 函數(shù)輸入?yún)?shù)
8.6.2 函數(shù)處理流程
8.7 本章總結(jié)
第9章 傳輸層tcp協(xié)議的實現(xiàn)
9.1 cp協(xié)議簡介
9.1.1 cp是可靠協(xié)議
9.1.2 tcp是面向連接的協(xié)議
9.1.3 tcp是按字節(jié)流交換的協(xié)議
9.1.4 tcp協(xié)議實現(xiàn)的功能
9.2 描述tcp協(xié)議實現(xiàn)的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)
9.2.1 tcp協(xié)議頭數(shù)據(jù)結(jié)構(gòu)
9.2.2 tcp的控制緩沖區(qū)
9.2.3 tcp套接字的數(shù)據(jù)結(jié)構(gòu)
9.2.4 tcp協(xié)議選項options
9.2.5 應(yīng)用層傳送給傳輸層信息的數(shù)據(jù)結(jié)構(gòu)
9.3 在tcp協(xié)議、套接字、ip層之間的接口
9.3.1 管理套接字與tcp接口的數(shù)據(jù)結(jié)構(gòu)
9.3.2 初始化套接字與傳輸層之間的接口
9.3.3 tcp與ip層之間的接收接口
9.3.4 tcp與ip層之間的發(fā)送接口
9.3.5 初始化tcp 套接字
9.4 tcp協(xié)議實例接收過程的實現(xiàn)
9.4.1 tcp_v4_rcv函數(shù)的實現(xiàn)
9.4.2 fast path和prequeue隊列的處理
9.4.3 處理tcp的blocklog 隊列
9.4.4 套接字層的接收函數(shù)
9.5 linux 內(nèi)核中tcp發(fā)送功能的實現(xiàn)
9.5.1 將數(shù)據(jù)從用戶地址空間復(fù)制到內(nèi)核socket buffer
9.5.2 tcp 數(shù)據(jù)段輸出
9.5.3 發(fā)送過程的狀態(tài)機
9.6 tcp套接字的連接管理
9.6.1 tcp連接初始化
9.6.2 tcp狀態(tài)從closed切換到syn_sent
9.6.3 tcp連接的狀態(tài)管理
9.6.4 tcp連接為established狀態(tài)時的接收處理
9.6.5 tcp的time_wait狀態(tài)處理
9.7 本章總結(jié)
第10章 套接字層實現(xiàn)
10.1 套接字概述
10.1.1 什么是套接字
10.1.2 套接字與管理套接字的數(shù)據(jù)結(jié)構(gòu)
10.1.3 套接字與文件
10.2 套接字層的初始化
10.3 地址族的值和協(xié)議交換表
10.3.1 協(xié)議交換表的數(shù)據(jù)結(jié)構(gòu)
10.3.2 套接字支持多協(xié)議棧的實現(xiàn)
10.4 ipv4中協(xié)議成員注冊和初始化
10.5 套接字api系統(tǒng)調(diào)用的實現(xiàn)
10.5.1 系統(tǒng)調(diào)用簡述
10.5.2 套接字api系統(tǒng)調(diào)用的實現(xiàn)
10.6 創(chuàng)建套接字
10.6.1 sock_create函數(shù)創(chuàng)建套接字
10.6.2 協(xié)議族套接字創(chuàng)建函數(shù)的管理
10.6.3 af_inet套接字的創(chuàng)建
10.7 i/o系統(tǒng)調(diào)用和套接字
10.8 本章總結(jié)
第11章 應(yīng)用層——網(wǎng)絡(luò)應(yīng)用套接字編程
11.1 套接字描述符
11.1.1 family參數(shù)
11.1.2 type 參數(shù)
11.1.3 protocol 參數(shù)
11.1.4 af_xxx與pf_xxx形式的常數(shù)
11.2 地址格式
11.2.1 字節(jié)順序
11.2.2 地址結(jié)構(gòu)
11.2.3 支持地址格式轉(zhuǎn)換的函數(shù)
11.2.4 獲取網(wǎng)絡(luò)配置信息
11.2.5 編程示例
11.2.6 將地址與套接字綁定
11.3 套接字連接
11.3.1 connect函數(shù)分析
11.3.2 服務(wù)器套接字建立偵聽隊列
11.3.3 建立套接字連接
11.4 數(shù)據(jù)的傳送
11.4.1 send函數(shù)
11.4.2 傳送數(shù)據(jù)的函數(shù)
11.4.3 接收數(shù)據(jù)的函數(shù)
11.4.4 recvfrom、recvmsg函數(shù)
11.4.5 編程示例
11.5 套接字選項
11.5.1 設(shè)置套接字選項
11.5.2 讀取套接字選項
11.6 out-of-band 數(shù)據(jù)
11.7 非阻塞和異步i/o操作
11.8 本章總結(jié)
第12章 嵌入式系統(tǒng)網(wǎng)絡(luò)應(yīng)用技術(shù)
12.1 嵌入式系統(tǒng)的設(shè)計要素
12.2 嵌入式系統(tǒng)開發(fā)環(huán)境的構(gòu)成
12.2.1 硬件構(gòu)成
12.2.2 典型的硬件開發(fā)環(huán)境
12.2.3 軟件交叉平臺開發(fā)環(huán)境
12.2.4 嵌入式軟件的開發(fā)步驟
12.3 將網(wǎng)絡(luò)設(shè)備驅(qū)動程序加入內(nèi)核
12.3.1 配置新網(wǎng)絡(luò)設(shè)備
12.3.2 編譯新驅(qū)動程序
12.4 內(nèi)核配置
12.4.1 目標(biāo)硬件及內(nèi)核、庫配置
12.4.2 內(nèi)核組件配置
12.4.3 應(yīng)用配置
12.5 集成應(yīng)用程序并下載至目標(biāo)板
12.5.1 集成應(yīng)用程序
12.5.2 將執(zhí)行文件下載至目標(biāo)板
12.6 本章總結(jié)
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
嵌入式Linux網(wǎng)絡(luò)體系結(jié)構(gòu)設(shè)計與TCP/IP協(xié)議棧 PDF格式下載