MQTT运行于TCP/IP的含义及TCP特性对其连接的作用问询
问题解答
1. MQTT“运行于TCP/IP之上”的具体含义
我们常说的TCP/IP是一套分层的网络通信协议框架,MQTT属于该框架下的应用层协议,默认使用TCP作为传输层协议承载自身报文,再向下依赖IP层实现跨网络的节点寻址,整个通信流程完全遵循TCP/IP协议簇的分层规则,不需要自行实现底层的连接管理、数据路由等基础能力,这就是该说法的具体所指。
你提到的分层示意图也能对应上这个逻辑:最上层的IoT应用协议(MQTT属于这类)构建在TCP层之上,TCP再向下对接IP层,完全归属TCP/IP协议簇的分层体系内。
补充说明:这个说法也用来区分MQTT的非TCP/IP承载场景,部分低功耗物联网场景下MQTT也可以基于串口、LoRaWAN等非TCP/IP的传输层实现,这类场景就不属于“运行于TCP/IP之上”的范畴。
2. TCP特性对MQTT的传输支撑
你的理解是正确的,基于TCP传输的MQTT确实可以直接复用TCP的能力,获得有序、无损的传输保障:
- TCP的三次握手机制会保证两端建立可靠的双向连接后,才会开始传输MQTT报文
- TCP的序号编排机制可以保证MQTT报文到达对端时的顺序和发送端完全一致,不会出现乱序
- TCP的超时重传、校验和校验机制可以保证传输过程中不会出现数据丢失、错误未被检出的情况
额外提示:TCP的可靠性属于传输层保障,仅保证报文在两个TCP连接端点之间的传输是有序无损的。而MQTT本身定义的QoS(服务质量)等级是应用层的可靠性机制,用来保证MQTT消息在发布端、消息Broker、订阅端三者之间的送达符合业务要求,二者属于不同层级的能力,互不冲突。
内容的提问来源于stack exchange,提问作者kakaka
相关产品推荐
相关产品推荐

