物联网中几个常用协议总结

举报
Jack20 发表于 2021/04/20 11:33:53 2021/04/20
【摘要】 一、HTTP      HTTP ( HyperText Transfer Protocol,超文本传输协议)是用于从 WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。      HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端...

一、HTTP

      HTTP ( HyperText Transfer Protocol,超文本传输协议)是用于从 WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

      HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

      同时HTTP是一个无状态的协议。同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。为了解决这个问题,Web程序引入了Cookie机制来维护状态。

      并且HTTP是一种同步协议。客户端需要等待服务器响应。Web浏览器具有这样的要求,但它的代价是牺牲了可伸缩性。在 loT领域,大量设备以及很可能不可靠或高延迟的网络使得同步通信成为问题。异步消息协议更适合loT应用程序。传感器发送读数,让网络确定将其传送到目标设备和服务的最佳路线和时间。

      HTTP是一种有许多标头和规则的重量级协议。它不适合受限的网络。

建立过程中三次握手:

SYN:同步;Seq:序号;ACK:确认;ack:确认序号

(1)第一次握手:
      当客户端想与服务器建立连接的时候,会发送一个请求连接的报文,此报文首部中的SYN=1(TCP规定,SYN= 1的报文段不能携带数据,并且需要消耗一个序号),同时随机生成初始序列号Seq=X,客户端进入了SYN-SENT(同步以发送状态)。

(2)第二次握手:
      服务器接收到客户端发送的连接请求报文后,如果同意连接,则发出确认报文,其中确认报文段中SYN=1,ACK=1,同时随机初始化一个序列号Seq=Y,确认号ack=X+1,而且服务器也进入SYN_RCVD(同步接收状态)。

(3)第三次握手:
      客户端接收到确认报文后,还需要向服务器发出确认报文。确认报文的ACK=1,ack=Y+1,此时,TCP连接建立成功,客户端进入ESTABLISHED(已建立连接)状态。

三次握手的重要性:
      当客户端发送第一个请求连接的报文的时候,由于网络阻塞原因,导致服务端不能及时收到,直到某个时刻才收到请求连接的报文,此时此刻服务器收到的已经是一个失效的报文了,服务器给客户端发送确认报文,等待客户端的连接,假设采用的是两次握手,客户端不理睬服务器发送的确认报文,而服务器一直等待接收客户端的请求,这样导致服务器很多资源浪费,而如果采用三次握手,服务器接收不到客户端的确认报文,就会断开与客户端的连接,因此采用三次握手更为合适。


二、MQTT

      MQTT (Message Queuing Telemetry Transport,消息队列遥测传输),是IBM开发的一个即时通讯协议。MQTT协议采用订阅/发布的工作模式,客户端向服务器订阅感兴趣的信息,服务器把信息推送给订阅了这类信息的客户端。

MQTT的特点:

  1. 协议简单,轻量级(消息可以短至两个字节,对终端的硬件配置要求低,适用于CPU等硬件资源有限的场合,有助于降低终端成本,推动产业发展)。
  2. 基于TCP/IP,消息传递可靠。
  3. 使用长连接,有心跳保活机制,减少重新建链开销。支持消息实时通知、有丰富的推送内容。
  4. 心跳机制不利于设备进入休眠模式,设备比较耗电。
  5. MQTT的特点非常符合无线传感网、物联网等领域的要求,目前智慧家庭解决方案主要就是用的MQTT协议。

客户端(Client):

  1. 包括发布者或订阅者,两者都是MQTT客户端,分别负责发布或订阅。
  2. 可以是从微控制器到一个完全成熟的服务器,在设备上运行着MQTT库并且可以通过任何网络连接到MQTT代理服务器。

代理服务器(Broker):

  1. 是任何发布/订阅协议的核心,可以处理多达成千上万的MQTT客户端的并发连接。
  2. 代理服务器主要负责接收所有消息,将消息发送给所有订阅的客户端。
  3. 一个职责是保持所有持续连接的客户端的会话,包括订阅和丢失的消息,另一个职责是对窖户端的认证和授权。

三、CoAP

    CoAP ( Constrained Application Protocol,受限制的应用协议),专门为资源受限设备(如传感器节点)和网络(如NB-loT,LoRa)而设计。CoAP 从 HTTP协议发展而来,CoAP协议也是采用请求/响应工作模式,客户端发起请求,服务器做出响应。为了克服 HTTP对于受限环境的劣势,CoAP既考虑到数据报长度的最优化,又考虑到提供可靠通信。

CoAP特点:

  1. 报头压缩,报文格式简单,消息可以很短,最小的CoAP消息只有4个字节。传输层使用UDP协议,减少网络开销和支持组播功能。
  2. 为了弥补UDP传输的不可靠性,CoAP有消息重传机制。
  3. 不支持长连接,没有心跳,没有业务时设备不用跟外部发消息。·做业务时,设备可能需要先唤醒,消息实时性不太好。


      跟MQTT相比,CoAP不需要保持长连接,不用不停发送心跳消息,更加适合物联网场景中需要休眠/唤醒机制的设备,设备可以长时间处于休眠模式,节省电量,一块电池使可以用10年甚至更久,目前智能水表、智能电表、智慧农业、智能停车场等解决方案主要就是用的CoAP协议。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。