端口的作用
- 一个电脑上两个浏览器访问同一个网站(服务器),浏览器发出的数据里,源IP相同,目的(服务器)IP,目的端口相同,唯有源端口不同。
- 一个电脑上两个软件:SSH client和浏览器访问另一个网站,这两个软件发出的数据里,目的IP相同,但是端口号不同,SSH client 访问ssh服务器,端口是22;浏览器访问http服务器,端口是80。
路由器
- 路由器连接私网和公网,私网中使用私网IP地址,公网中使用公网IP地址。
- 私网中源设备往外发送数据时,路由器将数据中源设备的IP和端口换成公网IP和端口;
- 路由器收到公网中某设备发来的数据,查看数据中的目的IP和端口,在自己维护的地址对应表中查找,能找到,则换成某私网设备的IP和端口。
MQTT原理
-
通信系统由客户端和服务器组成,客户端既可以订阅(subscribe)也可以发布(Publish),是一个使用MQTT协议的应用程序或设备,建立或断开与服务器的连接;发布其他客户端可能会订阅的消息,订阅其他客户端发布的消息,退订或删除其他客户端发布的消息。服务器称之为代理“broker”,可以是一个应用程序或一个设备,它是连接消息发布者和订阅者的桥梁;接收来自客户端的网络连接和客户端发来的消息,处理来自客户端的订阅和退订请求,向订阅的客户端转发应用程序消息。
-
Topic:MQTT消息类型
-
Payload:MQTT消息的内容
-
QoS0:最多发一次;QoS1:至少发一次;QoS2:只发一次
-
API
-
Connect MQTT客户端与服务器创建连接;其内容有Client Identifier,客户端ID,必须是UTF-8格式的字符串;Will Topic,遗嘱topic;Will Message,遗嘱消息;User Name,用户名;Password,密码。
遗嘱topic和遗嘱消息的作用:当客户端因某种原因可服务器断开链接,服务器将发布一个topic为遗嘱topic的遗嘱消息,其他订阅了这个topic的客户端就会收到这个消息。
-
Disconnect MQTT客户端断开与服务器的连接
-
Subscribe MQTT客户端订阅某个topic,包含客户端要订阅的topic和QoS。
-
UnSubscribe MQTT客户端取消对某个主题的订阅,包含客户端要退订的topic。
-
Publish 客户端发送某个主题的消息给服务器,包含的是应用程序中需要发布的消息,可以是一个长度为0的消息。
-
-
MQTT协议参考文档mqtt-v3.1.1-errata01-os-complete.pdf
-
MQTT官方网址mqtt.org(software->client libraries->C->Eclipse Paho Embedded C->Source(github网址)可以找到嵌入式客户端库Eclipse Paho Embedded C);MQTT PC端软件MQTT Explorer、MQTT X;MQTT代理/服务器 阿里云互联网平台、腾讯云互联网平台。