流式传输中的拆帧方法、装置、存储介质及车载终端与流程

摘要: 本技术涉及通信,特别涉及一种流式传输中的拆帧方法、装置、存储介质及车载终端。背景技术:1、在利用传输控制协议(transmissioncontrolprotoc...
流式传输中的拆帧方法、装置、存储介质及车载终端与流程

本技术涉及通信,特别涉及一种流式传输中的拆帧方法、装置、存储介质及车载终端。

背景技术:

1、在利用传输控制协议(transmission control protocol,tcp)进行流式传输时,发送方写入的多条数据可能被合并发送(粘包)或被分片发送(拆包),tcp本身不维护应用层消息边界。为此,发送端需要在帧首写入长度字段以指示当前帧的完整长度,车载终端提取该长度字段后从字节流中精确截取一帧数据。

2、然而,在车载通信中,同一长度字段按大端字节序和小端字节序解算可能得到两个截然不同但均落在合法范围内的长度值,而现有方案通常预设单一固定字节序,一旦预设字节序与发送端实际采用的字节序不符,就会解析出错误的帧长度,导致帧边界误判。同时,现网中同时存在采用大端和小端两种长度编码方式的帧,但帧内未设置版本号或字节序标识字段,车载终端无法预先获知当前帧的字节序归属。

3、当某一帧的边界被误判时,后续字节整体错位解析,将导致连续多帧报废且难以自恢复至正确边界。

技术实现思路

1、本技术提供了一种流式传输中的拆帧方法、装置、存储介质及车载终端,用于解决设置固定字节序解析时,可能会导致帧边界误判,从而导致连续多帧报废且难以自恢复至正确边界的问题。所述技术方案如下:

2、根据本技术的第一方面,提供了一种流式传输中的拆帧方法,所述方法包括:

3、根据大端字节序计算待截取的帧的第一候选长度,根据所述第一候选长度从接收缓冲区中界定第一帧内容;

4、根据小端字节序计算待截取的帧的第二候选长度,根据所述第二候选长度从所述接收缓冲区中界定第二帧内容;

5、对所述第一帧内容和所述第二帧内容进行帧尾校验;

6、若所述第一帧内容和所述第二帧内容中的一种通过帧尾校验,则将通过校验的帧内容所对应的候选长度确定为最终帧长;

7、若所述第一帧内容和所述第二帧内容都通过或都未通过帧尾校验,则将所述第一候选长度和所述第二候选长度中的最小者确定为最终帧长;

8、根据所述最终帧长,从所述接收缓冲区的起始位置截取一帧数据。

9、在一种可能的实现方式中,所述根据大端字节序计算待截取的帧的第一候选长度,包括:从所述接收缓冲区的帧首中提取长度字段;按照大端字节序对所述长度字段进行解算,得到第一载荷长度;根据所述第一载荷长度计算所述第一候选长度;

10、所述根据小端字节序计算待截取的帧的第二候选长度,包括:从所述接收缓冲区的帧首中提取长度字段;按照小端字节序对所述长度字段进行解算,得到第二载荷长度;根据所述第二载荷长度计算所述第二候选长度。

11、在一种可能的实现方式中,所述方法还包括:判断所述第一候选长度和所述第二候选长度是否满足预设的就绪条件;

12、所述对所述第一帧内容和所述第二帧内容进行帧尾校验,包括:若所述第一候选长度和所述第二候选长度都满足所述就绪条件,则对所述第一帧内容和所述第二帧内容进行帧尾校验。

13、在一种可能的实现方式中,所述方法还包括:

14、若只有所述第一候选长度满足所述就绪条件,则将所述第一候选长度确定为最终帧长;

15、若只有所述第二候选长度满足所述就绪条件,则将所述第二候选长度确定为最终帧长。

16、在一种可能的实现方式中,所述方法还包括:

17、若所述第一候选长度和所述第二候选长度都不满足所述就绪条件,且候选长度所对应的载荷长度处于预设的合法长度区间内,则输出等待更多字节的指示。

18、在一种可能的实现方式中,所述就绪条件包括:候选长度所对应的载荷长度处于预设的合法长度区间内,且所述候选长度不大于所述接收缓冲区已接收的字节总数。

19、在一种可能的实现方式中,所述对所述第一帧内容和所述第二帧内容进行帧尾校验,包括:

20、对所述第一帧内容中,除帧尾字节之外的所有字节计算累加和,得到第一校验值;若所述第一校验值与所述帧尾字节相等,则确定所述第一帧内容通过校验;

21、对所述第二帧内容中,除帧尾字节之外的所有字节计算累加和,得到第二校验值;若所述第二校验值与所述帧尾字节相等,则确定所述第二帧内容通过校验。

22、根据本技术的第二方面,提供了一种流式传输中的拆帧装置,所述装置包括:

23、界定模块,用于根据大端字节序计算待截取的帧的第一候选长度,根据所述第一候选长度从接收缓冲区中界定第一帧内容;

24、所述界定模块,还用于根据小端字节序计算待截取的帧的第二候选长度,根据所述第二候选长度从所述接收缓冲区中界定第二帧内容;

25、校验模块,用于对所述第一帧内容和所述第二帧内容进行帧尾校验;

26、确定模块,用于若所述第一帧内容和所述第二帧内容中的一种通过帧尾校验,则将通过校验的帧内容所对应的候选长度确定为最终帧长;

27、所述确定模块,还用于若所述第一帧内容和所述第二帧内容都通过或都未通过帧尾校验,则将所述第一候选长度和所述第二候选长度中的最小者确定为最终帧长;

28、截取模块,用于根据所述最终帧长,从所述接收缓冲区的起始位置截取一帧数据。

29、根据本技术的第三方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上所述的流式传输中的拆帧方法。

30、根据本技术的第四方面,提供了一种车载终端,所述车载终端包括上述流式传输中的拆帧装置。

31、本技术提供的技术方案的有益效果至少包括:

32、通过对待截取的帧按照大端字节序和小端字节序计算第一候选长度和第二候选长度,并分别根据第一候选长度和第二候选长度界定第一帧内容和第二帧内容,从而覆盖了两种可能的字节序假设。然后,通过对第一帧内容和第二帧内容执行帧尾校验,以校验通过性作为旁路信号判别真实字节序。这样,无需在帧内设置版本号或字节序标识字段,也无需在通信建立前人工配置或协商字节序约定,就能够兼容现网中同时存在大端、小端两种长度编码方式的混合部署场景。

33、若第一帧内容和第二帧内容中仅有一种通过校验,则将该帧内容对应的候选长度确定为最终帧长;若第一帧内容和第二帧内容都通过或都未通过校验,则取两种候选长度中的较小者作为最终帧长,从而通过双假设并行机制在校验层面提供了冗余判别维度,配合校验仲裁机制,显著降低了因字节序误判导致帧边界判定错误的概率。

34、当第一候选长度和第二候选长度对应的帧尾校验均通过或均未通过时,无法凭校验结果判别真实字节序,此时,采用两种候选长度中的较小者作为最终帧长进行切帧,这种保守策略能够避免将可能属于下一帧的字节误吞入当前帧,从而防止帧边界错误向后续数据传播,避免因单帧切错导致的连续多帧报废。

35、当第一候选长度和第二候选长度均不满足就绪条件,但载荷长度处于合法区间内时,可以输出等待更多字节的指示,而不是直接丢弃或误判,避免因信息不足导致的无效拆帧,提升了异常场景下车载终端的自恢复能力。