什么是协议
网络协议简称协议,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。 最终目的是在网络上使数据从源头到另一端,网络通信的参与方必须遵循相同的规则,这套规则就称为协议,最终呈现出来就是网络上数据传输的数据包格式
通讯协议的分类
通讯协议可以按照层级或功能进行分类。例如:
常用的网络协议结构(七层)见下图
按网络层次分类(OSI模型(5层))
应用层协议:HTTP、FTP、SMTP、DNS
传输层协议:TCP、UDP
网络层协议:IP、ICMP
数据链路层协议:Ethernet(以太网)、PPP
物理层协议:USB、RS-232
按应用场景分类
网络通信协议:TCP/IP、HTTP、WebSocket
无线通信协议:Wi-Fi、Bluetooth、5G
工业通信协议:Modbus、CAN总线、PROFINET
嵌入式通讯协议:I²C、SPI、UART
协议的三要素
协议的三要素是:语法、语义、时序。
一个完整的通讯协议通常包括:
语法(Syntax)——定义数据的格式、结构,例如数据包的头部和尾部。
语义(Semantics)——定义数据的意义,例如如何解释数据字段、如何处理错误等。
时序(Timing)——定义数据传输的时机、数据流控制、超时机制等。
一般协议的格式
通信中的数据往往以数据包的形式进行传送,这样的一个数据包称为一帧数据,类似于网络通信(TCP)中的TCP/IP协议一样.
通信协议一般含有几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾。
比如 RS485 发送hello . 以数据帧格式发送hello:
帧头: 一帧数据开始,可以使用多个字节。 假如以一个字节:0XFF ----自己定义。
地址信息:跟哪个设备进行通信(类型于IIC器件地址) —0X01 0X02 芯片ID
数据类型:如 0x01 –代表发的是字符。 0x02 –代表16进制 ---- 类似命令
数据长度: — 如果发送的数据大于256个字节,至少用2个字节表示 0x00 0x05
数据块 :数据,发送的数据
校验码 :求和,CRC16, CRC8,
帧尾 : 一帧数据结束,可以使用多个字节。 假如以一个字节:0XFE ----自己定义。