內容簡介
本書可以作為TCP/IP學習者的快速入門及精通的指導書籍,配以簡易的實驗平台及專門的實驗例程,讀者可以輕鬆學習TCP/IP協定內的各種機制,通過實驗驗證,達到理論與實踐結合的目的;對於嵌入式初學者來說,本書具有相關的實驗平台,通過對實驗平台的學習與使用,初學者能快速實現嵌入式入門;最後,本書可以作為廣大嵌入式網路開發人員的參考手冊。
圖書目錄
第1章 故事前傳
1.1 背景知識
1.1.1 嵌入式網路概述
1.1.2 寫作背景
1.1.3 幾個疑問
1.2 TCP/IP掃盲班
1.2.1 OSI模型
1.2.2 TCP/IP協定
1.2.3 OSI模型 VS
1.2.4 嵌入式TCP/IP協定棧
1.3 旅行集結號
1.3.1 實驗環境說明
1.3.2 本書內容概述
1.3.3 一起出發
第2章 有備而無患
2.1 傳說中的ARM微處理器
2.1.1 背景知識
2.1.2 存儲器組織結構
2.1.3 指令系統
2.1.4 數據類型與存儲格式
2.1.5 處理器狀態與處理器模式
2.1.6 暫存器組織
2.1.7 異常處理
2.2 S3C44B0X初體驗
2.2.1 簡介
2.2.2 存儲管理器
2.2.3 中斷控制器
2.2.4 其他模組
2.3 ARM彙編真經
2.3.1 簡介
2.3.2 ARM指令集編碼格式
2.3.3 ARM定址方式
2.3.4 ARM指令集簡介
2.3.5 ARM彙編語言
第3章 讓板子跑起來
3.1 ARM開發工具
3.1.1 ADS簡介
3.1.2 ARM彙編器
3.1.3 ARM編譯器
3.1.4 ARM連線器
3.2 程式的調試
3.2.1 幾種調試方式
3.2.2 AXD調試器
3.2.3 ARMulator的使用
3.3 編寫啟動代碼
3.3.1 開發板結構
3.3.2 啟動代碼講解
3.3.3 幾個測試程式
第4章 快馬加鞭
4.1 嵌入式實時作業系統
4.1.1 概述
4.1.2 μC/OS-II的檔案結構
4.1.3 μC/OS-II中的任務
4.1.4 就緒任務的管理
4.1.5 任務堆疊
4.2 移植μC/OS-II實時作業系統
4.2.1 概述
4.2.2 編寫OS_CPU.H
4.2.3 編寫OS_CPU_C.C
4.2.4 編寫OS_CPU_A.S
4.3 測試程式
4.3.1 系統時鐘
4.3.2 第一個測試程式
4.3.3 第二個測試程式
第5章 無作業系統模擬層LwIP的移植
5.1 LwIP綜述
5.1.1 簡介
5.1.2 用SI閱讀原始碼
5.2 移植工作
5.2.1 移植頭檔案
5.2.2 RTL8019AS網卡
5.2.3 編寫網卡驅動程式
5.3 測試程式
5.3.1 協定棧初始化
5.3.2 數據包的查詢接收
5.3.3 數據包的中斷接收
5.3.4 一個簡單的TCP伺服器
5.3.5 移植小結
第6章 動態記憶體管理
6.1 背景知識
6.1.1 記憶體管理概述
6.1.2 常見記憶體分配策略
6.2 動態記憶體池
6.2.1 數據結構描述
6.2.2 函式實現
6.3 動態記憶體堆
6.3.1 數據結構描述
6.3.2 函式實現
6.4 其他記憶體分配策略
第7章 數據包管理
7.1 預備知識
7.1.1 LwIP的分層特點
7.1.2 協定進程模型
7.2 數據包管理
7.2.1 數據包結構pbuf
7.2.2 pbuf的類型
7.2.3 數據包申請函式
7.2.4 數據包釋放函式
7.2.5 其他數據包操作函式
第8章 網路接口管理
8.1 引言
8.2 網路接口結構
8.2.1 數據結構
8.2.2 函式實現
8.3 環回接口
8.3.1 相關函式
8.3.2 實驗程式
第9章 ARP協定
9.1 ARP協定簡介
9.1.1 物理地址與網路地址
9.1.2 ARP協定的本質
9.2 數據結構
9.2.1 ARP表
9.2.2 ARP報文
9.3 ARP層數據包輸入
9.3.1 乙太網數據包遞交
9.3.2 ARP數據包處理
9.3.3 ARP攻擊
9.3.4 ARP快取表的更新
9.4 ARP層數據包輸出
9.4.1 ARP層數據處理總流程
9.4.2 廣播包與多播包的傳送
9.4.3 單播包的傳送
第10章 網際協定(IP)
10.1 相關知識
10.1.1 概述
10.1.2 IP位址
10.1.3 特殊IP位址
10.1.4 子網劃分與子網掩碼
10.1.5 網路地址轉換(NAT)
10.1.6 單播、多播與廣播
10.2 數據報
10.2.1 數據報組成結構
10.2.2 數據結構
10.3 IP層輸出
10.3.1 傳送數據報
10.3.2 數據報分片
10.4 IP層輸入
10.4.1 數據報接收
10.4.2 分片重裝數據結構
10.4.3 分片重裝函式
10.4.4 分片插入與檢查
第11章 網際控制報文協定(ICMP)
11.1 基本知識
11.1.1 ICMP協定
11.1.2 報文交付
11.1.3 報文類型
11.1.4 報文格式
11.1.5 差錯報文
11.1.6 查詢報文
11.2 ICMP的實現
11.2.1 數據結構
11.2.2 傳送差錯報文
11.2.3 ICMP報文的處理
11.2.4 ping命令
11.2.5 ICMP洪水
第12章 用戶數據報協定(UDP)
12.1 背景知識
12.1.1 傳輸層協定
12.1.2 UDP協定
12.1.3 連線埠號
12.1.4 UDP報文的交付
12.1.5 UDP報文格式
12.1.6 UDP偽首部與校驗和
12.2 UDP數據結構
12.2.1 報文首部結構
12.2.2 控制塊
12.3 控制塊操作函式
12.3.1 使用UDP編程
12.3.2 新建控制塊
12.3.3 綁定控制塊
12.3.4 連線控制塊
12.3.5 其他控制塊操作函式
12.4 報文處理函式
12.4.1 報文的傳送
12.4.2 報文接收與遞交
12.5 測試程式
12.5.1 回送程式
12.5.2 測試結果
12.5.3 回調編程的缺陷
第13章 傳輸控制協定(TCP)
13.1 協定簡介
13.1.1 TCP的必要性
13.1.2 TCP的特性
13.1.3 連線的定義
13.1.4 數據流編號
13.1.5 滑動視窗
13.2 TCP報文
13.2.1 報文格式
13.2.2 TCP選項
13.2.3 緊急數據
13.2.4 強迫數據互動
13.2.5 報文首部數據結構
13.3 TCP連線
13.3.1 建立連線
13.3.2 下線
13.3.3 復位連線
13.3.4 TCP狀態轉換圖
13.3.5 特殊的狀態轉換
13.4 TCP控制塊
13.4.1 控制塊數據結構
13.4.2 控制塊鍊表
13.4.3 接收視窗
13.4.4 傳送視窗
13.5 TCP編程函式
13.5.1 控制塊新建
13.5.2 控制塊綁定
13.5.3 控制塊偵聽
13.5.4 控制塊連線
13.5.5 傳送數據
13.5.6 關閉連線
13.5.7 其他函式
13.6 TCP輸出處理
13.6.1 報文段緩衝
13.6.2 報文段構建
13.6.3 報文段傳送
13.7 TCP輸入處理
13.7.1 TCP層函式調用流程
13.7.2 報文輸入
13.7.3 TIME_WAIT狀態的報文處理
13.7.4 LISTEN狀態的報文處理
13.7.5 SYN攻擊
13.7.6 TCP狀態機函式
13.7.7 TCP數據輸入
13.8 可靠的傳輸服務
13.8.1 逾時重傳與RTT估計
13.8.2 慢啟動與擁塞避免
13.8.3 快速重傳與快速恢復
13.8.4 糊塗視窗與避免
13.8.5 零視窗探查
13.8.6 保活機制
13.8.7 TCP定時器
13.9 測試程式
13.9.1 Telnet伺服器
13.9.2 測試結果
第14章 移植作業系統模擬層
14.1 移植過程
14.1.1 移植綜述
14.1.2 添加檔案
14.1.3 修改頭檔案lwipopts.h
14.1.4 頭檔案sys_arch.h
14.1.5 全局變數與初始化
14.1.6 信號量函式
14.1.7 信箱函式
14.1.8 逾時相關函式
14.1.9 創建新進程
14.2 測試程式
14.2.1 初始化函式
14.2.2 簡單的HTTP伺服器
14.2.3 測試結果
第15章 用戶編程接口
15.1 定時事件
15.1.1 定時結構
15.1.2 定時鍊表
15.1.3 核心進程
15.1.4 處理定時事件
15.2 訊息機制
15.2.1 訊息結構
15.2.2 數據包訊息
15.2.3 協定棧API實現
15.2.4 API訊息
15.3 協定棧接口
15.3.1 用戶數據緩衝netbuf
15.3.2 數據緩衝操作
15.3.3 連線結構netconn
15.3.4 核心回調接口
15.3.5 協定棧API函式
15.3.6 測試程式
15.4 套接字接口
15.4.1 socket的實現
15.4.2 套接字函式
15.4.3 測試程式
第16章 最後的戰役
16.1 域名解析
16.1.1 域名系統(DNS)
16.1.2 測試程式
16.1.3 測試結果
16.2 動態主機配置
16.2.1 DHCP協定
16.2.2 測試程式
16.2.3 測試結果
16.3 Internet組管理
16.3.1 IGMP協定
16.3.2 測試程式
16.3.3 測試結果
16.4 終結篇
16.4.1 常見問題及解決方法
16.4.2 故事結局
參考文獻