首页 > 编程知识 正文

通信协议和数据传输协议,数据通信原理总结

时间:2023-05-05 14:33:38 阅读:254320 作者:4148

        在数据传输时,总是存在丢包、分包、误包的情况。针对这一问题,则必须引进一套数据通信协议,来保证数据的完整性与准确性。

        通常,针对丢包、误包问题都会采用数据长度校验码比对的方式来判断一包数据的准确性。针对分包问题,则采用报文头、报文尾的方式(即采用某两个特定的值作为一包的数据开始和结尾的标志),但采用这种方法来标记要保证数据中不会有与报文头、尾相同的字符,这便又涉及到了数据转义

        如下为自己总结的一个简单的数据通信协议,可用于串口、网络等通信,供大家参考。

一、数据传输格式

位置

长度(Byte)

定义

说明

0

1

报文头

报文头,固定值0x5B,即字符’[’

1

2

数据长度

数据体的长度(传输的数据实际长度)

3

X

数据体

传输的数据

3+X

1

校验位

XOR从数据长度到数据体的异或值

4+X

1

报文尾

报文结束,固定值0x5D,即字符’]’

二、报文转义

除报文头和报文尾外,其它数据域出现0x5B、0x5C或0x5D时,进行如下报文转义(0x5C后面只能跟0x00、0x01、0x02,其它值为非法)

转义前

转义后

0x5B

0x5C + 0x01

0x5C

0x5C + 0x00

0x5D

0x5C + 0x02

三、数据处理流程

发送数据前处理流程:数据体->计算数据体长度->计算校验位->数据转义->添加报文头及报文尾

接收数据后处理流程:去除报文头及报文尾->数据反转义->判断数据长度及校验位->获得数据体

四、接收数据时的处理方法

1、遇到报文头开始记录数据,并将后续数据存入缓冲区,否则丢弃数据。

2、遇到报文头时先清空缓冲区的数据,再开始记录数据。

3、遇到报文尾认为一包数据结束,对缓冲区中的数据进行长度判断、数据校验等后续处理,进而使用。

汇总在vue中写jsx的方式HTML div三边怎么加边框win7中qq截图快捷键是什么

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。