文章目录
一、前言
通信协议是指通信双方通过数据线路(有线或无线)进行数据交换时,按照事先约定好或行业标准等,就通信方法、通信时间、通信内容等所做的约定,从而保证通信双方能够做到相互配合、共同遵守。通信协议各类繁多,在OSI模型中常见的通信协议包括:TCP、UDP、SMTP、POP3、HTTP、IEEE802.X簇等,这些协议分别处于OSI模型的应用层、表示层、会话层、传输层、网络层、数据链路层、物理层的七层中。除常见的通信协议外,又出现因物联网而生的MQTT、COAP等协议。
二、Modbus通信协议
Modbus是一种国际标准的通信协议,用于不同厂商之间的设备交换数据,Modbus协议分为Modbus RTU、Modbus ASCII、Modbus TCP三种模式。前两种所用的物理硬件接口为RS-232、RS-422和RS-485;而Modbus TCP模式的硬件接口为以太网口。
Modbus是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。从1979年开始,Modbus作为工业串行链路的事实标准,Modbus使成千上万的自动化设备能够通信。Modbus是一个请求/应答PDU的元素。Modbus应用层报文传输协议用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。目前,可以通过有线(EIA/TIA-232、EIA-422、EIA/TIA-485-A)和无线(光纤、无线等介质)实现异步串行传输。
三、TCP通信协议
TCP(Transfer Control Protocol,传输控制协议)是传输层协议,它是面向连接的协议,提供可靠的、全双工的、面向字节流的、端到端的服务。TCP报文格式包括:序号、确认号、数据偏移、紧急比特URG、确认比特ACK、推送比特PSH等。TCP报文的格式以及与IP数据包的关系如图所示。
TCP提供可靠服务是指TCP使用三次握手来建立连接,并使用重传机制。TCP三次握手建立过程如图所示。
四、UDP通信协议
用户数据报协议(User Datagram Protocol,UDP)亦是传输层协议,它是一个非连接的协议,即传输数据之前,源端和目的端不建立连接。UDP在IP的数据报服务上不增加端口的功能和差错检测功能。UDP提供不可靠传输,其特点还包括:发送数据之前不需要建立连接、UDP的主机不需要维持复杂的连接状态表、UDP用户数据只有8个字节的首部开销、网络出现拥塞不会使源主机发送速率降低。UDP常见应用有:文件传送、路由选择协议、IP地址配置、网络管理、远程文件服务器、IP电话、流式多媒体通信、多播等。UDP数据包格式以及与IP数据包的关系如图所示。
五、HTTP通信协议
HTTP(超文本传输协议)用于使超文本的链接能够高效率地完成,它是面向事务的应用层协议,使用TCP 连接进行可靠的传送。HTTP 是一个无状态的协议,即服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。HTTP 定义了 Web 服务器与Web 客户机的页面传输。HTTP 请求报文格式和响应报文格式如图所示。
HTTP 请求报文中请求方式有:OPTION、GET、HEAD、POST、PUT、PATCH、COPYMOVE、DELETE、LINK、UNLINK、TRACEV、WRAPPED、Extension-method。HTTP响应报文中响应状态码为三位数字,包括:1xx、2xx、3xx、4xx、5xx。
1xx,表示通知信息的,如请求收到了或正在进行处理;
2xx,表示成功,如接受或知道了;
3xx,表示重定向,表示要完成请求还必须采取进一步的行动;
4xx,表示客户的差错,如请求中有错误的语法或不能完成;
5xx,表示服务器的差错,如服务器失效无法完成请求。
六、MQTT通信协议
MQTT的全称为 Message Queue Telemetry Transport,是在 1999 年,由IBM的AndStanford-Clark和Arcom的Arlen Nipper为了一个通过卫星网络连接输油管道的项目而开发的协议。2014年MQTT 协议正式成为OASIS(结构化信息标准促进组织)的标准协议。MQTT 协议特性包括:
1)基于 TCP 协议的应用层协议
2)采用C/S架构
3)使用订阅/发布模式,将消息的发送方和接受方解耦
4)提供 3种消息的 QoS (Quality ofService)
5)收发消息都是异步的,发送方不需要等待接收方应答MQTT采用发布/订阅方式来实现通信,因此,消息的发布方和订阅方通过中间方,目Broker 来进行消息的存储和转发,一次典型的 MQTT 消息通信流程为:
步骤一:发布方将消息发送到 Broker。
步骤二: Broker 接收到消息以后,检查下都有哪些订阅方订阅了此类消息,然后将消息发送到这些订阅方。
步骤三:订阅方从 Broker 获取该消息。如图所示。
七、CoAP 通信协议
约束应用协议(Constrained Application Protocol,CoAP)是一个基于 REST 模型的网络传输协议,主要用于轻量级 M2M 通信。它是一种专用于受限设备的协议,默认运行在UDF协议上,如图 2-67 所示。从图中可知,CoAP 协议运行于UDP 协议上,而UDP 协议是非连接协议;MQTT 协议运行于 TCP 协议上,而 TCP 协议是可靠、面向连接协议。因此,CoAF相比HTTP/MQTT 更加不可靠。网络层中的6LOWPAN是一种基于IPv6 的低速无线个域网标准,即IPv6 over IEEE 802.15.4。轻量级 M2M(Lightweight Machine to Machine, LwM2M)是开放移动联盟 (Open Mobile Alliance,OMA)定义的物联网协议,主要可以使用在资源受限(包括存储、功耗等)的嵌入式设备上。
CoAP与MOTT 协议的区别在于:
区别一:CoAP 协议使用请求/响应模型;MOTT 协议使用订阅/发布模式;
区别二:CoAP 协议是无连接;MQTT 协议是长连接;
区别三:CoAP 协议是 Server 和 Client 之间消息传递的单对单协议;MQTT 通过 Broke传递消息的多对多协议;
区别四:CoAP 内置内容协商和发现支持,允许设备彼此窥测以找到交换数据的方式;MQTT不支持带有类型或者其它帮助 Clients 理解的标签消息。