MQTT HTTP、MQTT、Websocket、WebService 有什么区别

so_cool · 2020年03月10日 · 349 次阅读
本帖已被设为精华帖!
  • 相同点:HTTP、MQTT、Websocket 均为 OSI 7 层模型的【应用层协议】 注意. WebService 并非通信协议,而是一种远程接口调用(RPC)的框架技术。
  • 不同点:如下

MQTT

MQTT 协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

  1. 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
  2. 对负载内容屏蔽的消息传输;
  3. 使用 TCP/IP 提供网络连接;
  4. 有三种消息发布服务质量:
  5. “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
  6. “至少一次”,确保消息到达,但消息重复可能会发生。
  7. “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

HTTP

HTTP 是一个属于应用层的,基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

通信方式

  • 浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送请求。Web 服务器根据接收到的请求后,向客户端发送响应信息。
  • HTTP 之请求消息 Request:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
  • HTTP 之响应消息 Response:HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
  • 若 connection 模式为 close,则服务器会主动关闭 TCP 连接,客户端被动关闭连接,释放 TCP 连接;若 connection 模式为 keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求; 不足:

  • HTTP 通信方式问题,HTTP 的请求/应答方式的会话都是客户端发起的,缺乏服务器通知客户端的机制,在需要通知的场景,如聊天室,游戏,客户端应用需要不断地轮询服务器。

Websocket 协议(非 socket)

  • WebSocket 协议是基于 TCP 的一种应用层网络协议。它实现了浏览器与服务器全双工 (full-duplex) 通信——允许服务器主动发送信息给客户端。
  • 取代了网页和服务器采用 HTTP 轮询进行双向通讯的机制。

WebService:RPC 框架的一种

XML+XSD,SOAP 和 WSDL 就是构成 WebService 平台的三大技术。

1)XML+XSD

1.1)WebService 采用 HTTP 协议传输数据,采用 XML 格式封装数据(即 XML 中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的 返回结果是什么)。XML 是 WebService 平台中表示数据的格式。除了易于建立和易于分析外,XML 主要的优点在于它既是平台无关的,又是厂商无关 的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

1.2)XML 解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16 位,32 位,64 位?这 些细节对实现互操作性很重要。XML Schema(XSD) 就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService 平台就 是用 XSD 来作为其数据类型系统的。当你用某种语言 (如 VB.NET 或 C#) 来构造一个 Web service 时,为了符合 WebService 标准,所 有你使用的数据类型都必须被转换为 XSD 类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。

2)SOAP

2.1)WebService 通过 HTTP 协议发送请求和接收结果时,发送的请求内容和结果内容都采用 XML 格式封装,并增加了一些特定的 HTTP 消息头,以说明 HTTP 消息的内容格式,这些特定的 HTTP 消息头和 XML 内容格式就是 SOAP 协议。SOAP 提供了标准的 RPC 方法来调用 Web Service。

2.2)SOAP 协议 = HTTP 协议 + XML 数据格式

SOAP 协议定义了 SOAP 消息的格式,SOAP 协议是基于 HTTP 协议的,SOAP 也是基于 XML 和 XSD 的,XML 是 SOAP 的数据编码方式。打个比 喻:HTTP 就是普通公路,XML 就是中间的绿色隔离带和两边的防护栏,SOAP 就是普通公路经过加隔离带和防护栏改造过的高速公路。 3)WSDL
原文链接:https://blog.csdn.net/wzhqazcscs/article/details/79603261

ThingsKit 将本帖设为了精华贴 03月10日 23:55
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册