嵌入式網絡那些事:STM32物聯實戰 ,

作者:朱升林, 歐陽駿, 楊晶

出版社:中國水利水電出版社

ISBN:9787517033127

$33.70

產品號碼: 117367 貨號: 9787517033127 分類: , 標籤: , , , ,
面向網絡TCP/IP協議初學者以及大量嵌入式網絡開發人員,從當下流行的嵌入式網絡協議棧LwIP的源代碼入手,詳細講解TCP/IP協議的各層機制及其實現原理。同時,通過搭建簡單的實驗環境,《嵌入式網絡那些事:STM32物聯實戰》還詳細闡述LwIP在嵌入式設備組網過程中的移植過程、應用編程案例、編程框架、注意事項等。
 
《嵌入式網絡那些事:STM32物聯實戰》共分為四大部分,第一部分講解基於STM32平台下LwIP的移植過程,其中包括了LwIP代碼組織結構與特點,以及LwIP裸機移植通用流程;第二部分,以LwIP源代碼為基礎,以網絡數據包在協議棧內部的遞交順序做導向,結合TCP/IP協議基本知識,依次講解LwIP內核各個模塊的實現機制,包括數據包管理、網絡接口管理、 ARP、IP、ICMP、UDP、TCP等;第三部分,講解LwIP上層API實現機制,以及常見的網絡應用程序結構以及編程方法,以及LwIP其他高級應用,如IGMP、DNS、DHCP等;第四部分,講解內核調試、協議棧穩定性和性能、並發服務器設計等,以及LwIP在具體項目中的應用和實踐過程,同時還包括了LwIP在實際應用中常見的問題及解決方法。

目錄

前言 
第1章 實驗平臺背後的故事 1 
1.1 嵌入式網絡技術一統江湖 1 
1.1.1 嵌入式網絡的發展現狀 1 
1.1.2 嵌入式LwIP協議棧 4 
1.2 基於STM32的實驗平臺淺析 6 
1.2.1 STM32處理器的興起 6 
1.2.2 實驗平臺簡介 9 
1.2.3 網卡連接情況 11 
1.3 本書主要內容 12 
第2章 LwIP協議棧初體驗 15 
2.1 廬山真面目之LwIP代碼結構 15 
2.1.1 LwIP簡介 15 
2.1.2 源代碼結構 17 
2.2 怎樣用SI閱讀源代碼 22 
2.3 千里之行從LwIP框架做起 27 
2.3.1 協議棧分層思想 27 
2.3.2 進程模型 30 
2.3.3 協議棧編程接口 31 
第3章 LwIP移植初探——無操作系統模擬層 35 
3.1 移植說明 35 
3.2 移植頭文件 37 
3.3 網卡驅動編寫 40 
3.4 安裝系統時鐘 47 
3.5 協議棧初始化 47 
3.6 查詢接收數據包 49 
3.7 數據包中斷接收 51 
3.8 如何定位Ping問題 53 
第4章 內核動力之源——內存管理 55 
4.1 內存管理背後的故事 55 
4.1.1 內存管理概述 55 
4.1.2 常見內存分配策略 57 
4.2 以不變應萬變——動態內存池 59 
4.2.1 數據結構描述 59 
4.2.2 函數實現 65 
4.3 見招拆招——動態內存堆 67 
4.3.1 數據結構描述 67 
4.3.2 函數實現 69 
4.4 其他內存分配策略 74 
第5章 網絡數據包——內核血液 78 
5.1 數據包管理的必要性 78 
5.1.1 LwIP的分層特點 78 
5.1.2 協議進程模型 80 
5.2 數據包管理原理大揭密 80 
5.2.1 數據包結構pbuf 81 
5.2.2 pbuf的類型 82 
5.2.3 數據包申請函數 85 
5.2.4 數據包釋放函數 88 
5.2.5 其他數據包操作函數 90 
第6章 網絡抽水機——網絡接口管理 92 
6.1 引言 92 
6.2 接口管理的始與末 93 
6.2.1 數據結構 93 
6.2.2 函數實現 96 
6.3 特殊的網絡接口——環回 99 
6.3.1 實現原理 99 
6.3.2 應用程序環回通信實戰 102 
6.4 如何動態更改IP地址 109 
6.4.1 重要函數 109 
6.4.2 實戰程序 110 
第7章 漫漫鵲橋路——ARP協議 113 
7.1 ARP協議之掃盲篇 113 
7.1.1 物理地址與網絡地址 113 
7.1.2 ARP協議的本質 115 
7.2 關鍵數據結構 117 
7.2.1 ARP表 117 
7.2.2 ARP報文 121 
7.3 ARP之數據包引進來 126 
7.3.1 以太網數據包遞交 126 
7.3.2 ARP數據包處理 129 
7.3.3 ARP攻擊 131 
7.3.4 ARP緩存表的更新 132 
7.4 ARP之數據包走出去 137 
7.4.1 ARP層數據處理總流程 138 
7.4.2 廣播包與多播包的發送 138 
7.4.3 單播包的發送 140 
第8章 互聯網身份證——網際協議(IP) 144 
8.1 IP協議之掃盲班 144 
8.1.1 概述 144 
8.1.2 IP地址 145 
8.1.3 特殊IP地址 147 
8.1.4 子網劃分與子網掩碼 148 
8.1.5 網絡地址轉換(NAT) 150 
8.1.6 單播、多播與廣播 151 
8.2 什麼是IP數據報 153 
8.2.1 數據報組成結構 153 
8.2.2 數據結構 158 
8.3 IP數據報之走出去 159 
8.3.1 發送數據報 159 
8.3.2 數據報分片 162 
8.4 IP數據報之引進來 166 
8.4.1 數據報接收 166 
8.4.2 分片重裝數據結構 171 
8.4.3 分片重裝函數 174 
8.4.4 分片插入與檢查 178 
第9章 互聯網醫生——ICMP協議 182 
9.1 ICMP掃盲班 182 
9.1.1 ICMP協議 182 
9.1.2 報文交付 183 
9.1.3 報文類型 184 
9.1.4 報文格式 185 
9.1.5 差錯報文 185 
9.1.6 查詢報文 188 
9.2 ICMP實現大起底 189 
9.2.1 數據結構 189 
9.2.2 發送差錯報文 191 
9.2.3 ICMP報文的處理 192 
9.2.4 ping命令 196 
9.2.5 ICMP洪水 197 
9.3 如何發送Ping請求 198 
9.3.1 實現原理——raw_pcb 199 
9.3.2 發送ping請求 200 
9.3.3 測試結果 203 
第10章 Raw API無招勝有招之UDP篇 205 
10.1 UDP協議掃盲班 205 
10.1.1 傳輸層協議 205 
10.1.2 UDP協議 206 
10.1.3 端口號 207 
10.1.4 UDP報文的交付 208 
10.1.5 UDP報文格式 209 
10.1.6 UDP偽首部與校驗和 210 
10.2 UDP數據結構詳解 212 
10.2.1 報文首部結構 212 
10.2.2 控制塊 212 
10.3 UDP RAW編程秘籍 216 
10.3.1 使用UDP編程 216 
10.3.2 新建控制塊 216 
10.3.3 綁定控制塊 217 
10.3.4 連接控制塊 218 
10.3.5 其他控制塊操作函數 219 
10.4 UDP RAW編程初體驗 220 
10.4.1 UDP編程秘訣 220 
10.4.2 回送程序 221 
10.4.3 測試結果 222 
10.4.4 回調編程的缺陷 224 
10.5 內核報文處理細節 224 
10.5.1 報文的發送 224 
10.5.2 報文接收與遞交 228 
10.6 挑戰更複雜的UDP應用 231 
10.6.1 使用TFTP傳送文件 231 
10.6.2 應用程序實現 234 
10.6.3 TFTP測試結果 242 
第11章 Raw API無招勝有招之TCP篇 244 
11.1 TCP協議大揭秘 244 
11.1.1 TCP的必要性 244 
11.1.2 TCP的特性 245 
11.1.3 連接的定義 247 
11.1.4 數據流編號 248 
11.1.5 滑動窗口 248 
11.2 TCP入門——報文 249 
11.2.1 報文格式 249 
11.2.2 TCP選項 251 
11.2.3 緊急數據 252 
11.2.4 強迫數據交互 253 
11.2.5 報文首部數據結構 253 
11.3 TCP基礎——連接 254 
11.3.1 建立連接 254 
11.3.2 斷開連接 255 
11.3.3 複位連接 256 
11.3.4 TCP狀態轉換圖 257 
11.3.5 特殊的狀態轉換 259 
11.4 TCP核心——控制塊 260 
11.4.1 控制塊數據結構 260 
11.4.2 控制塊鏈表 263 
11.4.3 接收窗口 264 
11.4.4 發送窗口 264 
11.5 TCP RAW編程秘訣 265 
11.5.1 控制塊新建 265 
11.5.2 控制塊綁定 267 
11.5.3 控制塊偵聽 267 
11.5.4 控制塊連接 268 
11.5.5 發送數據 270 
11.5.6 關閉連接 270 
11.5.7 其他函數 272 
11.6 TCP RAW編程初體驗 272 
11.6.1 TCP編程本質 272 
11.6.2 HTTP服務器 278 
11.6.3 打不死的客戶端 280 
11.7 TCP輸出處理細節放送 283 
11.7.1 報文段緩衝 283 
11.7.2 報文段構建 285 
11.7.3 報文段發送 287 
11.8 TCP輸入處理細節放送 289 
11.8.1 TCP層函數調用流程 289 
11.8.2 報文輸入 291 
11.8.3 TIME_WAIT狀態的報文處理 294 
11.8.4 LISTEN狀態的報文處理 294 
11.8.5 SYN攻擊 296 
11.8.6 TCP狀態機函數 297 
11.8.7 TCP數據輸入 301 
11.9 可靠的傳輸服務 305 
11.9.1 超時重傳與RTT估計 306 
11.9.2 慢啟動與擁塞避免 311 
11.9.3 快速重傳與快速恢復 314 
11.9.4 糊塗窗口與避免 316 
11.9.5 零窗口探查 319 
11.9.6 保活機制 321 
11.9.7 TCP定時器 322 
11.10 挑戰更複雜的TCP應用 327 
11.10.1 Telnet服務器 327 
11.10.2 測試結果 333 
第12章 LwIP乾坤大挪移——操作系統 
模擬層 335 
12.1 模擬層是怎樣煉成的 336 
12.1.1 移植綜述 336 
12.1.2 添加文件 338 
12.1.3 修改頭文件lwipopts.h 339 
12.1.4 頭文件sys_arch.h 339 
12.1.5 全局變量與初始化 340 
12.1.6 信號量函數 341 
12.1.7 郵箱函數 343 
12.1.8 創建新進程 348 
12.1.9 修改內核初始化函數 349 
12.1.10 移植結果測試 350 
12.2 Sequential API牛刀小試 350 
12.2.1 回顯服務器 351 
12.2.2 Web服務器 352 
12.2.3 操作系統下的raw API 355 
第13章 Sequential API大顯身手 356 
13.1 探秘內核定時事件 356 
13.1.1 定時結構 356 
13.1.2 定時鏈表 357 
13.1.3 內核進程 359 
13.1.4 處理定時事件 361 
13.2 論消息機制的重要性 363 
13.2.1 消息結構 363 
13.2.2 數據包消息 364 
13.2.3 協議棧API實現 365 
13.2.4 API消息 367 
13.3 協議棧接口全搜羅 369 
13.3.1 用戶數據緩衝netbuf 369 
13.3.2 如何操作數據緩衝 371 
13.3.3 連接結構netconn 373 
13.3.4 內核回調接口 375 
13.3.5 協議棧API秘籍 377 
13.4 Sequential API大會戰 383 
13.4.1 網頁控制設備 383 
13.4.2 UDP性能測試 386 
13.4.3 TCP性能測試 388 
13.4.4 併發服務器 390 
第14章 萬劍歸宗之Socket編程 395 
14.1 套接字接口來龍去脈 395 
14.1.1 如何實現Socket 395 
14.1.2 套接字函數秘籍 397 
14.2 Socket實戰大串燒 401 
14.2.1 智能的TCP客戶端 402 
14.2.2 UDP時間服務器 404 
14.2.3 Winsock客戶端設計 406 
14.3 基於Select的併發服務器 408 
14.3.1 神奇的Select函數 409 
14.3.2 Select原理全解析 410 
14.3.3 Select實戰——併發服務器 419 
第15章 LwIP工程實戰——物聯網關 424 
15.1 項目背景 424 
15.1.1 中央空調系統與溫控器 424 
15.1.2 新需求的出現 427 
15.1.3 要做什麼與如何去做 430 
15.2 智能網絡溫控器 431 
15.2.1 溫控器實現方案 431 
15.2.2 Modbus TCP服務器 432 
15.3 物聯網關設計 440 
15.3.1 物聯網關實現方案 440 
15.3.2 網關服務器 441 
15.4 現場調試與測試 446 
15.4.1 溫控器測試 446 
15.4.2 物聯網關測試 447 
第16章 天下之術皆為我用—— LwIP高級篇 449 
16.1 外網訪問之道——域名解析 449 
16.1.1 域名系統(DNS) 449 
16.1.2 DNS牛刀小試 450 
16.1.3 下載外網數據 453 
16.2 如何自動分配IP地址——DHCP 456 
16.2.1 DHCP大講堂 456 
16.2.2 DHCP之實現詳解 458 
16.2.3 是騾子是馬——遛遛DHCP 460 
16.3 如何實現組播——Internet組管理 464 
16.3.1 IGMP協議大講堂 464 
16.3.2 IGMP組播實踐 465 
第17章 最後的戰役 468 
17.1 如何配置協議棧 468 
17.1.1 內核配置文件opt.h 468 
17.1.2 如何提高TCP性能 471 
17.2 內核調試常用方法 472 
17.2.1 內核日誌輸出 472 
17.2.2 網絡調試助手 474 
17.2.3 Wireshark抓包 475 
17.3 為了更好的明天 476 
17.3.1 常見移植問題 476 
17.3.2 常見應用問題 478 
17.4 故事結局 483 
參考文獻 484

作者介紹

朱升林,非著名碼農,法號及網名“老衲五木”,風靡網絡的電子書《LwIP協議棧源碼詳解——TCP/IP協議的實現》及熱賣圖書《嵌入式網絡那些事:LwIP協議深度剖析與實戰演練》作者。對TCP/IP有豐富的實踐經驗和深入獨到的理解,長期從事物聯網熱點技術如(ZigBee、Wi-Fi、HFRFID、UHFRFID)的研究與應用。目前在國內某知名通信公司從事軟件研發工作。

出版地

大陸

出版日期

07/01/2015

印刷

單色印刷

版別

初版

裝訂

平裝

語系

簡體中文

頁數

483