一种数据传输方法、装置、电子设备及存储介质与流程

未命名 08-29 阅读:222 评论:0


1.本技术涉及通信技术领域,尤其涉及一种数据传输方法、装置、电子设备及存储介质。


背景技术:

2.udp(user datagram protocol),即用户数据报协议,是osi(open system interconnection,开放式系统互联)参考模型中的一种无连接的传输层协议。虽然udp传输的传输效率高,但其不保证数据的可靠性和稳定性。因此,udp传输适用于一些数据量小且对数据可靠性要求不高的数据(通常是一些不重要的数据)的传输。而tcp(transmission control protocol,一种面向连接的、可靠的、基于字节流的传输层通信协议)传输虽然在传输的可靠性上要高于udp传输,但是由于其交互过程较多(包括三次握手、四次挥手、帧帧确认的过程),所以其传输效率相较于udp传输要低很多。
3.因此,传统的udp和tcp传输方式均无法很好地满足一些数据量较大(如视频数据)且对数据可靠性要求较高,同时还要求具有较高的数据传输效率的数据传输场景的传输需求。


技术实现要素:

4.有鉴于此,本技术实施例提供了一种数据传输方法、装置、电子设备及存储介质,以解决现有技术中udp和tcp传输方式均无法很好地满足一些数据量较大(如视频数据)且对数据可靠性要求较高,同时还要求具有较高的数据传输效率的数据传输场景的传输需求的问题。
5.本技术实施例的第一方面,提供了一种数据传输方法,包括:
6.截取第一待传输数据流至第n待传输数据流,第一待传输数据流携带有第一时间戳,第n待传输数据流携带有第n时间戳,n为大于1的正整数;
7.创建与第一时间戳对应的第一数据发送桶,以及与第n时间戳对应的第n数据发送桶;
8.对第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,并将多个第一数据分片均缓存至第一数据发送桶中;
9.对第n待传输数据流进行数据拆分和数据组装,得到多个第m数据分片,并将多个第m数据分片均缓存至第n数据发送桶中,m为大于1的正整数;
10.向接收端依次发送第一数据发送桶中的每一个第一数据分片;
11.接收接收端在接收到最后一个第一数据分片时返回的第一反馈信息,第一反馈信息包括发送端标识信息、第一时间戳、已完成接收片数和未接收分片标识信息;
12.若根据第一反馈信息确认存在分片丢失情况,则根据未接收分片标识信息确定需重传数据分片,将需重传数据分片重新传输至接收端,并继续向接收端依次发送第n数据发送桶中的每一个第m数据分片。
13.本技术实施例的第二方面,提供了一种数据传输装置,包括:
14.截取模块,被配置为截取第一待传输数据流至第n待传输数据流,第一待传输数据流携带有第一时间戳,第n待传输数据流携带有第n时间戳,n为大于1的正整数;
15.创建模块,被配置为创建与第一时间戳对应的第一数据发送桶,以及与第n时间戳对应的第n数据发送桶;
16.第一分装模块,被配置为对第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,并将多个第一数据分片均缓存至第一数据发送桶中;
17.第n分装模块,被配置为对第n待传输数据流进行数据拆分和数据组装,得到多个第m数据分片,并将多个第m数据分片均缓存至第n数据发送桶中,m为大于1的正整数;
18.发送模块,被配置为向接收端依次发送第一数据发送桶中的每一个第一数据分片;
19.接收模块,被配置为接收接收端在接收到最后一个第一数据分片时返回的第一反馈信息,第一反馈信息包括发送端标识信息、第一时间戳、已完成接收片数和未接收分片标识信息;
20.续重传模块,被配置为若根据第一反馈信息确认存在分片丢失情况,则根据未接收分片标识信息确定需重传数据分片,将需重传数据分片重新传输至接收端,并继续向接收端依次发送第n数据发送桶中的每一个第m数据分片。
21.本技术实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
22.本技术实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
23.本技术实施例与现有技术相比,其有益效果至少包括:本技术实施例提供的数据传输方法,应用于发送端,通过截取第一待传输数据流至第n待传输数据流,第一待传输数据流携带有第一时间戳,第n待传输数据流携带有第n时间戳,n为大于1的正整数;创建与第一时间戳对应的第一数据发送桶,以及与第n时间戳对应的第n数据发送桶;对第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,并将多个第一数据分片均缓存至第一数据发送桶中;对第n待传输数据流进行数据拆分和数据组装,得到多个第m数据分片,并将多个第m数据分片均缓存至第n数据发送桶中,m为大于1的正整数;向接收端依次发送第一数据发送桶中的每一个第一数据分片;接收接收端在接收到最后一个第一数据分片时返回的第一反馈信息,第一反馈信息包括发送端标识信息、第一时间戳、已完成接收片数和未接收分片标识信息;若根据第一反馈信息确认存在分片丢失情况,则根据未接收分片标识信息确定需重传数据分片,将需重传数据分片重新传输至接收端,并继续向接收端依次发送第n数据发送桶中的每一个第m数据分片。本技术实施例提出的数据传输方式,一方面沿用了传统的udp传输的无连接传输模式,在数据传输过程中无需建立发送端与接收端之间的通信连接,数据传输效率较高;另一方面,在整个数据传输的过程中,可实现无阻塞等待的数据异步传输,且发送端与接收端之间会有较少次数的交互,可实现在基本不牺牲传输效率的前提下有效提升数据传输的可靠性,因而可满足一些数据量较大且对数据可靠性要求较高的数据传输场景(如视频数据传输场景等)的传输需求。
附图说明
24.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
25.图1是本技术实施例的一种应用场景的场景示意图;
26.图2是本技术实施例提供的一种数据传输方法方法的流程示意图;
27.图3是本技术实施例提供的数据传输方法中的一种接收持续数据流的示意图;
28.图4是本技术实施例提供的数据传输方法中的一种数据传输时序示意图;
29.图5是本技术实施例提供的数据传输方法中的一种数据封装结构的结构示意图;
30.图6是本技术实施例提供的数据传输方法中的一种返回报文结构的结构示意图;
31.图7是本技术实施例提供的一种数据传输装置的结构示意图;
32.图8是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
33.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
34.下面将结合附图详细说明根据本技术实施例的一种数据传输方法和装置。
35.图1是本技术实施例的一种应用场景的场景示意图。该应用场景可以包括发送端101、接收端102。
36.发送端101/接收端102均可以是硬件,也可以是软件。当发送端101/接收端102为硬件时,其可以是具有显示屏且支持与接收端102/发送端101通信的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等;当发送端101/接收端102为软件时,其可以安装在如上的电子设备中。发送端101/接收端102可以实现为多个软件或软件模块,也可以实现为单个软件或软件模块,本技术实施例对此不作限制。进一步地,发送端101/接收端102上可以安装有各种应用,例如数据处理应用、即时通信工具、社交平台软件、搜索类应用等。
37.发送端101与接收端102之间可以通过以太网(eth)、can总线等进行通信连接。
38.在本技术实施例中,发送端101通过截取第一待传输数据流至第n待传输数据流,第一待传输数据流携带有第一时间戳,第n待传输数据流携带有第n时间戳,n为大于1的正整数;创建与第一时间戳对应的第一数据发送桶,以及与第n时间戳对应的第n数据发送桶;对第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,并将多个第一数据分片均缓存至第一数据发送桶中;对第n待传输数据流进行数据拆分和数据组装,得到多个第m数据分片,并将多个第m数据分片均缓存至第n数据发送桶中,m为大于1的正整数;向接收端102依次发送第一数据发送桶中的每一个第一数据分片;接收接收端102在接收到最后一个第一数据分片时返回的第一反馈信息,第一反馈信息包括发送端标识信息、第一时间戳、已完成接收片数和未接收分片标识信息;若根据第一反馈信息确认存在分片丢失情
况,则根据未接收分片标识信息确定需重传数据分片,将需重传数据分片重新传输至接收端102,并继续向接收端102依次发送第n数据发送桶中的每一个第m数据分片,一方面沿用了传统的udp传输的无连接传输模式,在数据传输过程中无需建立发送端与接收端之间的通信连接,数据传输效率较高;另一方面,在整个数据传输的过程中,可实现无阻塞等待的数据异步传输,且发送端与接收端之间会有较少次数的交互,可实现在基本不牺牲传输效率的前提下有效提升数据传输的可靠性,因而可满足一些数据量较大且对数据可靠性要求较高的数据(如视频数据等)传输场景的传输需求。
39.需要说明的是,本技术实施例提供的数据传输方法,可普遍适用于存在通信突发、拥塞丢包的数据流传输场景,且该方法可部署在链路层、网络层、传输层。
40.图2是本技术实施例提供的一种数据传输方法的流程示意图。图2的数据传输方法可以由图1的发送端101执行。如图2所示,该数据传输方法包括:
41.步骤s201,截取第一待传输数据流至第n待传输数据流,第一待传输数据流携带有第一时间戳,第n待传输数据流携带有第n时间戳,n为大于1的正整数。
42.在一实施方式中,以将本技术实施例提供的数据传输方法部署在传输层为例,结合图3,假设发送端101中的传输层接收到应用层传输过来的持续数据流,该持续数据流包括第一待传输数据流(如图3所示的“sys-time1 data”)、第二待传输数据流(如图3所示的“sys-time2 data”)
……
第n待传输数据流(如图3所示的“sys-timen data”)。其中,第一待传输数据流的第一时间戳为“time1”,第二待传输数据流的第二时间戳为“time2
”……
第n待传输数据流的第n时间戳为“timen”。
43.在一实施方式中,可将需要发送的数据以流的方式进行截取,得到第一待传输数据流、第二待传输数据流
……
第n待传输数据流。第一时间戳、第二时间戳
……
第n时间戳为截取各待传输数据流的时间点,也可以理解为各待传输数据流的数据拆包时刻。
44.在另一实施方式中,发送端101的传输层接收应用层传输过来的持续数据流的过程中,若传输层在一段时间内(如1分钟内)没有接收到应用层传输过来的数据流,则可以按照预先定义的数据流大小(例如,10mb、15mb等)来截取第一待传输数据流、第二待传输数据流
……
第n待传输数据流。第一时间戳、第二时间戳
……
第n时间戳为截取各待传输数据流的时间点,也可以理解为各待传输数据流的数据拆包时刻。
45.步骤s202,创建与第一时间戳对应的第一数据发送桶,以及与第n时间戳对应的第n数据发送桶。
46.作为一示例,假设n=3,即发送端101当前截取到第一待传输数据流(携带有第一时间戳)、第二待传输数据流(携带有第二时间戳)和第三待传输数据流(携带有第三时间戳),分别创建与第一时间戳、第二时间戳和第三时间戳对应的第一数据发送桶(记为“bucket1”)、第二数据发送桶(记为“bucket2”)和第三数据发送桶(记为“bucket3”)。
47.步骤s203,对第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,并将多个第一数据分片均缓存至第一数据发送桶中。
48.作为一示例,假设对第一待传输数据流进行数据拆分和数据组装,得到m个第一数据分片,m为大于1的正整数,那么将第一数据分片1~m均缓存至第一数据发送桶(bucket1)中。
49.步骤s204,对第n待传输数据流进行数据拆分和数据组装,得到多个第m数据分片,
并将多个第m数据分片均缓存至第n数据发送桶中,m为大于1的正整数。
50.关于第n待传输数据流的拆分和组装流程可参考上述关于第一待传输数据流的拆分和组装流程,在此不再赘述。
51.步骤s205,向接收端依次发送第一数据发送桶中的每一个第一数据分片。
52.作为一示例,发送端101依次向接收端102发送第一数据发送桶中的第1~m个第一数据分片。
53.步骤s206,接收接收端在接收到最后一个第一数据分片时返回的第一反馈信息,第一反馈信息包括发送端标识信息、第一时间戳、已完成接收片数和未接收分片标识信息。
54.发送端标识信息,可以是系统唯一标识(uuid),用于接收端102区分是谁(发送端)发送数据(针对多连接)。
55.已完成接收片数,是指接收端102当前已经接收到的数据分片的数量。
56.未接收分片标识信息,可以是数据分片编号、数据分片id。
57.图4是本技术实施例提供的一种数据传输时序示意图。
58.作为一示例,结合图4,第一数据发送桶中有m个第一数据分片,分别编号为分片01、02、03
……
m。发送端101在t0时刻向接收端102发送分片01,在t1时刻向接收端102发送分片02
……
在tm时刻向接收端102发送分片m。假设接收端102当前已完成接收的第一数据分片有分片01、03、04、05、06、07、08、09......m,那么已完成接收片数为m-1片,未接收分片有分片02(未接收分片标识信息为02)。
59.结合上述示例,接收端102在接收到第m个第一数据分片时,向发送端101返回第一反馈信息,该第一反馈信息包括发送端标识信息(如uuid1)、第一时间戳(time1)、已完成接收片数(m-1片)和未接收分片标识信息(02)。
60.步骤s207,若根据第一反馈信息确认存在分片丢失情况,则根据未接收分片标识信息确定需重传数据分片,将需重传数据分片重新传输至接收端,并继续向接收端依次发送第n数据发送桶中的每一个第m数据分片。
61.继续参考图4,为了便于理解,继续沿用上述示例,若发送端101在接收到接收端102返回的第一反馈信息后,确认存在分片丢失情况(如接收端已完成接收片数少于第一数据发送桶中的第一数据分片的分片总数),并根据未接收分片标识信息(02)确认需重传数据分片为分片02,那么发送端101在当前时刻(t
m+2
)会将分片02重新传输至接收端102,在下一时刻(t
m+3
),发送端101继续向接收端依次发送第n数据发送桶(如第二数据发送桶bucket2)中的每一个第m数据分片(如第二数据分片)。
62.本技术实施例提供的技术方案,一方面沿用了传统的udp传输的无连接传输模式,在数据传输过程中无需建立发送端与接收端之间的连接,数据传输效率较高;另一方面,在整个数据传输的过程中,可实现无阻塞等待的数据异步传输,且发送端与接收端之间会有较少次数的交互,可实现在基本不牺牲传输效率的前提下有效提升数据传输的可靠性,因而可满足一些数据量较大且对数据可靠性要求较高的数据传输场景(如视频数据传输场景等)的传输需求。
63.本技术实施例提供的数据传输方式,具有传输高效、容错性好、兼容性好等优点。
64.在一些实施例中,上述步骤s203,具体包括:
65.确定每一次传输的最大可传输帧长;
66.根据最大可传输帧长和预设的数据封装结构中的数据头部长度,对第一待传输数据流进行数据拆分,得到多个数据片段;
67.将每一个数据片段分别封装至数据封装结构中的数据区,得到每一个数据片段对应的第一数据分片。
68.最大可传输帧长,即最大传输单元mtu(maximum transmission unit),可以传输fifo(first input first output,先入先出队列)或者每次能发送的最大帧长作为每次传输的mtu。例如,mtu为1492字节,那么发送端每次传输的最大可传输帧长为1492字节(包括数据头部和有效数据在内)。
69.数据头部长度,即各层(如传输层等)的包头长度,可根据实际情况确定。传输层的包头可包括ip头部(20字节)、udp头部(20字节)、本技术实施例的数据封装结构的数据头(可自定义)中的一个或多个。那么,以太网传输层的mtu=以太网传输层的mtu-ip头部(20字节)-udp头部(20字节)-本技术的数据封装结构的数据头。
70.作为一示例,假设第一待传输数据流的大小为y mb(即y兆字节),发送端的传输层每次传输的最大可传输帧长为z字节,预设的数据封装结构中的数据头部(即本技术实施例的数据封装结构的数据头)长度为x字节,ip头部为20字节,udp头部为20字节,那么一个数据分片可以封装的数据长度为(z-x-20-20)字节。以(z-x-20-20)字节为拆分单位,将大小为y mb的第一待传输数据流拆分为m个数据片段,其中,m=y/(z-x-20-20),m取整数,不满1的小数部分进1。例如,根据上述公式计算出来的m为10.2,那么m的取值为11。
71.图5是本技术实施例提供的一种数据封装结构的结构示意图。
72.如图5所示,本技术实施例提供的数据封装结构包括ip头部、udp头部、数据头部501和数据区502;数据头部包括第一填充区5011、第二填充区5012、第三填充区5015、第四填充区5014、第五填充区5015、第六填充区5016和第七填充区5017。第一填充区5011用于填充发送端标识信息(例如,uuid);第二填充区5012用于填充第一时间戳;第三填充区5015用于填充第一待传输数据流的总数据长度;第四填充区5014用于填充第一数据分片的分片数据长度;第五填充区5015用于填充第一数据分片的分片总数;第六填充区5016用于填充本分片标识信息;第七填充区5017用于填充第一校验值。
73.结合上述示例,总数据长度为y mb,第一数据分片的分片数据长度为(z-x-20-20)字节,分片总数为m,本分片标识信息为1,2,3
……
m,当前属于发送哪一个第一数据分片就填写对应的编号(例如,当前的数据分片为第3个第一数据分片,那么此处应填充第3个第一数据分片的分片编号(如分片03))。
74.第一时间戳,用于接收端区分当前接收到的数据分片是哪个缓存时间点发送的。
75.第一校验值,是指整个需要发送的数据(如第一待传输数据流)的有效数据(不含数据头)校验值,可根据性能需求选定校验算法。
76.每一个第一数据分片均包括发送端标识信息、第一时间戳、多个第一数据分片的分片总数、本分片标识信息。例如,第一待传输数据流被拆分和组装成m个第一数据分片,那么第1,2,3
……
m个第一数据分片均包含有发送端标识信息、第一时间戳、多个第一数据分片的分片总数、本分片标识信息。
77.在一些实施例中,上述步骤s205,具体包括:
78.根据每一个第一数据分片的本分片标识信息,确定向接收端发送多个第一数据分
片的传输时序;
79.按照传输时序,依次从第一数据发送桶中抓取出相应的第一数据分片,并传输至接收端。
80.作为一示例,假设第一待传输数据流被拆分和组装成m个第一数据分片,每个第一数据分片分别编号为01、02、03
……
m,由此可以按照01

02

03
→……→
m的传输时序向接收端发送这m个第一数据分片。在t0时刻,从第一数据发送桶中抓取出第一数据分片01并传输至接收端,在t1时刻,从第一数据发送桶中抓取出第一数据分片02并传输至接收端
……
在tm时刻,从第一数据发送桶中抓取出第一数据分片m并传输至接收端。
81.在一些实施例中,根据第一反馈信息确认存在分片丢失情况,包括:
82.计算已完成接收片数与分片总数的片数差值;
83.若片数差值的绝对值不为零,则确认存在分片丢失情况。
84.发送端101在接收到接收端102返回的接收状态ack(确认字符),即第一反馈信息后,先从第一反馈信息中提取出“已完成接收片数”和“分片总数”,并计算已完成接收片数与分片总数之间的片数差值。若该片数差值的绝对值不等于0,则确认存在分片丢失情况。
85.示例性的,假设“已完成接收片数”为9,“分片总数”为10,计算出的片数差值的绝对值为1,不等于0,那么可确认发送端在向接收端发送第一待传输数据流的过程中存在分片丢失情况。
86.在一些实施例中,接收端102在接收到最后一个第一数据分片时,可按照下述步骤填写第一反馈信息,并返回给发送端101。
87.具体地,若当前接收到的第一数据分片的本分片标识信息(如为m)与分片总数(如为m)一致;或者当前已接收到的第一数据分片的分片数量(如为m)与分片总数(如为m)一致,则按照预设的返回报文结构填写返回信息,得到第一反馈信息。
88.图6是本技术实施例提供的一种返回报文结构的结构示意图。如图6所示,该返回报文结构包括第一报文区601、第二报文区602和第三报文区603。第一报文区601用于填充发送端标识信息、第一时间戳、已完成接收片数和分片总数;第二报文区602用于填充未接收分片标识信息;第三报文区603用于填充第二校验值。
89.已完成接收片数,是指接收端当前已经接收到发送端传输过来的多少个数据分片。
90.未接收分片标识信息,是指接收端没有接收到的数据分片的本分片标识信息。
91.第二校验值,是指接收端没有接收到的数据分片的本分片标识信息的长度的校验值。例如,没有接收到的数据分片为第二数据分片02,那么该第二校验值为第二数据分片02的本分片标识信息(如分片id)的长度(一般是一个分片id占2字节)的校验值。例如,当已完成接收片数等于分片总数时,该第二校验值为0。在实际应用中,可根据实际情况选择校验算法/校验方法。
92.第二报文区602的数据长度=(分片总数-已完成接收片数)*2字节。
93.在一实施例中,接收端102可先根据接收到的数据分片中的uuid和数据流时间戳分配数据缓存空间,例如,为uuid1和第一时间戳分配数据缓存空间1,为uuid2和第二时间戳分配数据缓存空间2
……
为uuidn和第n时间戳分配数据缓存空间n。然后,根据接收到的数据分片的uuid、时间戳,将数据分片放置到相应的数据缓存空间中,并在该数据缓存空间
中按照该数据分片的本分片标识信息的顺序进行数据的放置。在接收到某个数据发送分桶的最后一个数据分片时,判断已完成接收片数与分片总数是否相等。若不相等,进一步根据已接收到的数据分片的本分片标识信息确定未接收到的数据分片及其未接收分片标识信息。之后,按照图6所示的返回报文结构填写相关信息,形成反馈信息,并返回发送端101,以告知发送端101其当前的数据接收情况。
94.接收端在向发送端返回反馈信息(即接收应答ack)后,检查该数据缓存空间内的数据分片总数与对应uuid和时间戳的数据发送桶中的数据分片总数是否相等,若相等,则进行组包,得到分桶数据包,并反馈到上层。若不相等,则表明存在分片漏发或丢失的情况,则需要异步等待发送端重传漏发或丢失的数据分片过来之后再进行组包。若是在超时时间内仍未接收到发送端重传的漏发或丢失的数据分片,则丢弃已接收到的其他数据分片。
95.作为一示例,假设数据缓存空间1用于缓存第一数据发送桶中的m个第一数据分片,数据缓存空间n用于缓存第n数据发送桶中的多个第m数据分片。接收端在接收到第m个第一数据分片时,向发送端返回第一反馈信息,并判断数据缓存空间1内的数据分片总数与第一数据发送桶中的第一数据分片的分片总数是否相同,即是否为m,若是,则组包并反馈到上层;若否,则异步等待发送端重传漏发或丢失的第一数据分片过来之后再进行组包。若是在超时时间内(如1分钟)仍未接收到发送端重传的漏发或丢失的第一数据分片,则丢弃数据缓存空间1中已缓存的其他第一数据分片。在异步等待发送端重传漏发或丢失的第一数据分片的过程中,接收端可并行接收发送端继续发送过来的第n数据发送桶中的多个第m数据分片。
96.本技术实施例提供的技术方案,可实现发送端的单点接收多点发送数据,以及接收端并行接收发送端的多点发送数据,数据传输效率较高。同时,在整个数据传输过程中,发送端与接收端之间的交互较少,可在不牺牲数据传输效率的前提下提高数据传输的可靠性。
97.在一些实施例中,上述数据传输方法,还可包括如下步骤:
98.若在向接收端发送完第一或第n数据发送桶中的多个第一或第m数据分片后,经过预设时长未收到接收端返回的第一或第n反馈信息,则重新依次向接收端传输第一或第n数据发送桶中的每一个第一或第m数据分片;
99.若在再次向接收端发送完第一或第n数据发送桶中的多个第一或第m数据分片后,经过预设时长仍未收到接收端返回的第一或第n反馈信息,则清除第一或第n数据发送桶中的多个第一或第m数据分片,并上报错误信息或进行通信检测。
100.预设时长,可以根据实际情况灵活设定,例如,可以设置为20秒、30秒、1分钟等。
101.作为一示例,假设发送端在向接收端发送完第一数据发送桶中的m个第一数据分片后,经过预设时长(如为30秒)仍未收到接收端返回的第一反馈信息,则重新依次向接收端传输第一数据发送桶中的每一个第一数据分片。之后,若是在再次发送完第一数据发送桶中的m个第一数据分片后,经过预设时长仍未收到接收端返回的第一反馈信息,则清除第一数据发送桶中的m个第一数据分片,并上报错误信息或进行通信检测。
102.同理,发送端在向接收端发送完第n数据发送桶中的m个第m数据分片后,经过预设时长(如为30秒)仍未收到接收端返回的第n反馈信息,则重新依次向接收端传输第n数据发送桶中的每一个第m数据分片。之后,若是在再次发送完第n数据发送桶中的m个第m数据分
片后,经过预设时长仍未收到接收端返回的第n反馈信息,则清除第n数据发送桶中的m个第m数据分片,并上报错误信息或进行通信检测。
103.本技术实施例提供的技术方案,发送端在向接收端发送完某个数据发送桶中的所有数据分片后,在超时时间内(即经预设时长后)没有收到接收端返回的反馈信息(即接收应答ack),则认为接收端没有接收到该数据发送桶的数据分片,并重传一次该数据发送桶中的数据分片。如果在重传一次后仍然未收到接收端返回的接收应答ack,则删除该数据发送桶的数据分片,并上报错误信息或进行通信检测。通过上述的重传机制可以有效提高数据传输的可靠性。
104.上述所有可选技术方案,可以采用任意结合形成本技术的可选实施例,在此不再一一赘述。
105.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
106.图7是本技术实施例提供的一种数据传输装置的结构示意图。如图7所示,该数据传输装置包括:
107.截取模块701,被配置为截取第一待传输数据流至第n待传输数据流,第一待传输数据流携带有第一时间戳,第n待传输数据流携带有第n时间戳,n为大于1的正整数;
108.创建模块702,被配置为创建与第一时间戳对应的第一数据发送桶,以及与第n时间戳对应的第n数据发送桶;
109.第一分装模块703,被配置为对第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,并将多个第一数据分片均缓存至第一数据发送桶中;
110.第n分装模块704,被配置为对第n待传输数据流进行数据拆分和数据组装,得到多个第m数据分片,并将多个第m数据分片均缓存至第n数据发送桶中,m为大于1的正整数;
111.发送模块705,被配置为向接收端依次发送第一数据发送桶中的每一个第一数据分片;
112.接收模块706,被配置为接收接收端在接收到最后一个第一数据分片时返回的第一反馈信息,第一反馈信息包括发送端标识信息、第一时间戳、已完成接收片数和未接收分片标识信息;
113.续重传模块707,被配置为若根据第一反馈信息确认存在分片丢失情况,则根据未接收分片标识信息确定需重传数据分片,将需重传数据分片重新传输至接收端,并继续向接收端依次发送第n数据发送桶中的每一个第m数据分片。
114.本技术实施例提供的技术方案,一方面沿用了传统的udp传输的无连接传输模式,在数据传输过程中无需建立发送端与接收端之间的通信连接,数据传输效率较高;另一方面,在整个数据传输的过程中,可实现无阻塞等待的数据异步传输,且发送端与接收端之间会有较少次数的交互,可实现在基本不牺牲传输效率的前提下有效提升数据传输的可靠性,因而可满足一些数据量较大且对数据可靠性要求较高的数据传输场景(如视频数据传输场景等)的传输需求。
115.在一些实施例中,上述第一分装模块703,具体包括:
116.确定单元,被配置为确定每一次传输的最大可传输帧长;
117.拆分单元,被配置为根据最大可传输帧长和预设的数据封装结构中的数据头部长
度,对第一待传输数据流进行数据拆分,得到多个数据片段;
118.封装单元,被配置为将每一个数据片段分别封装至数据封装结构中的数据区,得到每一个数据片段对应的第一数据分片。
119.在一些实施例中,每一个第一数据分片均包括发送端标识信息、第一时间戳、多个第一数据分片的分片总数、本分片标识信息。
120.上述发送模块705,具体包括:
121.时序确定单元,被配置为根据每一个第一数据分片的本分片标识信息,确定向接收端发送多个第一数据分片的传输时序;
122.传输单元,被配置为按照传输时序,依次从第一数据发送桶中抓取出相应的第一数据分片,并传输至接收端。
123.在一些实施例中,上述续重传模块707,包括:
124.差值计算单元,被配置为计算已完成接收片数与分片总数的片数差值;
125.确认单元,被配置为若片数差值的绝对值不为零,则确认存在分片丢失情况。
126.在一些实施例中,接收端,包括:
127.反馈模块,被配置为若当前接收到的第一数据分片的本分片标识信息与分片总数一致;或者当前已接收到的第一数据分片的分片数量与分片总数一致,则按照预设的返回报文结构填写返回信息,得到第一反馈信息。
128.其中,返回报文结构包括第一报文区、第二报文区和第三报文区;第一报文区用于填充发送端标识信息、第一时间戳、已完成接收片数和分片总数;第二报文区用于填充未接收分片标识信息;第三报文区用于填充第二校验值。
129.本技术实施例提供的技术方案,可实现发送端的单点接收多点发送数据,以及接收端并行接收发送端的多点发送数据,数据传输效率较高。同时,在整个数据传输过程中,发送端与接收端之间的交互较少,可在不牺牲数据传输效率的前提下提高数据传输的可靠性。
130.在一些实施例中,上述数据传输装置,包括:
131.一次重传模块,被配置为若在向接收端发送完第一或第n数据发送桶中的多个第一或第m数据分片后,经过预设时长未收到接收端返回的第一或第n反馈信息,则重新依次向接收端传输第一或第n数据发送桶中的每一个第一或第m数据分片;
132.清除模块,被配置为若在再次向接收端发送完第一或第n数据发送桶中的多个第一或第m数据分片后,经过预设时长仍未收到接收端返回的第一或第n反馈信息,则清除第一或第n数据发送桶中的多个第一或第m数据分片,并上报错误信息或进行通信检测。
133.本技术实施例提供的技术方案,发送端在向接收端发送完某个数据发送桶中的所有数据分片后,在超时时间内(即经预设时长后)没有收到接收端返回的反馈信息(即接收应答ack),则认为接收端没有接收到该数据发送桶的数据分片,并重传一次该数据发送桶中的数据分片。如果在重传一次后仍然未收到接收端返回的接收应答ack,则删除该数据发送桶的数据分片,并上报错误信息或进行通信检测。通过上述的重传机制可以有效提高数据传输的可靠性。
134.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限
定。
135.图8是本技术实施例提供的电子设备8的示意图。如图8所示,该实施例的电子设备8包括:处理器801、存储器802以及存储在该存储器802中并且可在处理器801上运行的计算机程序803。处理器801执行计算机程序803时实现上述各个方法实施例中的步骤。或者,处理器801执行计算机程序803时实现上述各装置实施例中各模块/单元的功能。
136.电子设备8可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备8可以包括但不仅限于处理器801和存储器802。本领域技术人员可以理解,图8仅仅是电子设备8的示例,并不构成对电子设备8的限定,可以包括比图示更多或更少的部件,或者不同的部件。
137.处理器801可以是中央处理单元(central processing unit,cpu),也可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
138.存储器802可以是电子设备8的内部存储单元,例如,电子设备8的硬盘或内存。存储器802也可以是电子设备8的外部存储设备,例如,电子设备8上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。存储器802还可以既包括电子设备8的内部存储单元也包括外部存储设备。存储器802用于存储计算机程序以及电子设备所需的其它程序和数据。
139.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
140.集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如,在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
141.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者
替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。

技术特征:
1.一种数据传输方法,其特征在于,包括:截取第一待传输数据流至第n待传输数据流,所述第一待传输数据流携带有第一时间戳,所述第n待传输数据流携带有第n时间戳,n为大于1的正整数;创建与所述第一时间戳对应的第一数据发送桶,以及与第n时间戳对应的第n数据发送桶;对所述第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,并将多个所述第一数据分片均缓存至所述第一数据发送桶中;对所述第n待传输数据流进行数据拆分和数据组装,得到多个第m数据分片,并将多个所述第m数据分片均缓存至所述第n数据发送桶中,m为大于1的正整数;向接收端依次发送所述第一数据发送桶中的每一个第一数据分片;接收所述接收端在接收到最后一个第一数据分片时返回的第一反馈信息,所述第一反馈信息包括发送端标识信息、所述第一时间戳、已完成接收片数和未接收分片标识信息;若根据所述第一反馈信息确认存在分片丢失情况,则根据所述未接收分片标识信息确定需重传数据分片,将所述需重传数据分片重新传输至所述接收端,并继续向所述接收端依次发送所述第n数据发送桶中的每一个第m数据分片。2.根据权利要求1所述的方法,其特征在于,对所述第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,包括:确定每一次传输的最大可传输帧长;根据所述最大可传输帧长和预设的数据封装结构中的数据头部长度,对所述第一待传输数据流进行数据拆分,得到多个数据片段;将每一个所述数据片段分别封装至所述数据封装结构中的数据区,得到每一个所述数据片段对应的第一数据分片。3.根据权利要求2所述的方法,其特征在于,所述数据封装结构包括数据头部和数据区;所述数据头部包括第一填充区、第二填充区、第三填充区、第四填充区、第五填充区、第六填充区和第七填充区;所述第一填充区用于填充发送端标识信息;所述第二填充区用于填充第一时间戳;所述第三填充区用于填充第一待传输数据流的总数据长度;所述第四填充区用于填充第一数据分片的分片数据长度;所述第五填充区用于填充第一数据分片的分片总数;所述第六填充区用于填充本分片标识信息;所述第七填充区用于填充第一校验值。4.根据权利要求1所述的方法,其特征在于,每一个所述第一数据分片均包括发送端标识信息、所述第一时间戳、所述多个第一数据分片的分片总数、本分片标识信息;向接收端依次发送所述第一数据发送桶中的每一个第一数据分片,包括:根据每一个所述第一数据分片的本分片标识信息,确定向接收端发送所述多个第一数据分片的传输时序;按照所述传输时序,依次从所述第一数据发送桶中抓取出相应的第一数据分片,并传
输至所述接收端。5.根据权利要求3所述的方法,其特征在于,根据所述第一反馈信息确认存在分片丢失情况,包括:计算所述已完成接收片数与所述分片总数的片数差值;若所述片数差值的绝对值不为零,则确认存在分片丢失情况。6.根据权利要求3所述的方法,其特征在于,在接收到最后一个第一数据分片时返回的第一反馈信息,包括:若当前接收到的第一数据分片的本分片标识信息与所述分片总数一致;或者当前已接收到的第一数据分片的分片数量与所述分片总数一致,则按照预设的返回报文结构填写返回信息,得到第一反馈信息;所述返回报文结构包括第一报文区、第二报文区和第三报文区;所述第一报文区用于填充发送端标识信息、所述第一时间戳、已完成接收片数和分片总数;所述第二报文区用于填充未接收分片标识信息;所述第三报文区用于填充第二校验值。7.根据权利要求1所述的方法,其特征在于,所述方法,还包括:若在向所述接收端发送完所述第一或第n数据发送桶中的多个第一或第m数据分片后,经过预设时长未收到所述接收端返回的第一或第n反馈信息,则重新依次向所述接收端传输所述第一或第n数据发送桶中的每一个第一或第m数据分片;若在再次向所述接收端发送完所述第一或第n数据发送桶中的多个第一或第m数据分片后,经过预设时长仍未收到所述接收端返回的第一或第n反馈信息,则清除所述第一或第n数据发送桶中的多个第一或第m数据分片,并上报错误信息或进行通信检测。8.一种数据传输装置,其特征在于,包括:截取模块,被配置为截取第一待传输数据流至第n待传输数据流,所述第一待传输数据流携带有第一时间戳,所述第n待传输数据流携带有第n时间戳,n为大于1的正整数;创建模块,被配置为创建与所述第一时间戳对应的第一数据发送桶,以及与第n时间戳对应的第n数据发送桶;第一分装模块,被配置为对所述第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片,并将多个所述第一数据分片均缓存至所述第一数据发送桶中;第n分装模块,被配置为对所述第n待传输数据流进行数据拆分和数据组装,得到多个第m数据分片,并将多个所述第m数据分片均缓存至所述第n数据发送桶中;发送模块,被配置为向接收端依次发送所述第一数据发送桶中的每一个第一数据分片;接收模块,被配置为接收所述接收端在接收到最后一个第一数据分片时返回的第一反馈信息,所述第一反馈信息包括发送端标识信息、所述第一时间戳、已完成接收片数和未接收分片标识信息;续重传模块,被配置为若根据所述第一反馈信息确认存在分片丢失情况,则根据所述未接收分片标识信息确定需重传数据分片,将所述需重传数据分片重新传输至所述接收端,并继续向所述接收端依次发送所述第n数据发送桶中的每一个第m数据分片。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述方法的步骤。

技术总结
本申请涉及通信技术领域,提供了一种数据传输方法、装置、电子设备及存储介质。该方法包括:截取第一待传输数据流至第N待传输数据流;对第一待传输数据流进行数据拆分和数据组装,得到多个第一数据分片;对第N待传输数据流进行数据拆分和数据组装,得到多个第M数据分片;向接收端依次发送多个第一数据分片;若根据接收端返回的第一反馈信息确认存在分片丢失情况,则根据未接收分片标识信息确定需重传数据分片,将需重传数据分片重新传输至接收端,并继续向接收端依次发送多个个第M数据分片。本申请的传输效率较高、可靠性较高,可满足一些数据量较大且对数据可靠性要求较高,同时还要求有较高的传输效率的传输场景的传输需求。求有较高的传输效率的传输场景的传输需求。求有较高的传输效率的传输场景的传输需求。


技术研发人员:涂少波 朱乾勇 龙政方
受保护的技术使用者:重庆赛力斯新能源汽车设计院有限公司
技术研发日:2023.06.29
技术公布日:2023/8/28
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐