最近我发现了一个奇怪的现象,好多小伙伴无法理解一个问题:有些小伙伴认为模组支持哪些协议在出厂时就定义好了,无法增加,其实这样的观点是错误的,因为协议和代码一样,都是分层的,有的协议工作在应用层,有的协议工作在传输层(TCP/IP四层参考模型)。

例如ESP8266模组,其内置了TCP/UDP协议,并未内置COAP/LWM2M/MQTT协议,我们可以通过集成一些基于TCP/UDP协议开源的库,让ESP8266支持COAP/LWM2M/MQTT协议。

TCP/IP四层参考模型

下图为TCP TCP/IP四层参考模型,可以理解为OSAL7层参考模型的简化版,虽然是简化版,但是对于大家理解今天的这个问题足够了。

网络访问层:也可以称为“网络链路层”,暂且理解为硬件上的有线/无线网卡、网线等,作用是通过物理连接将一个设备中的网络数据包传输给另外一个设备,其并不关心上层数据的内容,只关心如何通过光/电信号将上层丢过来的数据给发出去,并保证物理连接上不出错。

网络互连层:可以理解为路由器的功能,帮助各种数据包(包裹)找到目的主机(收件人)和源主机(寄件人),以及通过各类算法规划最佳的传输路径(如何在最短的路程和最短的时间内将包裹送达,避开堵车、正在施工、禁止通行的道路)。

传输层:TCP、UDP协议就是这层的协议,能够解决诸如端到端可靠性(“数据是否已经到达目的地?”)和保证数据按照正确的顺序到达这样的问题。为应用层的协议提供支持,这也是文章开头提到的问题的答案,只要模组支持TCP/UDP协议,我们就能让它运行COAP/LWM2M/MQTT协议,这些协议属于应用层协议,只要传输层能提供支持,就能运行。用汽车来给大家比较下,只内置了TCP/UDP协议的模组就像手动挡汽车一样,内置了COAP/LWM2M/MQTT协议的模组就像自动挡汽车一样,将离合换挡等操作进行了封装,降低了开发难度。

应用层:它们提供服务直接支持用户应用,COAP/LWM2M/MQTT协议都属于该层的协议,他们在TCP/UDP协议的基础和特性上一些改良,为用户提供了更稳定、更便捷、功能更多数据的传输服务。

这里4层协议中遵循一个规定:下层的协议不关心上层的数据,直接将上层的数据当作一个“荷载”,并在“荷载”的头部添加上自己特有的数据格式,然后将数据丢给下层。

例如我是TCP协议,属于传输层,当应用层MQTT协议给了我一个数据包,我不关心这个数据包里面有什么,我在数据包的开头加上TCP的版本号、目标地址、源地址、目标端口、源端口,然后将整个数据打包,丢给网络互连层。

一个MQTT包裹的快递路线

我们通过MQTT.fx软件给华为云IoTDA服务发送一条MQTT消息,数据包在我们的电脑上会进行如下图所示多层封装。

最终数据包经由运营商核心网,到达华为云服务器中,将数据包进行解析,解析的方式和封装相反,如下图所示:

最终IoTDA平台将上图所示的MQTT部分中的用于数据呈现出来,并根据其中的QOS之类的标志位给予回应。

php lwm2m,理解COAP/LWM2M/MQTT协议和TCP/UDP协议的关系相关推荐

  1. OSI协议和TCP/IP协议笔记

    1.OSI协议: 第7层应用层:OSI中的最高层.是用户与网络的接口.该层通过应用程序来完成网络用户的应用需求,如文件传输.收发电子邮件等.在此常见的协议有:HTTP,HTTPS,FTP,TELNET ...

  2. OPC协议和TCP/IP协议的区别和联系是什么

    OPC(OLE for Process Control)技术是指为了给工业控制系统应用程序之间的通信建立一个接口标准,在工业控制设备与控制软件之间建立统一的数据存取规范.它给工业控制领域提供了一种标准 ...

  3. 【计算机网络】分层、OSI七层协议和TCP四层协议

    文章目录 1. 计算机网络体系结构 2. OSI七层模型 2. TCP/IP四层模型 3. 五层协议 4. 数据传输 4.1 首部 1. 计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构 ...

  4. RabbitMQ MQTT协议和AMQP协议

    RabbitMQ MQTT协议和AMQP协议 1        序言... 1 1.1     RabbitMq结构... 1 1.2     RabbitMq消息接收... 4 1.3     Ex ...

  5. 【一文学会MQTT协议和mosquitto】

    一文学会MQTT协议和mosquitto 一..MQTT的基本概念 二.mosquitto mosquitto基本概念 常用API 三.MQTT测试 EMQX 一..MQTT的基本概念 MQTT是一种 ...

  6. TCP协议和TCP连接

    TCP协议和TCP连接 一.TCP协议的简介 二.TCP连接的简介 1.TCP连接的建立(TCP三次握手) 2.TCP连接的断开(TCP四次挥手)   一.TCP协议的简介   TCP(Transmi ...

  7. http协议及http协议和tcp协议的区别

    http是应用层的协议,并且无连接,无状态的协议. http协议的特点: 1.支持c/s模式 2.简单快速:客户端向服务器端传送数据的时候,只需要发送请求方法和路径,请求方法有:post,get,he ...

  8. IP协议和TCP协议详解

    IP协议和TCP协议详解 IP协议 IP协议的特点 IPV4头部信息 IP分片 重定向 IPV6头部结构 TCP协议 TCP协议的特点 TCP头部结构 TCP连接的建立与关闭 异常终止连接 异常终止连 ...

  9. 计算机网络整理:UDP协议和TCP协议

    系列文章目录 HTTP协议和HTTPS协议 文章目录 系列文章目录 一.TCP/IP 各层协议 二.UDP协议和TCP协议 1.TCP和UDP的区别 2.UDP 协议 3.TCP 协议 1)特点 2) ...

  10. 精述IBM的MQTT协议和MQTT-S协议

    一.MQTT简介 MQTT (Message Queuing Telemetry Transport) 是由IBM研发的构建在TCP/IP之上的简单轻量的消息协议,目标使用场景为受限制环境,如低带宽. ...

最新文章

  1. 专访阿里资深研发工程师窦贤明:PG与商业数据库差距并不明显
  2. python property setter_Python:动态属性 property setter 以及 __getattr__ 属性
  3. fegin 参数丢失_许多参数和丢失的信息
  4. Spring Data JPA 从入门到精通~事务的处理及其讲解
  5. CCF201912-1 报数
  6. 沈阳java基础培训,辽宁沈阳java培训学费大概多少
  7. 6-5-JSP动作元素
  8. 如果不交社保,每月都存500元,存15年够自己养老用吗?
  9. Chrome 内存和CPU消耗量双料冠军
  10. 实例开发:ASP.NET创建网络相册
  11. java集群如何同步_Kafka 跨集群同步方案
  12. H3CSE路由-路由策略
  13. 软件测试技术之项目上线流程
  14. SpringCloud集成分布式事务LCN
  15. 如何使用MATLAB coder将MATLAB代码转换成C/C++语言(详细图文教程)
  16. JS window对象
  17. 安卓手机卸载手机自带软件(adb)
  18. VSCode Conventional Commits 插件
  19. 开源蜜罐T-pot 19.03安装和使用
  20. 类继承和依赖注入的关系_管理类依赖关系:依赖关系注入,服务定位符和工厂简介,第1部分...

热门文章

  1. 用Python搭建股票舆情分析系统
  2. 自动采集电影网站PHP源码
  3. mx250显卡天梯图_2020新版显卡天梯图 RTX3060性能公布
  4. 有趣的github项目
  5. HTML5新特性之标签实战应用:超星尔雅平台
  6. windows创建服务删除服务
  7. 服务器注册dll,我在注册全部dll时出现. “Microsoft(C)注册服务器已停止工作”,我是为了解决一个...
  8. bugku之江湖魔头
  9. Oracle标准建表语句
  10. hough变换检测圆周_hough变换是如何检测出直线和圆的?