通信协议中的转义符

通信协议中的转义符
作用:在通信协议中用在协议中使得通信的内容更加安全可靠。
举例说明:如果如今须要定制一个通信协议。须要的最主要的就是一个帧头和帧尾的标志。由于通信的接收方才知道什么时候是通信的開始和结束。那么如果帧头(通信的開始)为0x02(也能够是其它),帧尾为0x03(也能够是其它),粗略的一看是没有问题的,可是试想如果在帧头和帧尾的中间数据出现0x02或者0x03的时候整个通信过程将会被破坏掉,由于本来一帧数据还没有传输完毕,接收方误以为接收到帧头或者帧尾就会又一次開始接收数据(导致前面已经接收的数据丢失)或者结束接收数据(导致后面的数据无法接收)。理论上来讲帧头和帧尾不管定义为什么字符都会可能出在通信数据中,由于我们不应该对用户传输的通信数据做出不论什么的如果。那么怎样解决问题呢?转义字符就是用来解决问题的。先看以下的这张图片:

这张图片中再增加了一个字符即0x1B。这个字符被定义为转义字符(也能够设置为别的),增加这个字符后的传输过程变为,0x02+用户数据+0x03。可是在用户数据中假设出现0x02即被替换为0x1B+0xE7,假设出现0x03即被替换为0x1B+0xE8。这样用户数据中就绝不会再出现0x02和0x03。可是万一用户要传输的数据就是0x1B+0xE7呢?这也没有关系,由于假设用户要传输的0x1B也会被转义为0x1B+0x00,所以假设用户真的须要传输0x1B+0xE7的话也被0x1B+0x00+0xE7所替代,也不会造成干扰。

这样做的结果是在接收端假设接收到转义字符,就必须要推断下一个字符是否为特定的三个值,假设是特定的三个值就须要做特殊处理,这就是转义字符解决通信中防止通信错误的原理。

原文地址:https://www.cnblogs.com/wzjhoutai/p/7061543.html