当前位置: 首页 > news >正文

TCP和MQTT通信协议

协议分层

网络分层                                            协议
应用层       Co AP        MQTT        HTTP
传输层                UDP        TCP
网络层                                        IP
链路层                                     Enternet

网络分层中最常见的几种协议

应用层:应用程序负责将数据以相应规则(协议)进行包装,发给传输层

  • MQTT:消息队列遥测传输
  • CoAP:受限应用协议
  • HTTP:超文本传输协议

传输层:负责将应用层传输过来的数组进行分组,为确保终端接收数据的顺序和完整性,会对每个分组进行标记,交给网络层

  • TCP:传输控制协议
  • UDP:用户数据协议

网络层:负责将传输层发过来的数据分组发送到目标终端

  • IP:网际协议

链路层:为网络层发送和接收数据单元

  • Ethernet:以太网传输协议

简要介绍MQTT协议和TCP协议

MQTT

        MQTT(Message Queuing Telemetry Transport)协议是一种轻量级的发布/订阅消息传输协议。它专门设计用于在低带宽和不稳定的网络环境下传输消息。

        其采用发布/订阅模式,其中客户端可以发布消息到主题(Topic),而其他客户端可以订阅这个主题来接收消息。这种模式使得MQTT非常适用于物联网设备之间的通信,因为它可以提供高效的消息传递和降低网络流量。

        它非常轻量,以至于可以在低功耗和资源受限的设备上运行。它使用TCP/IP协议进行传输,但是与传统的TCP协议相比,MQTT减少了许多开销,使得它可以在网络带宽较低的情况下实现快速的消息传递。

TCP 

        TCP(Transmission Control Protocol)协议是一种面向连接的网络传输协议。它是互联网协议簇中的一个核心协议,负责在不同设备之间建立可靠的连接。

        它通过三次握手来建立连接,确保数据的可靠传输。它提供了流量控制、拥塞控制和错误恢复的机制,以保证数据的完整性和可靠性。因此,TCP适用于对数据传输速度和可靠性有严格要求的场景,例如文件传输和网页浏览。

        然而,TCP协议的开销相对较大,需要较高的带宽和资源,对于一些低功耗和资源受限的设备来说可能不太适合。在这种情况下,可以使用类似MQTT这样的协议,通过减少开销和优化消息传输,实现高效的通信。

MQTT协议和TCP协议的对比

                    TCP                        MQTT
网络分层传输层应用层
协议定位面向连接的、可靠的、基于字节流的传输层通信协议

低带宽、高延迟不可靠的网络下进行数据相对可靠传输

设计初衷分组交换简单并适应loT物联网
传输定位数据包消息
技术挑战异构环境网络下的网络拥塞、丢包、乱序、重复包等多种问题资源有限的硬件和不可靠的网络下,数据相对可靠运输
服务质量通过ACK确认和重传机制,发送和接收的报文完全一致,并且保序

提供QoS为0、1、2三种可选的消息服务等级,消息传输不保序

1.协议层次与定位:
① TCP/IP:是一个协议族,是互联网的基础协议套件,它定义了电子设备如何在网络上进行通信。TCP/IP协议由多个层次组成,包括网络层(IP协议)和传输层(TCP协议)等。
② MQTT:是一个基于发布/订阅模式的消息传输协议,工作在应用层,通常用于物联网(IoT)设备之间的通信。MQTT依赖于TCP/IP协议族中的TCP协议来提供网络连接。
2.设计目的与适用场景:
① TCP/IP:设计用于广泛的网络环境和应用场合,提供稳定且可靠的连接。它适用于需要可靠传输的应用场景,如Web浏览、电子邮件和文件传输等。
② MQTT:设计用于连接带宽有限、延迟较高、网络不稳定的环境,特别是物联网(IoT)应用。它非常适合设备间的低功耗、小数据量通信。
3.消息传输模式:
① TCP/IP:基于连接的方式,通过三次握手建立连接,并使用序列号和确认应答机制保证数据的可靠传输。
② MQTT:基于发布/订阅模式,提供一对多的消息发布,解除应用程序耦合。它允许客户端订阅或发布特定的主题,服务器则负责消息的分发。
4.性能与开销:
① TCP/IP:提供了高可靠的数据传输服务,但协议栈较为复杂,需要消耗更多的计算资源。
② MQTT:设计简洁,开销小,传输效率高。它使用小型的控制包和变长的包头设计,极大程度地减少了数据传输过程中的冗余和带宽消耗。
5.服务质量(QoS):
① TCP/IP:传输层中的TCP协议提供了流量控制和拥塞控制等机制,确保数据的可靠传输。
② MQTT:支持三种服务质量(QoS)等级,允许根据消息的重要性设置不同的服务质量等级,确保消息的投递可靠性与时效性。
6.网络拓扑结构:
① TCP/IP:基于IP协议,具有路由功能,能够识别不同的网络和主机,并为数据包选择路由和路径。
② MQTT:基于发布/订阅模式,客户端可以订阅一个或多个主题,接收来自这些主题的消息。消息通过MQTT Broker(代理服务器)进行分发,客户端与Broker之间建立连接。
7.适用场景与设备:
① TCP/IP:适用于各种网络环境和应用场合,包括传统互联网、局域网、广域网等。
② MQTT:特别适用于物联网(IoT)设备之间的通信,如智能家居、工业自动化、环境监测等领域。MQTT适用于资源受限的设备,如低功耗嵌入式设备等。
 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 音视频开发常见的开源项目汇总
  • C语言自定义类型结构体(24)
  • 免费SSL证书正在逐渐被淘汰,证书部署自动化的发展趋势即将到来!
  • LabVIEW中AVI帧转图像数据
  • 从ANN到SNN的转换:实现、原理及两种归一化方法【MINIST、实战】
  • 【JVM】类加载
  • 上海亚商投顾:沪指探底回升 华为产业链午后爆发
  • Js中的pick函数
  • 关于STM32项目面试题01:电源
  • sqli-labs靶场自动化利用工具——第1关
  • 深入理解 C++ 中的 static_assert 编译期断言
  • Linux下的简单TCP客户端和服务器
  • 爬虫逆向学习(六):补环境过某数四代
  • 用Python创建一个键盘输入捕获程序
  • 【JavaScript】数据结构之树
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 10个最佳ES6特性 ES7与ES8的特性
  • axios 和 cookie 的那些事
  • ES6 学习笔记(一)let,const和解构赋值
  • gcc介绍及安装
  • IndexedDB
  • iOS编译提示和导航提示
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript的使用你知道几种?(上)
  • Java到底能干嘛?
  • js中的正则表达式入门
  • Laravel 实践之路: 数据库迁移与数据填充
  • leetcode386. Lexicographical Numbers
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • rabbitmq延迟消息示例
  • Tornado学习笔记(1)
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue实战(四)登录/注册页的实现
  • Web Storage相关
  • Web设计流程优化:网页效果图设计新思路
  • windows下如何用phpstorm同步测试服务器
  • Zsh 开发指南(第十四篇 文件读写)
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 如何解决微信端直接跳WAP端
  • 深度学习中的信息论知识详解
  • 什么软件可以剪辑音乐?
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 听说你叫Java(二)–Servlet请求
  • 微信开放平台全网发布【失败】的几点排查方法
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • # Maven错误Error executing Maven
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (2)STL算法之元素计数
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (a /b)*c的值
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (超详细)语音信号处理之特征提取