編輯推薦
物聯網已經無處不在,本書主要講解CoAP協議,這是一個IETF組織編寫的麵嚮低功耗設備的物聯網應用層協議。CoAP協議具有很多優點,掌握瞭CoAP協議,物聯網軟件工程師能快速開發物聯網嵌入式設備:
1)CoAP協議傳輸層協議采用UDP,對於終端來說UDP的確可以減少一部分能耗;
2)CoAP協議采用請求響應工作模式,當終端設備發送CoAP請求之後,服務器將返迴閤適響應碼,終端通過響應嗎可以判斷服務器的處理結果;
3)CoAP協議包含重傳機製,不用再重新設計重傳方法;
4)CoAP協議參考很多瞭HTTP協議的成功經驗,例如CoAP請求方法、CoAP選項定義和CoAP響應碼等,所以Web開發工程師也可以非常容易掌握CoAP。
內容簡介
物聯網已經無處不在,本書主要講解CoAP協議,這是一個IETF組織編寫的麵嚮低功耗設備的物聯網應用層協議。CoAP協議具有很多優點,掌握瞭CoAP協議,物聯網軟件工程師能快速開發物聯網嵌入式設備:
1)CoAP協議傳輸層協議采用UDP,對於終端來說UDP的確可以減少一部分能耗;
2)CoAP協議采用請求響應工作模式,當終端設備發送CoAP請求之後,服務器將返迴閤適響應碼,終端通過響應嗎可以判斷服務器的處理結果;
3)CoAP協議包含重傳機製,不用再重新設計重傳方法;
4)CoAP協議參考很多瞭HTTP協議的成功經驗,例如CoAP請求方法、CoAP選項定義和CoAP響應碼等,所以Web開發工程師也可以非常容易掌握CoAP。
作者簡介
徐凱,嵌入式軟件工程師。擅長嵌入式Web係統和6LoWPAN無綫傳感網應用,精通物聯網操作係統Contiki和物聯網應用層協議CoAP
目錄
前言
第1章 物聯網與網絡協議1
1.1 本章主要內容1
1.2 物聯網與IP2
1.2.1 IPv42
1.2.2 IPv62
1.2.3 6LoWPAN3
1.3 物聯網與HTTP 6
1.3.1 HTTP6
1.3.2 REST風格6
1.4 物聯網與CoAP7
1.4.1 CoAP8
1.4.2 RFC文檔匯總8
1.5 物聯網與MQTT協議10
1.5.1 MQTT協議10
1.5.2 MQTT主題10
1.5.3 MQTT服務質量11
1.6 本章小結12
第2章 物聯網與開源硬件13
2.1 本章主要內容13
2.2 Arduino13
2.2.1 Arduino簡介13
2.2.2 常用Arduino型號14
2.2.3 Arduino擴展接口15
2.3 樹莓派16
2.3.1 樹莓派簡介16
2.3.2 常用樹莓派型號16
2.3.3 樹莓派擴展接口19
2.4 本章小結20
第3章 網絡技術迴顧22
3.1 本章主要內容22
3.2 IP23
3.2.1 動手嘗試23
3.2.2 IPv4首部26
3.2.3 IPv4地址27
3.2.4 IPv6首部28
3.2.5 IPv6地址30
3.3 UDP31
3.3.1 動手嘗試31
3.3.2 UDP首部35
3.3.3 UDP示例分析35
3.4 TCP37
3.4.1 動手嘗試37
3.4.2 TCP首部41
3.4.3 TCP示例分析42
3.4.4 UDP與TCP對比43
3.5 HTTP44
3.5.1 動手嘗試44
3.5.2 HTTP工作模式50
3.5.3 HTTP首部51
3.5.4 HTTP請求方法53
3.5.5 HTTP狀態碼53
3.5.6 HTTP首部字段54
3.5.7 HTTP的優勢與問題54
3.6 本章小結56
第4章 CoAP快速入門57
4.1 本章主要內容57
4.2 Copper插件入門58
4.2.1 Copper插件安裝58
4.2.2 Copper插件入門示例59
4.3 Arduino CoAP服務器實現61
4.3.1 獲取示例61
4.3.2 示例說明62
4.3.3 動手測試67
4.3.4 著手分析70
4.4 本章小結73
第5章 CoAP核心74
5.1 本章主要內容74
5.2 CoAP首部74
5.2.1 版本編號Ver75
5.2.2 報文類型T75
5.2.3 標簽長度指示TKL75
5.2.4 準則Code76
5.2.5 報文序號Message ID77
5.2.6 標簽Token77
5.2.7 選項Options77
5.2.8 分隔符0xFF78
5.2.9 負載Payload78
5.3 CoAP工作模式78
5.3.1 邏輯分層結構79
5.3.2 報文類型79
5.3.3 請求/響應模式81
5.4 CoAP重傳機製83
5.4.1 CoAP重傳情況分析83
5.4.2 傳輸參數說明84
5.4.3 最大傳輸耗時(MAX_TRANSMIT_SPAN)85
5.4.4 最大等待時間(MAX_TRANSMIT_WAIT)86
5.5 CoAP方法87
5.5.1 GET87
5.5.2 POST87
5.5.3 PUT87
5.5.4 DELETE87
5.6 CoAP響應碼87
5.6.1 正確響應88
5.6.2 客戶端錯誤88
5.6.3 服務器錯誤89
5.7 CoAP選項90
5.7.1 選項格式90
5.7.2 URI相關選項91
5.7.3 Content-Format選項92
5.7.4 Accept選項92
5.7.5 Etag選項92
5.7.6 If-Match選項94
5.7.7 If-None-Match選項96
5.7.8 選項示例97
5.8 CoAP媒體類型99
5.8.1 link-format類型100
5.8.2 文本與二進製類型100
5.8.3 JSON類型101
5.9 本章小結102
第6章 CoAP擴展103
6.1 本章主要內容103
6.2 CoAP資源描述103
6.2.1 CoAP資源描述原理103
6.2.2 CoAP資源描述詳解105
6.3 CoAP觀察者模式106
6.3.1 觀察者模式原理106
6.3.2 CoAP觀察選項107
6.3.3 觀察者模式示例108
6.4 本章小結110
第7章 CoAP軟件實現111
7.1 本章主要內容111
7.2 libcoap112
7.2.1 libcoap安裝112
7.2.2 libcoap使用詳解114
7.2.3 libcoap入門示例117
7.3 aiocoap119
7.3.1 aiocoap安裝120
7.3.2 aiocoap入門示例120
7.3.3 aiocoap塊傳輸示例124
7.3.4 aiocoap樹莓派GPIO示例126
7.4 node-coap129
7.4.1 Node.js安裝130
7.4.2 node-coap入門示例132
7.4.3 node-coap媒體類型示例135
7.5 Californium137
7.5.1 準備工作137
7.5.2 Californium入門示例140
7.6 本章小結149
第8章 CoAP調試工具150
8.1 本章主要內容150
8.2 Copper調試工具150
8.2.1 Copper地址欄151
8.2.2 Copper工具欄152
8.2.3 Copper響應首部153
8.2.4 Copper負載內容154
8.2.5 Copper請求選項154
8.2.6 Copper使用示例155
8.3 Wireshark163
8.3.1 Wireshark安裝164
8.3.2 Wireshark使用164
8.3.3 Wireshark示例166
8.4 本章小結169
第9章 微型物聯網係統——服務器部分171
9.1 本章主要內容171
9.2 假想需求171
9.3 原型設計172
9.3.1 係統結構說明172
9.3.2 係統流程設計173
9.3.3 網頁原型設計174
9.4 詳細設計174
9.4.1 技術選型說明175
9.4.2 數據庫設計176
9.4.3 CoAP API設計176
9.4.4 HTTP API設計177
9.5 具體實現179
9.5.1 數據庫實現180
9.5.2 CoAP路由實現183
9.5.3 Web前端實現190
9.5.4 Web後端實現195
9.6 綜閤測試199
9.6.1 啓動微型物聯網係統199
9.6.2 增加模擬數據200
9.6.3 訪問默認設備200
9.6.4 使用分頁功能200
9.6.5 訪問其他設備201
9.7 本章小結202
第10章 微型物聯網係統——設備部分203
10.1 本章主要內容203
10.2 設備與網絡結構說明203
10.2.1 設備說明203
10.2.2 網絡結構說明205
10.3 Contiki入門206
10.3.1 Contiki初步207
10.3.2 native入門示例211
10.3.3 安裝交叉工具鏈212
10.3.4 SensorTag入門示例213
10.4 搭建邊界路由218
10.4.1 創建Slip-Radio218
10.4.2 創建Native-Border-Router219
10.5 增加NAT64223
10.5.1 NAT64簡介223
10.5.2 安裝Jool224
10.5.3 UDP NAT64示例225
10.6 CoAP Client Sensor231
10.6.1 加入網絡並啓動任務232
10.6.2 獲取傳感器數據233
10.6.3 傳遞傳感器數據235
10.7 綜閤測試238
10.7.1 啓動CoAP服務器238
10.7.2 啓動邊界路由和NAT64239
10.7.3 生成並下載固件239
10.7.4 查看運行結果239
10.8 本章小結242
參考文獻243
前言/序言
為何寫作本書幾年前我作為一名嵌入式工程師參與瞭一個關於低功耗車載終端的研發項目,該低功耗車載終端中包含一個GPS模塊和一個GPRS(2G)模塊,工程師們希望通過最少的能量消耗把終端的GPS坐標上傳至Web服務器中。雖然需求直截瞭當,但是在開發的過程中卻齣現瞭各種各樣的分歧。例如傳輸協議采用UDP還是TCP,有的工程師認為UDP沒有連接過程,傳輸時間更短,有的工程師認為TCP更加可靠而UDP也許會齣現“丟包”現象。經過多次爭論最終選擇瞭UDP傳輸加自定義重傳的方式。所謂自定義重傳,就是車載終端把相同的數據包按照一定的時間間隔連續傳輸三次,每個數據包都包含一個遞增的子序號,服務器通過子序號來剔除重復內容。通過增加這種容錯機製似乎解決瞭UDP的“缺陷”,但是由於終端設備采用單嚮傳輸方式,並不要求服務器返迴響應,所以終端根本不知道它上傳的數據是否被正確處理。
在項目開發的過程中,工程師們在終端設備與Web平颱的銜接方式的選擇上也齣現瞭不少分歧。在定製應用層協議時嵌入式工程師更喜歡二進製協議,但對於Web開發工程師來說JSON和XML纔是他們所擅長的內容。因此,Web開發工程師單獨做瞭一個UDP套接字服務,使終端設備可以把二進製內容轉化為JSON格式的數據包,再把這個JSON數據包“POST”到一個HTTP服務器。此時對於Web開發工程師來說,設備其實是在提交錶單。
經過工程師們的不斷努力,這個低功耗車載終端如期完成。但是項目完成之後我不禁思考:這個項目是不是可以做得更好一點,是不是可以打破嵌入式工程師和Web開發工程師的技術鴻溝,是不是有更好的應用協議可以滿足項目需求,是不是低功耗終端也可以提交錶單?查閱瞭眾多資料之後,我找到瞭CoAP。
迴想碩士畢業之後我“執著”地成為一名專注於物聯網的軟件工程師,而我本科和碩士的專業都與機械工程相關。與其他計算機或電子專業不同,機械工程特彆強調規範和標準,所以設計過程必須嚴格遵守規範。雖然錶麵上這顯得異常死闆,但是這種規範卻大大提高瞭係統的互換性,節約瞭開發成本。在這種理念的指導下,我總是先尋找標準解決方案而不是隨時隨地準備“造輪子”。CoAP是一個由IETF(Internet Engineering Task Force,互聯網工程任務組)組織編寫的麵嚮低功耗設備的物聯網應用層協議,協議編號為RFC 7252。我非常高興找到瞭應用“標準”,而不是又找到瞭一組“輪子”。
CoAP有很多優點,而這些優點正好可以解決上文提到的低功耗車載終端所遇到的問題:
1)CoAP傳輸層協議采用UDP,對於終端來說UDP的確可以減少一部分能耗。
2)CoAP采用請求/響應工作模式,當終端設備發送CoAP請求之後,服務器將返迴響應碼,終端通過響應碼可以判斷服務器的處理結果。
3)CoAP包含重傳機製,不用再重新設計重傳方法。
4)CoAP參考瞭HTTP的大量成功經驗,如CoAP請求方法、CoAP選項定義和CoAP響應碼等,所以Web開發工程師也可以非常容易地掌握CoAP。
CoAP可以幫助低功耗智能終端接入網絡,通過這種標準協議也可以降低物聯網係統的開發難度,尤其可降低物聯網Web平颱的開發難度。對於應用CoAP的終端設備來說,同樣會遵守REST標準,使用類似的資源描述方法,使用相同的請求方法,應用相同的JSON數據包。對於物聯網Web平颱來說,處理一次終端設備的數據上傳和處理一次Ajax錶單提交同樣容易。
我個人喜歡閱讀技術圖書,通過閱讀圖書可以係統地掌握一門新技術,我也希望本書可以幫助讀者熟練掌握CoAP,並把它應用於物聯網係統中。
目標讀者本書適閤物聯網愛好者、嵌入式工程師和Web開發工程師。
對於物聯網愛好者而言,本書的示例可以讓你更快地熟悉物聯網係統。本書包括很多與物聯網係統相關的基礎知識,通過這些基礎知識的學習可以加深你對物聯網係統的理解。通過本書中的多個動手示例,你可以掌握物聯網係統的調試方法。
對於嵌入式工程師而言,本書可以幫助你從不同角度瞭解低功耗設備如何連接網絡。通過CoAP的學習可以從另一個角度熟悉HTTP。CoAP和HTTP都是設備連接網絡的常見手段。
對於Web開發工程師而言,可以從另一個角度瞭解設備如何提交“錶單”,通過學習CoAP你會發現低功耗終端設備也可以很流暢地接入係統,而不需要做多餘的協議轉換。
如何閱讀本書本書的主要內容大緻分為三部分:
第一部分:第1~3章。第1章介紹與物聯網應用直接相關的各種協議,這些協議包括IP、6LoWPAN協議、IEEE 802.15.4協議、HTTP、MQTT協議和CoAP等;第2章介紹與物聯網應用相關的開源硬件Arduino和樹莓派,無論是Arduino還是樹莓派都是開源硬件領域的“明星産品”,在這些硬件平颱上可以快速實現CoAP;第3章與前麵兩章不同,該章通過多個示例詳細介紹與CoAP息息相關的網絡協議—IP、UDP、TCP和HTTP,掌握這些協議是學習CoAP的基礎。
第二部分:第4~8章。在第4章中先通過一個簡潔示例讓讀者對CoAP有一個大緻的瞭解,該示例包含CoAP客戶端和CoAP服務器兩個部分,CoAP服務器使用Arduino UNO實現,通過一個安裝瞭Copper插件的Firefox瀏覽器便可訪問該CoAP服
IoT開發實戰:CoAP捲 下載 mobi epub pdf txt 電子書 格式