MQTT协议学习笔记】的更多相关文章

1.前沿 万物联网的时代即将到来,物联网也由当初的概念开始进一步落实.随着无线网络技术飞速发展,各种设备都可以连接网络,实现远程控制.例如智能家居最近非常火爆,智能插座.智能LED灯.智能摄像头等.在互联网时代,HTTP协议负责建立网络连接,而到了物联网时代,由于智能硬件的差异,相比互联网终端,硬件配置要低的多,而且智能设备的环境也想多复杂,物联网中的数据传输会面临很多问题,比如在网络不稳定的情况下,如果保证数据的传输没有问题,如何保证数据不被重复发送,连接断开后如何进行重连,而HTTP协议由于…
HTTP协议学习笔记(四) 与 HTTP 协作的 Web 服务器 一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输效率. 1.用单台虚拟主机实现多个域名 HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点.比如,提供 Web 托管服务(Web Hosting Service)的供应商,可以用一台服务器为多位客户服务,也可以以每位客户持有的域名运行各自不同的网站.这是因为利用了虚拟主机(Virtual Host,又称虚拟服务器)的功…
HTTP协议学习笔记(三) 1.状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务端向服务端发送请求时,描述返回的请求结果.借助状态码,用户可以知道服务端是正常处理了请求,还是出现了错误. 状态码由3位数字和原因短语组成.如200 OK 状态码的类别: 仅记录在 RFC2616 上的 HTTP 状态码就达 40 种,若再加上WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制)(RFC4918.…
HTTP协议学习笔记(二) 1.HTTP报文 HTTP报文:用于HTTP协议交互的信息.请求报文:请求端(客户端)的HTTP报文叫做请求报文.响应报文:响应端(服务端)的HTTP报文叫做响应报文. HTTP报文大致可分为报文首部和报文主体两块.两者最初由空行(CR+LF)来划分.通常,并不一定要有报文主体. 2.请求报文及响应报文的结构 请求报文和响应报文首部内容由以下数据组成. 请求行:包含用于请求的方法,请求URI和HTTP版本. 状态行:包含表明响应结果的状态码,原因短语和HTTP版本 首…
HTTP协议学习笔记(一) 1.HTTP协议用于客户端和服务端之间的通信 客户端:请求访问文本或图像等资源的一端服务端:提供资源响应的一端 在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定是客户端,另一端则是服务端 在实际情况下,客户端和服务端的角色有可能互换,仅从一条通信线路来说,服务端和客户端的角色是确定的 HTTP协议能够区分谁是客户端,谁是服务端 2.通过请求和响应的交换达成通信 HTTP协议规定,请求从客户端发出,最后服务端响应该请求并返回 肯定先从客户端开始建立通信,服务…
背景 经过几天的学习与实操,对于MQTT(主要针对 v3.1.1版本)的学习告一段落,为了方便日后的查阅 本文链接:<MQTT 协议学习: 总结 与 各种定义的速查表> 章节整理 MQTT 协议学习:000-有关概念入门 : 学习新东西最重要的步骤,我觉得就是明确有关的概念. MQTT 协议学习:001-搭建MQTT通信环境,并抓包测试 : 明确概念以后,实操一遍,对于学习可以有一个初步的了解. MQTT 协议学习:002- 通信报文的构成 : 从本章开始,开始慢慢引入 构成 通信协议 的有关…
背景 上一讲 MQTT 协议学习:通信报文的构成介绍了在MQTT通信中,各报文的通信流程:从本讲开始,我们开始介绍实际中使用的报文,以及它们的组成. CONNECT - 连接请求 报文 客户端到服务端的网络连接建立后,客户端发送给服务端的第一个报文必须是CONNECT, 连接服务端报文. 在一个网络连接上,客户端只能发送一次CONNECT报文.服务端必须将客户端发送的第二个CONNECT报文当作协议违规处理并断开客户端的连接. 服务端可以检查CONNECT报文的内容是不是满足任何进一步的限制,可…
计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链路层 TCP/IP详解学习笔记(3)-- IP:网际协议 TCP/IP详解学习笔记(4)-- ARP 和 RARP TCP/IP详解学习笔记(5)-- ICMP:internet 控制报文协议 TCP/IP详解学习笔记(6)-- IP选路 TCP/IP详解学习笔记(7)-- 初识运输层 TCP/IP…
最近学习计算机网络,涉及到SSL协议,我想起了去年密码学课程讲过的非对称加密RSA算法,结合阮老师的博客,写写学习笔记,这里再回忆一下. RSA算法 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密. 思想 (1)乙方生成两把密钥(公钥和私钥).公钥是公开的,任何人都可以获得,私钥则是保密的. (2)甲方获取乙方的公钥,然后用它对信息加密. (3)乙方得到加密后的信息,用私钥解密. RSA的算法涉及三个参数,n.e1.e2. 关于n:…
背景 之前工作中参与有关协议调试的时候,发现对于协议帧的解析是比较重要的. 参考:<MQTT协议 -- 消息报文格式>.<基于STM32实现MQTT>.<MQTT协议从服务端到客户端详解> 英文资料:<MQTT Control Packets> MQTT协议数据包结构 此图是 PUBLISH 报文的组成 在MQTT协议中,一个MQTT数据包由:固定头(Fixed header).可变头(Variable header).消息体(payload)三部分构成.…
背景 目的:了解MQTT 通信的有关概念与流程:方便推算某些数据与文档描述是否一致. 为了能够在保证学习质量的前提下,降低配置环境的门槛,我们将服务器搭建在windwos中,实行内网间的MQTT协议访问. 搭建Linux平台下的 MQTT 环境可以参考:<arm linux 移植 MQTT> .或者根据mosquitto的readme文档,这一讲主要是为了快速入门. HOST: Windows10-x64 MQTT: mosquitto v1.6.8-x64(mosquitto 官网下载比较慢…
概述 之前网络学习笔记主要讲解了IP的诞生,或者说整个操作系统的诞生,一旦有了IP,就可以在网络的环境里和其他的机器展开沟通了.现在开始给大家讲解关于网络底层的相关知识. 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏? 在买路由器还是很奢侈的时候,如果一个大学宿舍想联网打游戏,他们改怎么办呢?带这个问题我们进行学习本节课的知识. 第一层(物理层) 使用路由器,是在第三层上.我们先从第一层物理层开始说.物理层能折腾啥?现在的同学可能想不到,我们当时去学校配电脑的地方买网线,卖网线的师傅都会问…
一.MQTT介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布.MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务.做为一种低开销.低带宽占用的即时通讯协议,使其在物联网.小型设备.移动应用等方面有较广泛的应用. 二.MQTT协议特点  MQTT协议构建于TC…
若初次接触MQTT协议,可先理解以下概念: [MQTT协议特点]——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制. [MQTT协议角色]——在RESTful架构的物联网系统,包含两个角色客户端和服务器端,而在MQTT协议中包括[MQTT协议消息]——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用. [MQTT协议主题]——MQTT中的主题可理解为相同类型或相似类型的消息集合. -----------…
前言 MQTT(Message Queuing Telemetry Transport),是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务.MQTT是专门针对物联网开发的轻量级传输协议.MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景.本文旨在研究其在消息发布/订阅/接收场景下的应用. MQTT协议中的几个重要概念 服务端 是发送消息的客户端和请求订阅的客户端之间的中介,又称…
背景 QoS 等级 与 通信的流程有关,直接影响了整个通信.而且篇幅比较长,所以我觉得应该单独拎出来讲一下. 概念 QoS 代表了 服务质量等级. 设置上,由2 位 的二进制控制,且值不允许为 3(0x11). QoS值 Bit 2 Bit 1 描述 0 0 0 最多分发一次 1 0 1 至少分发一次 2 1 0 只分发一次 - 1 1 保留位 要注意的是,QoS 是 Sender 和 Receiver 之间达成的协议,不是 Publisher 和 Subscriber 之间达成的协议. 也就是…
背景 从本章开始,在没有特殊说明的情况下,文章中的MQTT版本均为 3.1.1. MQTT 协议是物联网中常见的协议之一,"轻量级物联网消息推送协议",MQTT同HTTP属于第七层(应用层). 对于网络分层还不太熟悉的朋友请点击:<网络OSI七层模型及各层作用 与 TCP/IP> 参考:<物联网网关中MQTT和Modbus之间有何区别 >.<MQTT 入门介绍> 文档资料:<MQTT协议中文版资料>.<MQTT协议英文版资料>…
背景 keep alive 是 CONNECT 报文中可变头的一部分. 我们提到过 Broker 需要知道 Client 是否非正常地断开了和它的连接,以发送遗愿消息.实际上 Client 也需要能够很快地检测到它失去了和 Broker 的连接,以便重新连接. MQTT 协议是基于 TCP 的一个应用层协议,理论上 TCP 协议在丢失连接时会通知上层应用,但是 TCP 有一个半打开连接的问题(half-open connection).这里我不打算深入分析 TCP 协议,需要记住的是,在这种状态…
前言 通过前面了解MQTT有关概念.分析了有关的报文,我们对于这个协议也有了更深的认识.但纸上谈来终觉浅,绝知此事要躬行. 本文参考:<STM32+W5500+MQTT+Android实现远程数据采集及控制>.<物联网核心之MQTT移植 >.<基于联盛德w600的mqtt客户端程序示例> host平台 :Ubuntu 16.04 Taget :STM32 + W5500. MQTT-client : paho.mqtt.embedded-c W5500 - 芯片介绍 全…
一. 简述 以前在学校学习计算机网络的时候学习多是网络7层模型OSI,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什么东西,这个OSI它和 TCP/IP协议簇到底是什么关系,为什么有很多协议一样?ip指令格式是什么样的?为什么老是忘记,记不住?3次握手,4次握手协议是什么?ack,syn等等说不清道不明字段是指什么?为什么以太网网卡通信速率有100mbps,两台主机之间的通信却只有不到120kpbs?...所有的…
一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP数据报首部就标明了这两台主机的IP地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程. 主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和QQ在同时运行),下图中,A主机的AP1进程在于B主机的AP3进程通信,同时主机A的AP2进程也在与B主机的AP4进程通信. 两个主机的传输层之间有一个灰色双向箭头,写着“传输层提供应用进程间的逻辑通…
"移植"的重要性:并非所有的电路都得自己设计,到了一定阶段,"移植"也是一种学习能力.--CrazyBingo 转眼间期末又到了,最近开始了所谓的期末总预习,比赛最终还是把作品交了,也算是对自己这学期一个交代了吧,感觉不总结出来总是少点什么,所以还是在努力一把,熬夜把之前的东西整理出来吧.Bingo说的"移植"是一种能力,但是完全拿别人的代码拿来用不加以思考和学习,那样是没有意义的,这学期就是因为"移植"的太多了,才感觉学到的…
背景 之前我们提到了怎么发布消息对应的报文:现在我们来看,订阅一个主题的报文是怎么样的. SUBSCRIBE - 订阅主题 客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅.每个订阅注册客户端关心的一个或多个主题.为了将应用消息转发给与那些订阅匹配的主题,服务端发送PUBLISH报文给客户端.SUBSCRIBE报文也(为每个订阅)指定了最大的QoS等级,服务端根据这个发送应用消息给客户端. SUBSCRIBE 的 固定报头 Bit 7 6 5 4 3 2 1 0 byte 1 MQ…
背景 有关博文:通信报文的构成 . 上一讲说到可变头与消息体要结合不同的报文类型才能够进行分析(实际上,官方的文档的介绍顺序就是这样的) 那么,我们就来具体看看有关的报文类型. 在此之前 我们捋一捋完整的通信流程,以及在这个过程中有关的报文. 客户端到服务端的网络连接建立后,客户端发送给服务端的第一个报文必须是CONNECT, 连接服务端报文. 服务端发送CONNACK, 确认连接请求报文响应从客户端收到的CONNECT报文.服务端发送给客户端的第一个报文必须是CONNACK. PUBLISH,…
背景导入 让我们来看一下这个场景: 你有一个温度传感器,它每三个小时向一个 Topic 发布当前的温度.那么问题来了,有一个新的订阅者在它刚刚发布了当前温度之后订阅了这个主题,那么这个订阅端什么时候能才能收到温度消息? 对的,它必须等到三个小时以后,温度传感器再次发布消息的时候才能收到.在这之前,这个新的订阅者对传感器的温度数据一无所知. 怎么来解决这个问题呢? 这个时候就轮到 Retained 消息出场解决这个问题了.Retained 消息是指在 PUBLISH 数据包中 Retain 标识设…
 USB设备描述符 字段名 长  度(字节)  地址偏移 含           义 bLenth   1  0  描述符长度 bDescriptorType   1  1 描述符类型 (这里为 1) bcdUSB   2  2 USB规范版本号(BCD码)  bDeviceClass   1  4 类代码  bDeviceSubClass   1  5 子类代码  bDeviceProtocol  1  6 协议代码  bMaxPackSize0   1  7 端点0最大支持数据包长度  id…
概述 上一篇给大家介绍了DNS协议和HttpDns协议,现在给大家介绍一下CDN和数据中心相关的知识. CDN:你去小卖部取过快递么? 如果你去电商网站下单买个东西,这个东西一定要从电商总部的中心仓库送过来吗?原来基本是这样的,每一单都是单独配送,所以你可能要很久才能收到你的宝贝.但是后来电商网站的物流系统学聪明了,他们在全国各地建立了很多仓库,而不是只有总部的中心仓库才可以发货.电商网站根据统计大概知道,北京.上海.广州.深圳.杭州等地,每天能够卖出去多少书籍.卫生纸.包.电器等存放期比较长的…
概述 之前讲解了传输层的相关知识,现在讲解一下关于应用层的知识,主要是大家所熟悉的http和https,这2中是咱们最熟悉的协议了,但是也是最不熟悉的协议. HTTP协议:看个新闻原来这么麻烦 HTTP 协议,几乎是每个人上网用的第一个协议,同时也是很容易被人忽略的协议.既然说看新闻,咱们就先登录 http://www.163.com .http://www.163.com 是个 URL,叫作统一资源定位符.之所以叫统一,是因为它是有格式的.HTTP 称为协议,www.163.com 是一个域名…
概述 前面学习网络知识的时候写过一篇关于套接字的随笔见<JAVA SOCKET 详解>,现在本人正在系统的学习网络知识,现在除了温故知新之外,在详细的学习记录一下套接字的知识. Socket 这个名字很有意思,可以作插口或者插槽讲.虽然我们是写软件程序,但是你可以想象为弄一根网线,一头插在客户端,一头插在服务端,然后进行通信.所以在通信之前,双方都要建立一个 Socket.在建立 Socket 的时候,应该设置什么参数呢?Socket 编程进行的是端到端的通信,往往意识不到中间经过多少局域网,…
概述 传输层里比较重要的两个协议,一个是 TCP,一个是 UDP.对于不从事底层开发的人员来讲,或者对于开发应用的人来讲,最常用的就是这两个协议.由于面试的时候,这两个协议经常会被放在一起问,因而我在讲的时候,也会结合着来讲. TCP 和 UDP 区别 TCP 是面向连接的,UDP 是面向无连接的.什么叫面向连接,什么叫无连接呢?在互通之前,面向连接的协议会先建立连接.例如,TCP 会三次握手,而 UDP 不会.为什么要建立连接呢?你 TCP 三次握手,我 UDP 也可以发三个包玩玩,有什么区别…