基于多带图灵机的实时数据链路字节流防错方法技术

技术编号:31165778 阅读:17 留言:0更新日期:2021-12-04 10:41
本发明专利技术公开了一种基于多带图灵机的实时数据链路字节流防错方法,整个方案不仅具备传统的通信缓存数据读取和写入功能,还能够从接收端角度进行无效字节流的检出以及失效

【技术实现步骤摘要】
基于多带图灵机的实时数据链路字节流防错方法


[0001]本专利技术涉及通信
,尤其涉及一种基于多带图灵机的实时数据链路字节流防错方法。

技术介绍

[0002]TCP/IP协议是计算机之间常用的一种组网形式,包含链路层、网络层、传输层和应用层。四个分层分别对应计算机网络内硬件设备、数据帧选路、数据包分组和应用程序的通信细节以及控制功能。在不同型号、不同操作系统的计算机上,应用程序使用TCP/IP协议在传输层建立可靠的实时数据链路,再通过字节流完成数据交换,从而实现计算机网络内的服务请求和响应。字节流的具体内容和读写方法由TCP/IP应用层的具体场景或通信协议规定。
[0003]现有的TCP/IP应用层字节流数据交换方法可概述为如图1所示的读取和写入两个流程。读取流程首先将数据链路传输的字节流存入程序的通信缓存,再根据应用层通信协议处理有效数据;写入流程根据应用层通信协议将有效数据转化为字节流,再写入通信缓存由数据链路传输。
[0004]根据协议的规定,所有有效数据在通信缓存内占用固定的字节长度并具有唯一的数据编号。应用层通信协议还规定了不同类型有效数据在通信缓存中的排序,使得TCP/IP应用程序能够按照固定的顺序和信息格式来控制网络数据的读写行为。
[0005]通信缓存中的有效数据类型和读写方式可总结为表1,表1是TCP/IP应用程序控制通信缓存的具体方法,通常由软件开发人员根据应用层协议的规定直接编码写入程序。
[0006][0007]表1不同类型数据的读写方式说明
[0008]TCP/IP协议是面向数据链路的传输层服务,通信缓存内字节流的读写由应用层控制。在现有技术中,当计算机网络连接不稳定或通信软件出现故障时,通信缓存内将出现无效字节流。由于现有技术设计的TCP/IP应用程序无法在读写字节流的同时执行数据有效性的判定和防错流程,无效字节流会对应用层的数据交换产生严重的干扰,导致应用程序出现非设计预期的行为甚至崩溃的后果。

技术实现思路

[0009]本专利技术的目的是提供一种基于多带图灵机的实时数据链路字节流防错方法,能够
从接收端角度进行无效字节流的检出以及失效

可运作导向。
[0010]本专利技术的目的是通过以下技术方案实现的:
[0011]一种基于多带图灵机的实时数据链路字节流防错方法,包括:
[0012]构建多带图灵机,通过所述多带图灵机的状态转移函数进行通信缓存的读写操作,以及在读写操作中或者读写操作之前检测无效字节流,当检测到无效字节流时,返回读取操作起始状态或者跳过相关字节;将状态转移函数按照功能划分为五个子程序:Main、Mark、PullSym、ReadLen与ReadRan;其中:
[0013]Main子程序,用于处理多带图灵机读写操作的起始和终止状态,当处理完读写操作的起始状态后转入PullSym子程序;
[0014]PullSym子程序,用于在读操作中从所述多带图灵机的数据符号栈中拉取数据符号,并根据数据类型标识进入ReadLen子程序、ReadRan子程序或者Mark子程序,或者返回Main子程序;还用于在写操作中,从所述多带图灵机的数据符号栈中拉取数据符号,并进入Mark子程序;
[0015]Mark子程序,用于在读操作中,根据数据类型标识在通信缓存带上标记数据符号,以及通过有效性判定来检测无效字节流,如果通过有效性判定,则将有效数据读取至应用程序的数据符号中,再返回至PullSym子程序,或者标记数据符号并完成数据读取后返回至Main子程序,进入终止状态;还用于在写操作中,根据数据类型标识在通信缓存带上标记数据符号,再通过运算符获取有效数据的值后返回至PullSym子程序,或者标记数据符号后写入相应数据,再返回至PullSym子程序;
[0016]ReadLen子程序为字长数据、协议标记及长度数据的读取程序,当完成字长数据、协议标记或长度数据的标记后,通过有效性判定来检测无效字节流,如果通过有效性判定,则将有效数据读取至应用程序的数据符号中,再返回至PullSym子程序;
[0017]ReadRan子程序为循环数据的读取程序,完成循环数据的标记后,通过有效性判定来检测无效字节流,如果通过有效性判定,则将有效数据读取至应用程序的数据符号中,循环数据读取完毕后返回至PullSym子程序。
[0018]由上述本专利技术提供的技术方案可以看出,整个方案不仅具备传统的通信缓存数据读取和写入功能,还能够从接收端角度进行无效字节流的检出以及失效

可运作导向,从而避免了非法数据、异常数据和长度错误数据对应用层数据交换产生的干扰,对程序起到保护作用。
附图说明
[0019]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0020]图1为本专利技术
技术介绍
提供的TCP/IP应用层字节流数据的交换方法的示意图;
[0021]图2为本专利技术实施例提供的一种基于多带图灵机的实时数据链路字节流防错方法的流程图;
[0022]图3为本专利技术实施例提供的应用层通信协议有效数据的数据组关系示意图;
[0023]图4为本专利技术实施例提供的通信缓存读写流程的多带图灵机模型示意图;
[0024]图5为本专利技术实施例提供的多带图灵机的状态转移流程图。
具体实施方式
[0025]下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术的保护范围。
[0026]首先对本文中可能使用的术语进行如下说明:
[0027]术语“和/或”是表示两者任一或两者同时均可实现,例如,X和/或Y表示既包括“X”或“Y”的情况也包括“X和Y”的三种情况。
[0028]术语“包括”、“包含”、“含有”、“具有”或其它类似语义的描述,应被解释为非排它性的包括。例如:包括某技术特征要素(如原料、组分、成分、载体、剂型、材料、尺寸、零件、部件、机构、装置、步骤、工序、方法、反应条件、加工条件、参数、算法、信号、数据、产品或制品等),应被解释为不仅包括明确列出的某技术特征要素,还可以包括未明确列出的本领域公知的其它技术特征要素。
[0029]下面对本专利技术所提供的一种基于多带图灵机的实时数据链路字节流防错方法进行详细描述。本专利技术实施例中未作详细描述的内容属于本领域专业技术人员公知的现有技术。本专利技术实施例中未注明具体条件者,按照本领域常规条件或制造商建议的条件进行。
[0030]如图2所示,一种基于多带图灵机的实时数据链路字节流防错方法,包括如下步骤:
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多带图灵机的实时数据链路字节流防错方法,其特征在于,包括:构建多带图灵机,通过所述多带图灵机的状态转移函数进行通信缓存的读写操作,以及在读写操作中或者读写操作之前检测无效字节流,当检测到无效字节流时,返回读取操作起始状态或者跳过相关字节;将状态转移函数按照功能划分为五个子程序:Main、Mark、PullSym、ReadLen与ReadRan;其中:Main子程序,用于处理多带图灵机读写操作的起始和终止状态,当处理完读写操作的起始状态后转入PullSym子程序;PullSym子程序,用于在读操作中从所述多带图灵机的数据符号栈中拉取数据符号,并根据数据类型标识进入ReadLen子程序、ReadRan子程序或者Mark子程序,或者返回Main子程序;还用于在写操作中,从所述多带图灵机的数据符号栈中拉取数据符号,并进入Mark子程序;Mark子程序,用于在读操作中,根据数据类型标识在通信缓存带上标记数据符号,以及通过有效性判定来检测无效字节流,如果通过有效性判定,则将有效数据读取至应用程序的数据符号中,再返回至PullSym子程序,或者标记数据符号并完成数据读取后返回至Main子程序,进入终止状态;还用于在写操作中,根据数据类型标识在通信缓存带上标记数据符号,再通过运算符获取有效数据的值后返回至PullSym子程序,或者标记数据符号后写入相应数据,再返回至PullSym子程序;ReadLen子程序为字长数据、协议标记及长度数据的读取程序,当完成字长数据、协议标记或长度数据的标记后,通过有效性判定来检测无效字节流,如果通过有效性判定,则将有效数据读取至应用程序的数据符号中,再返回至PullSym子程序;ReadRan子程序为循环数据的读取程序,完成循环数据的标记后,通过有效性判定来检测无效字节流,如果通过有效性判定,则将有效数据读取至应用程序的数据符号中,循环数据读取完毕后返回至PullSym子程序。2.根据权利要求1所述的一种基于多带图灵机的实时数据链路字节流防错方法,其特征在于,所述多带图灵机包括:控制器、数据符号栈、数据缓冲栈、协议位置栈、字长缓冲带、循环计算带以及长度计算带;所述控制器,用于存储多带图灵机状态转移函数的状态变量,控制各子程序之间的转换,每一子程序在执行每一流程后都输出相应的状态变量以及输入变量;其中,所述状态变量包括:主状态、数据类型标识、数据符号栈状态、数据缓冲栈状态和协议位置栈状态,所述主状态包括多带图灵机的就绪状态、读取状态和写入状态;所述输入变量包括:控制器当前指向的通信缓冲带位置、字长缓冲带的数值和循环计算带的数值;字长缓冲带B2、循环计算带B4和长度计算带B6用于临时存储读写过程中使用的局部变量;数据符号栈E1的每个格代表单个数据符号,数据符号是应用程序内部存储有效数据的数据结构,数据缓冲栈E3和协议位置栈E5用于临时存储字节流。3.根据权利要求2所述的一种基于多带图灵机的实时数据链路字节流防错方法,其特征在于,所述无效字节流包括:非法数据、异常数据以及长度错误数据;其中,非法数据包括:字节流内不在通信协议规定有效范围内的数据;异常数据包括:字节流内能够导致操作系统强制关闭应用程序的数据;长度错误数据包括:字节流记录的
数据长度与实际长度不一致的数据;所述非法数据与异常数据在读写操作中通过读写操作中的有效性判定来检测;所述长度错误数据则在读写操作之前进行检测,检测时的执行流程与读操作流程一致,如果长度计算带B6在字节流全部标记完成前存储内容为0,或字节流全部标记完成后存储内容不为0,则表示检测出长度错误数据。4.根据权利要求2所述的一种基于多带图灵机的实时数据链路字节流防错方法,其特征在于,所述多带图灵机使用七元组形式定义,表示为:M=(Q,Σ,Γ,δ,Q0,C,F)其中:M表示多带图灵机;Q为多带图灵机状态集合q0、q1、q2依次表示就绪状态、读取状态、写入状态,t0、t1、t3、t4、t5、t
B
是数据类型标识,分别表示就绪、定长数据、字长数据、变长数据、循环数据、协议标记、长度数据、空数据,后三个分量分别对应数据符号栈E1、数据缓冲栈E3和协议位置栈E5的状态,i、e、ε是线性栈的状态标识,分别表示入栈、出栈和不操作;Σ为输入数据符号的有穷集合是由四个输入变量构成的有序对;β
B
表示空白符号,在通信缓存带B0上表示该格未加载字节流,加载字节流后的通信缓存带符号由β0表示;字长缓冲带B2、循环计算带B4和长度计算带B6上的所有字节能够等效转化为整数,三者的输入内容分别记为指代内容为所有非负整数;Γ为带符号的完整集合α表示数据符号,代表通信缓存带上的字节与应用程序内部存储的有效数据形成匹配关系;β
B
在字长缓冲带B2、循环计算带B4和长度计算带B6上表示初始化状态;δ是多带图灵机的状态转移函数;Q0是多带图灵机的初始状态集合{([q0,t0,ε,ε,ε],β
B

B

B

B
),([q0,t0,i,ε,ε],β
B

B

B

B
)},两者分别表示通信缓存开始数据读取和写入前的图灵机状态,四个位置的β
B
依次对应通信缓存带B0、字长缓冲带B2、循环计算带B4和长度计算带B6;C为通信缓存带B0、字长缓冲带B2、循环计算带B4和长度计算带B6中使用的空白符号集合{β
B
};F是多带图灵机的终止状态集合{([q0,t
B
,ε,ε,ε],β
B

B

B

B
)},是图灵机完成通信缓存数据读取或写入后的最终状态。5.根据权利要求2或3或4所述的一种基于多带图灵机的实时数据链路字节流防错方法,其特征在于,Main子程序包括:读操作的步骤与写操作的步骤;其中:所述读操作的步骤包括:步骤1、进入读操作的初始状态,通信缓存带B0加载字节流,字长缓冲带B2和循环计算带B4的存储内容预置为0,控制器不移动;步骤2、协议位置栈E5加载协议树根节点的类型码以及字节流长度字段在根节点数据组中的字长位置p
l
,协议位置栈E5的内容L
E5
移动到字长缓冲带B2,数据类型标识改为空数据
t
B
;所述协议树是不同数据组构成的树状结构,数据组是将有效数据按照类型码进行划分得到,协议树中的数据组作为节点;步骤3、应用程序执行函数Tree(
·
),函数Tree(
·
)自变量为字长缓冲带B2的内容l2,获取到的数据组以数据符号序列的形式加载到数据符号栈E1,长度计算带B6的内容不变;其中,函数Tree(
·
)用于根据类型码从协议树中获取数据组,并记录当前的协议树位置;步骤4、数据组加载到数据符号栈E1后,控制器的数据类型标识改为就绪t0,进入PullSym子程序,长度计算带B6的内容不变;步骤5、本步骤由PullSym子程序跳转进入,PullSym子程序中加载数据符号的类型为空数据t
B
时转入本步骤,将协议位置栈E5的内容L
E5
移动到字长缓冲带B2,长度计算带B6的内容不变,之后,转入步骤3;步骤6、本步骤由Mark子程序跳转进入,进入读操作的终止状态,完成读操作,字长缓冲带B2和循环计算带B4复位;所述写操作的步骤包括:步骤7、进入写操作的初始状态,应用程序执行函数Load(
·
),函数Load(
·
)的自变量由应用程序给定,获取到的有效数据以数据符号序列的形式加载到数据符号栈E1,其中,所述函数Load(
·
),用于加载所有预发送的有效数据,所有有效数据的排序符合应用层通信协议的规定;步骤8、本步骤由PullSym子程序跳转进入,进入写操作的终止状态,完成读操作,字长缓冲带B2和循环计算带B4复位。6.根据权利要求2或3或4所述的一种基于多带图灵机的实时数据链路字节流防错方法,其特征在于,所述PullSym子程序对于读操作与写操作各自执行不同的步骤;其中:对于读操作执行步骤包括:步骤9、当控制器的数据类型标识为就绪t0时,数据符号栈E1弹出一个数据符号α,数据类型标识和字长缓冲带B2分别通过运算符t(
·
)和l(
·
)加载数据符号的类型以及字长,长度计算带B6的内容不变,后续步骤根据运算符t(
·
)加载数据符号的类型的不同而转入不同的子程序;步骤10、步骤由ReadLen子程序转入,当控制器的数据类型标识为字长数据时,数据符号栈E1弹出一个数据符号α,数据类型标识通过运算符t(
·
)加载数据符号类型,数据缓冲栈E3的内容L
E3
移动到字长缓冲带B2,长度计算带B6的内容不变,根据读取的数据类型标识,进入Mark子程序;对于写操作执行步骤包括:步骤11、当控制器的数据类型标识为就绪t0时,数据符号栈E1弹出一个数据符号α,数据类型标识和字长缓冲带B2分别通过运算符t(
·
)和l(
·
)加载数据符号的类型以及字长,根据数据类型标识进入Mark子程序;当加载数据符号的类型以及字长分别为空数据t
B
和0时,转入Main子程序,进入写操作的终止状态;步骤12、当控制器的数据类型标识为字长数据时,数据符号栈E1弹出一个数据符号...

【专利技术属性】
技术研发人员:曾壹李智张涛王涛宋鹏飞陈峰赵宏涛王子维刘紫耀
申请(专利权)人:中国铁道科学研究院集团有限公司北京华铁信息技术有限公司北京锐驰国铁智能运输系统工程技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1