在物联网传输中,TCP和MQTT为什么不同?

有这样两个过程:

1. 物联网设备通过MQTT协议,连接到一个物联网服务器,服务器再通过MQTT协议转发给其他的物联网设备。

2. 物联网设备通过TCP协议,连接到一个物联网服务器,服务器再通过TCP协议转发给其他物联网设备。

这两个过程在看起来是解决的是同样一个问题,但MQTT协议是应用层的协议,而TCP协议不是应用层的协议,反而是传输层的协议。

而我之前对协议的理解是:协议主要是看它所面对和解决的通信问题来决定它所在的层数。

这句话好像不能完美解决这两个例子带来的问题,于是这两个例子困扰我一段时间。

最近我了解到:

在两个例子中,都涉及到了数据的发送和接收,这确实是两个协议的共同点。然而,TCP 和 MQTT 在处理这个问题上的方法和关注点是不同的,这也是它们属于不同 OSI 层级的原因。


TCP(传输控制协议):这是一个传输层协议。它关注的是如何在两个网络端点之间可靠地传输数据。TCP 为应用层提供了一个看似无错误的连接,它通过序列号、确认应答、重传等机制保证数据的正确和有序传输。然而,TCP 并不关心数据包的内容,它只是负责“搬运”。


MQTT(消息队列遥测传输):这是一个应用层协议,它定义了数据的格式和交互方式。MQTT 将信息封装为“主题”(topics)和“消息”(messages),允许客户端发布和订阅特定主题的消息。这是一个应用层的行为,因为它涉及到如何解释和处理数据。在实际应用中,MQTT 通常运行在 TCP 之上,利用 TCP 提供的可靠数据传输。


所以,尽管在某种程度上,TCP 和 MQTT 都涉及到了数据的发送和接收,但它们处理这个问题的层次和方法是不同的。TCP 在更底层,关注的是如何可靠地传输数据,而 MQTT 在更高层,关注的是如何封装和处理数据。这就是为什么我们说 TCP 是传输层协议,而 MQTT 是应用层协议的原因。

总结就是:

TCP是传输层协议,关注如何在网络端点间可靠地传输数据,处理“搬运”问题。MQTT是应用层协议,定义了数据的格式和交互方式,处理数据的封装和解释。虽然TCP和MQTT都涉及数据的发送和接收,但处理问题的层次和方法不同,故分属不同的OSI层级。

所以即使MQTT协议在内容上(如报头)和TCP协议有很多类似,甚至可以说是在TCP协议上包装了一个账号密码认证报头,MQTT依然属于应用层的协议。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值