新書推薦:
《
宠物革命:动物与现代英国生活的形成
》
售價:HK$
79.2
《
世界杂货店:罗伯特·谢克里科幻小说集(新版)
》
售價:HK$
74.8
《
(棱镜精装人文译丛)蔑视大众:现代社会文化斗争的实验
》
售價:HK$
60.5
《
皇家宫廷中的保健秘方 中小学课外阅读
》
售價:HK$
63.8
《
《诗经》十五讲 十五堂《诗经》历史文化与文学课 丹曾人文通识丛书
》
售價:HK$
86.9
《
述异记汇笺及情节单元分类研究(上下册)
》
售價:HK$
104.5
《
环境、社会、治理(ESG)信息披露操作手册
》
售價:HK$
261.8
《
桑德拉销售原则 伍杰 [美]大卫·马特森
》
售價:HK$
96.8
|
內容簡介: |
物联网已经无处不在,本书主要讲解CoAP协议,这是一个IETF组织编写的面向低功耗设备的物联网应用层协议。CoAP协议具有很多优点,掌握了CoAP协议,物联网软件工程师能快速开发物联网嵌入式设备:
1CoAP协议传输层协议采用UDP,对于终端来说UDP的确可以减少一部分能耗;
2CoAP协议采用请求响应工作模式,当终端设备发送CoAP请求之后,服务器将返回合适响应码,终端通过响应吗可以判断服务器的处理结果;
3CoAP协议包含重传机制,不用再重新设计重传方法;
4CoAP协议参考很多了HTTP协议的成功经验,例如CoAP请求方法、CoAP选项定义和CoAP响应码等,所以Web开发工程师也可以非常容易掌握CoAP。
|
關於作者: |
徐凯,感知科技动产管理上海有限公司嵌入式软件工程师研发主管。专注于物联网领域,擅长低功耗无线传感网、6LoWPAN、物联网应用层协议CoAP、MQTT、对物联网操作系统contiki有深入理解。
|
目錄:
|
目录Contents
前言
第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
|
內容試閱:
|
Preface前言为何写作本书几年前我作为一名嵌入式工程师参与了一个关于低功耗车载终端的研发项目,该低功耗车载终端中包含一个GPS模块和一个GPRS2G模块,工程师们希望通过最少的能量消耗把终端的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服
|
|