買這商品的人也買了...
-
$534$507 -
$474$450 -
$174$165 -
$199FPGA 深度解析
-
$347嵌入式網絡那些事 (STM32物聯實戰)
-
$774$735 -
$505FreeRTOS 內核實現與應用開發實戰指南 — 基於 STM32
-
$658C/OS-III 內核實現與應用開發實戰指南:基於 STM32
-
$620$484 -
$774$735 -
$2,150$2,043 -
$239物聯網操作系統 LiteOS 內核開發與實踐
-
$690$587 -
$534$507 -
$500$390 -
$780$663 -
$894$849 -
$954$906 -
$607Linux 嵌入式系統開發從小白到大牛
-
$1,200$600 -
$828$787 -
$414$393 -
$714$678 -
$556RocketMQ 技術內幕:RocketMQ 架構設計與實現原理, 2/e
-
$602深入理解 RPC 框架原理與實現
商品描述
本書以LwIP源碼為核心,講解TCP/IP協議棧的實現,講解常見的網絡協議,
講解LwIP各層之間的數據傳遞,*終輔以實戰案例,教你如何連接各大雲平臺,
配套野火STM32 M4/M7系列開發板,提供完整源代碼,極具操作性。
目錄大綱
前 言
第1章 網絡協議概述 1
1.1 常用網絡協議 1
1.2 網絡協議的分層模型 2
1.3 協議層報文間的封裝與拆封 3
第2章 LwIP概述 5
2.1 LwIP的優缺點 5
2.2 LwIP的文件說明 6
2.2.1 獲取LwIP源碼文件 6
2.2.2 LwIP文件說明 8
2.3 LwIP的說明文檔 11
2.4 使用vs code查看源碼 14
2.4.1 查看文件中的符號列表和函數列表 14
2.4.2 函數定義跳轉 15
2.5 LwIP源碼里的示例 16
2.6 LwIP的3種編程接口 17
2.6.1 RAW/Callback API 17
2.6.2 Netconn API 18
2.6.3 Socket API 19
第3章 開發平臺 20
3.1 以太網概述 20
3.1.1 PHY層 20
3.1.2 MAC子層 21
3.2 STM32的ETH外設 23
3.3 MII和RMII接口 24
3.4 PHY:LAN8720A 25
3.5 硬件設計 27
3.6 軟件設計 29
3.6.1 獲取STM32的裸機工程模板 29
3.6.2 添加bsp_eth.c與bsp_eth.h 29
3.6.3 修改stm32f4xx_hal_conf.h文件 35
第4章 LwIP的網絡接口管理 37
4.1 netif結構體 37
4.2 netif的使用 41
4.3 與netif相關的底層函數 45
4.4 ethernetif.c文件內容 46
4.4.1 ethernetif數據結構 46
4.4.2 ethernetif_init() 47
4.4.3 low_level_init() 48
第5章 LwIP的內存管理 50
5.1 幾種內存分配策略 50
5.1.1 固定大小的內存塊 50
5.1.2 可變長度分配 51
5.2 動態內存池 52
5.2.1 內存池的預處理 52
5.2.2 內存池的初始化 57
5.2.3 內存分配 58
5.2.4 內存釋放 59
5.3 動態內存堆 61
5.3.1 內存堆的組織結構 61
5.3.2 內存堆初始化 62
5.3.3 內存分配 64
5.3.4 內存釋放 67
5.4 使用C庫的malloc和free函數來管理內存 71
5.5 LwIP中的配置 72
第6章 網絡數據包 74
6.1 TCP/IP的分層思想 74
6.2 LwIP的線程模型 75
6.3 pbuf結構體說明 76
6.4 pbuf的類型 77
6.4.1 PBUF_RAM類型的pbuf 78
6.4.2 PBUF_POOL類型的pbuf 78
6.4.3 PBUF_ROM和PBUF_REF類型的pbuf 80
6.5 pbuf_alloc() 81
6.6 pbuf_free() 84
6.7 其他pbuf操作函數 88
6.7.1 pbuf_realloc() 88
6.7.2 pbuf_header() 88
6.7.3 pbuf_take()、pbuf_copy()、pbuf_chain()和pbuf_ref() 88
6.8 網卡中使用的pbuf 88
6.8.1 low_level_output() 88
6.8.2 low_level_input() 91
6.8.3 ethernetif_input() 93
第7章 無操作系統移植LwIP 94
7.1 將LwIP添加到裸機工程 94
7.2 移植頭文件 97
7.3 移植網卡驅動 103
7.4 LwIP時基 111
7.5 協議棧初始化 112
7.6 獲取數據包 114
7.6.1 查詢方式 114
7.6.2 ping命令詳解 115
7.6.3 中斷方式 116
第8章 有操作系統移植LwIP 119
8.1 向LwIP中添加操作系統 119
8.1.1 復制FreeRTOS源碼到工程文件夾 119
8.1.2 添加FreeRTOS源碼到工程組文件夾 120
8.1.3 指定FreeRTOS頭文件的路徑 120
8.1.4 修改stm32f10x_it.c 121
8.2 lwipopts.h文件需要加入的配置 122
8.3 sys_arch.c/h文件的編寫 126
8.4 網卡底層的編寫 136
8.5 協議棧初始化 138
8.6 移植後使用ping命令測試基本響應 141
第9章 LwIP一探究竟 142
9.1 網卡數據傳入LwIP內核的流程 142
9.2 內核超時處理 142
9.2.1 sys_timeo結構體與超時鏈表 144
9.2.2 註冊超時事件 144
9.2.3 超時檢查 147
9.3 tcpip_thread線程 149
9.4 LwIP中的消息 151
9.4.1 消息結構 151
9.4.2 數據包消息 153
9.4.3 API消息 154
9.5 揭開LwIP的神秘面紗 158
第10章 ARP 159
10.1 數據鏈路層概述 159
10.2 MAC地址的基本概念 159
10.3 初識ARP 160
10.4 以太網幀結構 160
10.5 IP地址映射為物理地址 161
10.6 ARP緩存表 162
10.7 ARP緩存表的超時處理 165
10.8 ARP報文 167
10.9 發送ARP請求包 170
10.10 數據包接收流程 172
10.10.1 以太網中數據包的接收 172
10.10.2 ARP數據包處理 176
10.10.3 更新ARP緩存表 178
10.11 數據包發送流程 182
10.11.1 etharp_output() 182
10.11.2 etharp_output_to_arp_index() 185
10.11.3 etharp_query() 186
第11章 IP 193
11.1 IP地址 193
11.1.1 概述 193
11.1.2 IP地址編址 193
11.1.3 特殊IP地址 195
11.2 局域網和廣域網的概念 196
11.2.1 局域網 196
11.2.2 廣域網 196
11.3 網絡地址轉換 197
11.4 IP數據報 198
11.5 IP數據報的數據結構 202
11.6 IP數據報分片 204
11.7 IP數據報發送 208
11.8 IP數據報接收 214
第12章 ICMP 222
12.1 ICMP功能簡介 222
12.2 ICMP報文結構 223
12.3 ICMP報文類型 224
12.3.1 ICMP差錯報告報文 224
12.3.2 ICMP查詢報文 226
12.4 LwIP中的ICMP實現 227
12.4.1 ICMP報文數據結構 227
12.4.2 發送ICMP差錯報文 229
12.4.3 處理ICMP報文 231
第13章 TCP 235
13.1 TCP服務概述 235
13.2 TCP的特性 235
13.2