物联网传输中,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依然属于应用层的协议。

作者:学习通信的Martin

物联沃分享整理
物联沃-IOTWORD物联网 » 物联网传输中,TCP与MQTT有何区别?

发表回复