开发者学堂课程【HaaS 物联网云端一体低代码开发课程:《 HaaS 开发框架和物联网通信基础》 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/810/detail/13910
《 HaaS 开发框架和物联网通信基础》
目录
一、 物联网通信协议介绍
二、 Wi-Fi 基础知识
三、 Wi-Fi 连线过程介绍
四、 物联网应用层协议 -MQTT
一、 物联网通信协议介绍
物联网网络接口层常用协议:
按照传输距离的远近可以分为低功耗广域网和低功耗局域网。
低功耗广域网:4G,LoRa,NB-IOT 等
低功耗局域网:WIFI、蓝牙、ZTB、红外等
二、 Wi-Fi 基础知识
1. Wi-Fi 历史
Wi-Fi 是以代次来命名,Wi-Fi 4是最常用的,IEEE 协议规范是 IEEE802.11n。
2. Wi-Fi 物理层
3.2.4G 信道
4. Wi-Fi 基础知识
基本概念
BSS ( Basic Service Set )基本服务集合分如下两种:
Ø IBSS: 独立型基本服务集( Independent BSS )
Ø BSS: 基础结构型基本服务集( Infrastructure BSS )
Ø ESS: 将几个 BSS 连为延伸式 BSS ,使用统一的服务组成识别码( Service Set ldentifier),简称 SSID,也就是我们看到的路由器名称
Wi-Fi 的两种工作模式:
Ø Station: 网络中的客户端角色
Ø AP(Access Point): 网络中的服务端角色,是靠48位的 MAC 地址区分不同 Station
Ø 一般现在商业上用的都是基础型BSS网络(含 BSS/ESS 和若干个 station )
帧类型
帧类型 |
功能 |
管理帧 |
管理帧负责管理 Wi-Fi 的连接管理,如加入或退出无线网络以及处理接入点之间关联的转移等控制帧 |
控制帧 |
通常与数据帧搭配使用,负责区域清空,信道获得,载波侦听,肯定确认等 |
数据帧 |
负责数据传输 |
帧格式
三、 Wi-Fi 连线过程介绍
Wi-Fi 连线过程:
连线
扫描-主动扫描
扫描-被动扫描
扫描
扫描流程:
Ø 手机依此到信道1~信道13上面进行主动扫描和被动监听
Ø 收集到路由器信息之后显示在界面上面,此时就完成了扫描过程
Ø 扫描完成除搜集到周围路由器列表外,还可以收集到路由器的的配置信息(加密模式,带宽,信道等802.11规范中定义的可以放在 IE 栏位中的信息)
扫描流程中会用到三种类型的报文:
Ø Probe request: 手机主动发送,用于探知周围路由器信息,收到此报文的路由器(设置为隐藏的路由器除外)需要回复 probe response 帧
Ø Probe response 帧:路由器在收到 Probe request 之后发送
Ø Beacon: 路由器主动定期(一般为100 ms )发送的信标帧,用于标识自身的存在
下面以 probe request 和 probe response 帧为例介绍其报文格式:
Probe request 报文:
Probe response 报文格式:
Wi-Fi 认证方式:
开放系统认证: 共享密钥认证:
四次握手-以 WPA-PSK 为例
DHCP
四、 物联网应用层协议- MQTT
物联网常用应用层协议
1.MQTT ( Message Queuing Telemetry Transport,消息队列遥测传输)
最早由 IBM 开发的,专门为计算能力有限,工作在低带宽,不可靠网络的控制设备进行通信而设计的。
基于 TCP/IP 常连接,开销小,支持 QoS。
基于订阅/发布模式,支持多对多的协议。
2. COAP ( Constrained Application Protocol,受限制的应用协议)
基于 UDP,采用请求响应(类 http )的工作模式
无连接,只支持一对一
一般来说, loT 设备与云端通信用用 MQTT 协议的多一些,局域网通信一般采用 CoAP 协议。
why MQTT/CoAP, not http/https?
Ø loT 设备跟云端进行交互的消息一般都比较短,http/https 协议头部少则几十多则上百字节,以30个字节为例,Payload length <128时, payload 占比:3%~81%,传输效率相比 MQTTICoAP 低太多。
其次 http/https 对计算能力要求较高,不适合计算能力有限的 loT 设备,在 loT 领域应用相对比较少。
发布者/订阅者模式:
分为发布者( Publish )、代理( Broker )服务器、订阅者( Subscribe )三种角色
消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者也可以同时是订阅者。
客户端和服务器的两种角色
客户端
MQTT 连线的发起者
发布消息供到其它订阅者订阅的主题
订阅/退订主题(用于接收其它客户端向该主题发布的消息)·服务器
接收来自客户端的连线请求
接收客户端的的订阅/退订主题需求
向订阅的客户端转发其订阅主题的消息
MQTT QOS 机制
MQTT 传输的消息分为:主题和负载两部分。
主题( Topic )
消息的类型,订阅者订阅( Subscribe )一个主题后,就会收到该主题的消息内容( payload )
负载( payload )
消息的内容,是指订阅者具体要使用的内容
MQTT 会构建底层网络传输:它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字节流的双向传输。MQTT 协议中规定了消息服务质量 ( Quality of Service ),它保证了在不同的网络环境下消息传递的可靠性,QoS 的设计是 MQTT 协议里的重点。作为专为物联网场景设计的协议,MQTT 的运行场景不仅仅是 PC ,而是更广泛的窄带宽网络和低功耗设备,如果能在协议层解决传输质量的问题,将为物联网应用的开发提供极大便利。
MQTT 设计了3个 QoS 等级。
QoS 0 :消息最多传递一次,如果当时客户端不可用,则会丢失该消息。QoS 1:消息传递至少1次。
QoS 2:消息仅传送一次。
QoS0 是一种" fire and forget "的消息发送模式:Sender (可能是 Publisher 或者 Broker )发送一条消息之后,就不再关心它有没有发送到对方,也不设置任何重发机制。
QoS 1 包含了简单的重发机制,Sender 发送消息之后等待接收者的 ACK ,如果没收到 ACK 则重新发送消息。这种模式能保证消息至少能到达一次,但无法保证消息重复。
QoS 2 设计了重发和重复消息发现机制,保证消息到达对方并且严格只到达一次。
MQTT Qos0
QoS0: - Fire and Forget 机制,一般局域网信息或无关紧要的互联网信息传输。
最多传输一次
适用于不重要的消息传输
MQTT Qos1
QoS1:-简单的 ACK 机制,适用于一般互联网实时消息的传递。
最少传输一次
适用于对可靠性有要求,但对重复度没有要求的消息传输
MQTT QOS2
QoS2 :-复杂的消息及 ACK 流程,适用于敏感信息(如国防工业及医疗设备等应用场景)的传递。
只传输一次
适用于有可靠性要求,也不允许发生重复的消息传输
MQTT 数据帧类型
方法定义 |
数据帧类型 |
说明 |
|
连线 |
CONNECT |
连线请求帧 |
|
|
CONNACK |
连线请求响应帧 |
|
断线 |
DISCONNECT |
断线帧 |
|
订阅 |
SUBSCRIBE |
订阅主题帧 |
|
|
SUBACK |
订阅主题响应帧 |
|
|
UNSUBSCRIBE |
取消订阅主题帧 |
|
|
UBSUBACK |
取消订阅主题响应帧 |
|
发布 |
PUBLISH |
发布消息帧 |
|
|
PUBACK |
发布消息响应帧 |
|
|
PUBREC |
发布消息接受确认帧 |
QoS2 专用 |
|
PUBREL |
发布消息接受确认响应帧 |
QoS2 专用 |
|
PUBCOMP |
发布消息确认完成帧 |
QoS2 专用 |
心跳 |
PINGREQ |
保活请求帧 |
客户端发送 |
|
PINGRESP |
保活确认帧 |
服务器发送 |
MQTT 一般应用流程