-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

IoT開發實戰:CoAP卷

( 簡體 字)
作者:徐凱 編著類別:1. -> 程式設計 -> 物聯網
譯者:
出版社:機械工業出版社IoT開發實戰:CoAP卷 3dWoo書號: 47750
詢問書籍請說出此書號!

缺書
NT售價: 295

出版日:9/1/2017
頁數:240
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111577805
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為何寫作本書

幾年前我作為一名嵌入式工程師參與了一個關于低功耗車載終端的研發項目,該低功耗車載終端中包含一個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服務器;第5章與第6章詳細分析與CoAP相關的RFC文檔,這兩章是掌握CoAP的理論基礎;第7章介紹多種CoAP客戶端和服務器的實現方法,這些實現方法包括C語言、Python、Node.js和Java;在實際項目中使用CoAP難免出現問題,第8章介紹CoAP的多種調試方法,通過Copper插件和Wireshark網絡抓包工具可以快速地發現CoAP的細節錯誤。

第三部分:9.10章。最后兩章設計一個微型的物聯網系統,試圖通過該系統向讀者展現物聯網系統從設計到實現的整個過程。微型物聯網系統包括服務器和設備兩部分。服務器部分(第9章)包括Web前端、后端和數據庫部分的實現內容,與其他Web系統不同,該系統還包括CoAP服務器實現;設備部分(第10章)使用一個低功耗受限制設備作為CoAP客戶端,該設備使用Contiki作為嵌入式操作系統,使用IEEE 802.15.4這樣的無線方式連接網絡。
致謝

感謝機械工業出版社華章公司的編輯,沒有你們的鼓勵就不會有這本書。感謝我的同事崔紅鵬、王耀庭、許靜和伊明,感謝你們與我一同討論CoAP的各種細節問題,并把CoAP真正應用到實際產品中。最后感謝我的妻子左文娟,在這一年多的時間里始終支持我的寫作,是你的鼓勵讓我最終完成本書。
內容簡介:

CoAP是受限制的應用協議(Constrained Application Protocol)的簡稱。隨著近幾年物聯網技術的快速發展,越來越多的設備需要接入互聯網。雖然對人們而言,連接互聯網方便快捷,但是對于那些低功耗受限制設備,接入互聯網卻非常困難。在當前由PC機和智能手機組成的互聯網世界中,信息交換一般通過TCP和HTTP協議實現。但是低功耗受限制設備要實現TCP和HTTP協議也許是一個非常苛刻的要求。為了讓低功耗受限制設可以流暢接入互聯網,CoAP應運而生。CoAP是一種物聯網應用層協議,它運行于UDP協議之上,而不是像HTTP那樣運行于TCP之上。CoAP借鑒了HTTP協議大量的成功經驗,CoAP和HTTP都使用請求響應工作模式。與HTTP采用文本首部不同,CoAP采用完全的二進制首部,這使得CoAP的首部更短,傳輸效率更高。CoAP為低功耗受限制設備而生,一個內存僅有20KB的單片機也可以實現CoAP服務器或客戶端。

本書主要內容包括:

學習CoAP必要的網絡基礎知識

CoAP與MQTT、HTTP之間的區別與聯系

CoAP核心內容:二進制首部、工作模式、重傳機制、響應碼、選項和媒體類型等

CoAP擴展內容:CoAP資源描述和CoAP觀察者

使用C語言、Python或Node.js實現CoAP客戶端與服務器

使用Copper插件和Wireshark調試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
序: