博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通信协议中的转义符
阅读量:5088 次
发布时间:2019-06-13

本文共 775 字,大约阅读时间需要 2 分钟。

通信协议中的转义符
作用:在通信协议中用在协议中使得通信的内容更加安全可靠。
举例说明:如果如今须要定制一个通信协议。须要的最主要的就是一个帧头和帧尾的标志。由于通信的接收方才知道什么时候是通信的開始和结束。那么如果帧头(通信的開始)为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

你可能感兴趣的文章
[UWP]涨姿势UWP源码——RSS feed的获取和解析
查看>>
WPF笔记(2.4 Grid)——Layout
查看>>
SQL Server调优系列基础篇
查看>>
SQL Server 2008性能故障排查(二)——CPU
查看>>
WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
查看>>
快速构建Windows 8风格应用8-贴靠视图
查看>>
谨记给UpdatePanel中动态添加的控件赋ID
查看>>
Windows Phone开发(23):启动器与选择器之CameraCaptureTask和PhotoChooserTask
查看>>
Windows 8.1 新增控件之 MenuFlyout
查看>>
程序员养生 -- 心态
查看>>
关于csrss.exe和winlogon.exe进程多、占用CPU高的解决办法
查看>>
ftp服务器配置,及客户端访问
查看>>
juce viewport使用
查看>>
linux下升级npm以及node
查看>>
正确停止kafka的方法
查看>>
用Linux完成Oracle自动物理备份
查看>>
net-snmp启用python模块
查看>>
大数据分析
查看>>
框架、颜色、颜色名、脚本、字符实体、URL、速查列表
查看>>
Redis入门
查看>>