单片机-协议了解

UDP/TCP通信

UDP(User Datagram Protocol):

  1. 连接性: UDP是一种面向无连接的协议。发送端只是把数据包发送到网络上,而不考虑目标是否存在或是否准备好接收数据。
  2. 可靠性: UDP不提供数据包的可靠交付。数据包被发送出去,但发送端不会对是否被接收到或接收顺序进行确认。因此,UDP更适用于一些实时性要求高、对数据可靠性要求相对较低的应用,如实时视频、音频传输。
  3. 开销: 由于不需要建立连接,UDP的开销相对较小,传输速度更快。
  4. 流式传输: UDP不支持流式传输,每个数据包都是独立的。

TCP(Transmission Control Protocol):

  1. 连接性: TCP是一种面向连接的协议。在数据传输之前,需要先建立连接,然后再进行数据传输,最后释放连接。
  2. 可靠性: TCP提供可靠的数据传输。它保证数据的顺序和可靠性,通过使用确认机制和重传机制来确保数据的正确性。
  3. 开销: 由于需要建立连接、进行确认和重传机制,TCP的开销相对较大,传输速度相对较慢。
  4. 流式传输: TCP是面向流的,数据是以流的形式传输的,而不是分割成独立的数据包。

HTTP协议

webSocket协议

WebSocket(通常缩写为WS)是一种在单个TCP连接上进行全双工通信的协议,它允许在客户端和服务器之间进行双向实时通信。与传统的HTTP协议不同,WebSocket协议的设计目标是在保持低延迟的同时提供高效的全双工通信。

以下是WebSocket协议的一些关键特点:

  1. 建立连接: WebSocket连接始于通过HTTP协议进行的握手阶段。客户端发起一个HTTP请求,其中包含了对WebSocket的协议升级请求,服务器同意升级后,连接就被升级为WebSocket。
  2. 全双工通信: 一旦建立了WebSocket连接,客户端和服务器之间可以同时发送和接收数据,而不需要等待对方的响应。这使得实时性要求高的应用,如在线聊天、实时游戏和股票市场报价等能够更高效地进行通信。
  3. 轻量级: WebSocket协议是一种相对轻量级的协议,协议头部相对较小,减少了额外的网络开销。
  4. 支持跨域: WebSocket支持跨域通信,因为在建立连接时,可以在HTTP协议的握手阶段进行跨域请求处理。
  5. 持久连接: WebSocket连接是持久的,可以在连接建立后保持活动状态,而不需要在每次通信时都重新建立连接。这有助于减少网络延迟和提高性能。

在客户端,JavaScript提供了WebSocket API,使得在浏览器中轻松使用WebSocket。在服务器端,有许多编程语言和框架支持WebSocket,如Node.js、Python的WebSocket库等。

WebSocket的使用场景包括实时消息推送、在线游戏、实时协作应用、股票市场报价等需要实时性和双向通信的应用程序。

MQTT协议

MQTT(Message Queuing Telemetry Transport)是一种轻量级的、开放的、基于发布/订阅模式的消息传输协议。它设计用于在低带宽、高延迟或不稳定的网络环境中,实现设备与设备之间的可靠通信。以下是MQTT协议的一些关键特点:

  1. 发布/订阅模式: MQTT采用发布/订阅模式,其中客户端可以发布(发送)消息到特定的主题(Topic),而其他客户端则可以订阅(接收)这些主题上的消息。这种模式使得设备之间的通信更为灵活和松散耦合。
  2. 轻量级: MQTT协议设计为轻量级,协议头部相对较小,适用于受限的网络带宽和资源有限的设备,例如物联网设备。
  3. 保持连接: MQTT客户端与服务器之间的连接是持久的,可以保持长时间的活动状态,避免了频繁的连接和断开操作。
  4. 遗嘱消息: 客户端可以指定一个遗嘱消息,在连接异常中断时,服务器将自动向其他订阅了相应主题的客户端发送遗嘱消息,以通知它们设备的状态。
  5. 服务质量等级(QoS): MQTT支持不同的服务质量等级,包括最多一次传递、至少一次传递和只有一次传递。这些等级允许客户端和服务器在消息传递的可靠性和效率之间进行权衡选择。
  6. 安全性: MQTT协议支持基于TLS/SSL的加密和认证机制,以确保通信的安全性。
  7. 广泛应用: MQTT在物联网(IoT)领域得到了广泛应用,因为它适用于连接数众多、网络带宽受限的设备,同时提供了可靠的消息传递机制。

总体而言,MQTT是一种适用于物联网和其他低带宽、高延迟环境下的通信协议,其设计注重轻量级和灵活性