CN112994851B - 一种支持差异化可协商的并行数据通信方法及装置 - Google Patents
一种支持差异化可协商的并行数据通信方法及装置 Download PDFInfo
- Publication number
- CN112994851B CN112994851B CN202110105973.1A CN202110105973A CN112994851B CN 112994851 B CN112994851 B CN 112994851B CN 202110105973 A CN202110105973 A CN 202110105973A CN 112994851 B CN112994851 B CN 112994851B
- Authority
- CN
- China
- Prior art keywords
- packet
- sliding window
- data packet
- sending
- receiving end
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1829—Arrangements specially adapted for the receiver end
- H04L1/1832—Details of sliding window management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/187—Details of sliding window management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种支持差异化可协商的并行数据通信方法及装置,该方法包括:在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;根据ACK包,对所对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;根据已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,根据更新的发送端滑动窗口状态重新判断发送端的数据包发送条件。根据不同接收能力和状态按需高效发送和重传。
Description
技术领域
本发明涉及信息处理技术领域,尤其涉及一种支持差异化可协商的并行数据通信方法及装置。
背景技术
随着云计算和物联网等新型网络应用的大规模部署,现有的通信系统所承受的数据吞吐量的压力越来越大。除了不断提高通信设备的通信速率之外,设计高效可靠的通信方法也是解决数据通信能力的关键技术之一。
传统的数据通信方式主要有两种,面向连接的和面向无连接的。其中面向连接的通信方式大部分是基于TCP协议的,传统的TCP协议是针对低速、低延迟的网络设计的,在传统的低带宽、低延迟的以太网上运行性能良好。TCP协议通过反馈确认、超时重传和拥塞控制等机制来保证数据传输的稳定可靠。因此,在对数据传输正确性要求较高的场景下,TCP协议是首选的通信协议。但是随着网络不断发展、网络速度不断提升,TCP协议的低效率、高资源占用率的缺点日益突显。在高速网络环境中,TCP的拥塞避免和流量控制机制过于保守,导致大量非必要或者错误的拥塞处理情况发生,消耗了大量的时间。发送方依赖于重复ACK来间接判断需要重传的报文,大大地降低了通信效率。
面向无连接的通信方式以UDP协议为代表,UDP协议是非可靠无状态的传输协议,通信复杂度比TCP小,没有反馈确认和拥塞控制等机制,系统资源占用较少,传输速度快,实时性高。但在大规模数据传输的场景下,UDP协议可能导致网络出现严重的拥塞现象,进而导致传输过程中出现大量的丢包现象,使得通信效率大大降低。
云环境和物联网中存在海量、差异化的硬件计算资源和终端设备。云服务与终端设备、云服务与硬件计算资源、不同终端设备之间、终端设备与硬件计算资源之间等进行通信时,一方面,如何根据不同设备的资源情况和接收能力进行协商,实现差异化、可协商的通信;另一方面各种硬件计算资源和终端设备自身资源有限,如何实现多对多的、并行的通信,同时根据不同硬件计算资源和设备的状态,实时调整通信速率,提高通信的稳定性、可靠性,降低通信对资源的消耗。因此如何实现差异化、可协商、并行的、高可靠性、高性能的数据通信方法成为业界亟待解决的问题。
发明内容
本发明提供一种支持差异化可协商的并行数据通信方法及装置,用以解决现有技术中通信效率不高的情况。
本发明提供一种支持差异化可协商的并行数据通信方法,包括:
在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;
根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;
根据所述已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件。
根据本发明提供的一种支持差异化可协商的并行数据通信方法,所述在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包的步骤之前,所述方法还包括:
发送端将参数协商包发送到接收端;
接收端根据所述参数协商包确定接收端同步包标识和/或接收端滑动窗口大小,根据接收端同步包标识和/或接收端滑动窗口大小生成参数协商反馈包,并发送给发送端;
发送端根据所述接收端反馈的参数协商反馈包,获取并记录接收端同步包标识和/或接收端滑动窗口大小;
发送端根据所述参数协商反馈包确定发送端滑动窗口大小,和/或接收端和发送端的同步包标识;
其中,所述参数协商包中包括以下至少一项:期望同步包标识,期望接收端滑动窗口大小,同步命令字段;
所述参数协商反馈包中包括以下至少一项:接收端同步包标识,接收端滑动窗口大小,同步命令字段。
根据本发明提供的一种支持差异化可协商的并行数据通信方法,根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理的步骤,具体包括:
根据ACK包得到所述ACK包对应的接收端数据包接收状态信息和接收状态对应的数据包标识和/或数据包标识集合;
若所述ACK包的接收端数据包接收状态信息为正常,则读取所述ACK包中的正常接收的数据包标识和/或数据包标识集合,并将所述正常接收的数据包标识和/或数据包标识集合对应的数据包从待确认队列中删除,将正常接收的数据包标识对应的数据包的发送状态修改为已确认接收;
若所述ACK包的接收端数据包接收状态信息为重传,则读取所述ACK包中的待重传的数据包标识和/或数据包标识集合,将待重传的数据包标识和/或数据包标识集合对应的数据包从待确认队列中重新发送给接收端;
若所述ACK包的接收端数据包接收状态信息为丢弃,则读取所述ACK包中的已丢弃的数据包标识和/或数据包标识集合,如果已丢弃的数据包标识和/或数据包标识集合对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
根据本发明提供的一种支持差异化可协商的并行数据通信方法,所述方法还包括:
S31,在满足发送端数据包发送条件的情况下,将待发送数据包发送给接收端,并将所述待发送数据包保存到待确认队列中;
S32,根据所述待发送数据包的包标识更新发送端滑动窗口状态的发送端发送包标识和发送端滑动窗口状态的发送端写指针,得到更新后的发送端滑动窗口状态;
根据所述更新后的发送端滑动窗口状态,重新判断发送端数据包发送条件,重复步骤S31至S32,直至更新后的发送端滑动窗口状态不满足发送端数据包发送条件。
根据本发明提供的一种支持差异化可协商的并行数据通信方法,所述发送端数据包发送条件,具体为:
发送端滑动窗口未满,且接收端滑动窗口空闲节点数量大于正在发送的数据包数量;
其中,所述发送端滑动窗口未满具体是指发送端待确认队列中有空闲节点存放数据包;
其中,所述接收端滑动窗口空闲节点数量是指接收端滑动窗口大小与接收端滑动窗口中待处理数据包数量的差值;
其中,所述接收端滑动窗口中待处理数据包数量是指接收端滑动窗口内已确认接收的连续数据包的最后包标识与接收端滑动窗口内已处理的连续数据包的最后包标识之间的数据包的个数;
其中,所述正在发送的数据包数量是指发送端滑动窗口状态的发送端发送包标识与发送端滑动窗口状态的发送端确认包标识之间的数据包的个数;
其中,所述发送端滑动窗口状态的发送端发送包标识是指发送端数据包发送状态为已发送的数据包的最后包标识;
其中,所述发送端滑动窗口状态的发送端确认包标识是指发送端当前确认接收的连续数据包的最后包标识。
根据本发明提供的一种支持差异化可协商的并行数据通信方法,所述ACK包包括以下至少一项:接收端接收包标识,接收端处理包标识,数据包集合类型,数据包集合元素个数,正常接收数据包集合,待重传数据包集合,已丢弃数据包集合;
所述数据包包括以下至少一项:包标识,命令字段,数据长度和数据;
所述包标识包括但不限于包括数据包序号,数据包的哈希值,在一段时间内不重复的任意数字/字符串中的一种或多种的任意组合;
所述发送端滑动窗口状态包括以下至少一项:发送端读指针,发送端写指针,发送端发送包标识,发送端确认包标识,数据包发送状态、接收端接收包标识,接收端处理包标识,发送端滑动窗口大小;
所述接收端滑动窗口状态包括以下至少一项:接收端读指针,接收端写指针,接收端接收包标识,接收端处理包标识,数据包接收状态、接收端滑动窗口大小;
本发明还提供一种支持差异化可协商的并行数据通信方法,包括:
接收端获取发送端发送的数据包,对所述数据包进行解析,得到数据包的接收状态;
根据数据包的接收状态生成正常接收数据包集合、待重传数据包集合和已丢弃数据包集合;
根据所述接收端滑动窗口状态中的接收端接收包标识、接收端处理包标识、正常接收数据包集合、待重传数据包集合和已丢弃数据包集合生成ACK包,将所述ACK包发送给发送端。
根据本发明还提供的一种支持差异化可协商的并行数据通信方法,接收端获取发送端发送的数据包,对所述数据包进行解析,得到数据包的接收状态的步骤,具体包括:
对所述数据包进行解析,得到数据包标识;
根据所述数据包标识和接收端滑动窗口状态,确定数据包的接收状态。
本发明提供一种支持差异化可协商的并行数据通信装置,包括:
提取模块,用于在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;
处理模块,用于根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;
通信模块,用于根据所述已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件。
基于本发明提供的一种支持差异化可协商的并行数据通信装置,所述装置还包括:窗口同步模块;
所述窗口同步模块,用于发送端将参数协商包发送到接收端;
接收端根据所述参数协商包确定接收端同步包标识和/或接收端滑动窗口大小,根据接收端同步包标识和/或接收端滑动窗口大小生成参数协商反馈包并发送给发送端;
发送端根据所述接收端反馈的参数协商反馈包,获取并记录接收端同步包标识和/或接收端滑动窗口大小;
发送端根据所述参数协商反馈包确定发送端滑动窗口大小,和/或接收端和发送端的同步包标识;
其中,所述参数协商包中包括以下至少一项:期望同步包标识,期望接收端滑动窗口大小,同步命令字段;
所述参数协商反馈包中包括以下至少一项:接收端同步包标识,接收端滑动窗口大小,同步命令字段。
基于本发明提供的一种支持差异化可协商的并行数据通信装置,所述处理模块,具体用于:
根据ACK包得到所述ACK包对应的接收端数据包接收状态信息和接收状态对应的数据包标识和/或数据包标识集合;
若所述ACK包的接收端数据包接收状态信息为正常,则读取所述ACK包中的正常接收的数据包标识和/或数据包标识集合,并将所述正常接收的数据包标识和/或数据包标识集合对应的数据包从待确认队列中删除,将正常接收的数据包标识对应的数据包的发送状态修改为已确认接收;
若所述ACK包的接收端数据包接收状态信息为重传,则读取所述ACK包中的待重传的数据包标识和/或数据包标识集合,将待重传的数据包标识和/或数据包标识集合对应的数据包从待确认队列中重新发送给接收端;
若所述ACK包的接收端数据包接收状态信息为丢弃,则读取所述ACK包中的已丢弃的数据包标识和/或数据包标识集合,如果已丢弃的数据包标识和/或数据包标识集合对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
基于本发明提供的一种支持差异化可协商的并行数据通信装置,所述装置还包括:发送模块;
所述发送模块,具体用于:
S31,在满足发送端数据包发送条件的情况下,将待发送数据包发送给接收端,并将所述待发送数据包保存到待确认队列中;
S32,根据所述待发送数据包的包标识更新发送端滑动窗口状态的发送端发送包标识和发送端滑动窗口状态的发送端写指针,得到更新后的发送端滑动窗口状态;
根据所述更新后的发送端滑动窗口状态,重新判断发送端数据包发送条件,重复步骤S31至S32,直至更新后的发送端滑动窗口状态不满足发送端数据包发送条件。
本发明还提供一种支持差异化可协商的并行数据通信装置,其特征在于,所述发送端数据包发送条件,具体为:
发送端滑动窗口未满,且接收端滑动窗口空闲节点数量大于正在发送的数据包数量;
其中,所述发送端滑动窗口未满具体是指发送端待确认队列中有空闲节点存放数据包;
其中,所述接收端滑动窗口空闲节点数量是指接收端滑动窗口大小与接收端滑动窗口中待处理数据包数量的差值;
其中,所述接收端滑动窗口中待处理数据包数量是指接收端滑动窗口内已确认接收的连续数据包的最后包标识与接收端滑动窗口内已处理的连续数据包的最后包标识之间的数据包的个数;
其中,所述正在发送的数据包数量是指发送端滑动窗口状态的发送端发送包标识与发送端滑动窗口状态的发送端确认包标识之间的数据包的个数;
其中,所述发送端滑动窗口状态的发送端发送包标识是指发送端数据包发送状态为已发送的数据包的最后包标识;
其中,所述发送端滑动窗口状态的发送端确认包标识是指发送端当前确认接收的连续数据包的最后包标识。
本发明还提供一种支持差异化可协商的并行数据通信装置,包括:
解析模块,用于获取发送端发送的数据包,对所述数据包进行解析,得到数据包的接收状态;
生成模块,用于根据数据包的接收状态生成正常接收数据包集合、待重传数据包集合和已丢弃数据包集合;
传递模块,用于根据所述接收端滑动窗口状态中的接收端接收包标识、接收端处理包标识、正常接收数据包集合、待重传数据包集合和已丢弃数据包集合生成ACK包,将所述ACK包发送给发送端。
所述解析模块,具体用于:
对所述数据包进行解析,得到数据包标识;
根据所述数据包标识和接收端滑动窗口状态,确定数据包的接收状态。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述支持差异化可协商的并行数据通信方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述支持差异化可协商的并行数据通信方法的步骤。
本发明提供的一种支持差异化可协商的并行数据通信方法及装置,通过根据发送端数据包发送条件,充分考虑接收端接收速率的变化,来动态调整发送端的数据包发送情况,能够有效降低数据传输的丢包率;本发明中充分利用了接收端反馈的ACK包,来对发送端待确认队列中的数据包进行确认,保证了需要重传的数据包能够及时重传,提高通信效率和可靠性;本发明充分考虑了接收端不同接收能力,发送端和接收端通过参数协商步骤协商出发送端和接收端滑动窗口大小以及同步包标识,实现差异化、可协商的通信;一个发送端可以根据不同接收端的能力不同,采用不同的滑动窗口大小,以不同的通信速率并行通信,反过来,一个接收端同样可以与不同发送端采用不同的滑动窗口大小,以不同的通信速率并行通信,实现多对多并行的通信,提高了通信的效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的支持差异化可协商的并行数据通信方法的流程示意图之一;
图2为本发明提供的支持差异化可协商的并行数据通信方法参数协商过程示意图;
图3为本发明提供的支持差异化可协商的并行数据通信方法发送过程示意图;
图4为本发明提供的支持差异化可协商的并行数据通信方法的流程示意图之二;
图5为本发明提供的在应用程序与服务器之间多对多场景下的支持差异化可协商的并行数据通信方法的流程示意图;
图6为本发明提供的在密码服务场景下的支持差异化可协商的并行数据通信方法的流程示意图;
图7为本发明提供的在物联网终端使用场景下的支持差异化可协商的并行数据通信方法的流程示意图;
图8为本发明提供的支持差异化可协商的并行数据通信装置示意图之一;
图9为本发明提供的支持差异化可协商的并行数据通信装置示意图之二;
图10为本发明提供的电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的支持差异化可协商的并行数据通信方法的流程示意图之一,如图1所示,包括:
步骤S1,在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;
其中,所述ACK包中包括但不限于包括接收端接收包标识、接收端处理包标识、数据包集合类型、数据包集合元素个数、正常接收数据包集合、待重传数据包集合、已丢弃数据包集合中的一种或多种的任意组合;
所述包标识包括但不限于包括数据包序号、数据包的哈希值、在一段时间内不重复的任意数字/字符串中的一种或多种的任意组合;
所述包标识用来表示一段时间内数据发送或接收顺序的唯一标识;
包标识可以采用以下方法进行实现,但不局限于下面方式:
1)直接用数据发送的数据包序号;
2)对数据包做摘要计算;
3)数据内容或者部分数据内容;
在发送端将包标识与表示顺序的数建立映射关系,比如自然数,表示顺序的数经过一段时间可以循环使用;比如表示顺序的数为1-100,经过一段时间可以循环使用。
上面的包标识的实现方法是用来解释本发明内容,并不是来限制本发明内容。
所述数据包集合类型是接收端在获取发送端所发送的数据包后,根据其获取到数据包的包标识是否在接收端滑动窗口范围内以及接收端滑动窗口内数据包的接收状态确定的;
所述正常接收数据包集合,是接收端在获取发送端所发送的数据包后,如果其获取到数据包的包标识在接收端滑动窗口范围内,并且接收端以前没有接收到过该包标识的数据包,则将该数据包的包标识放入正常接收数据包集合中;
所述待重传数据包集合,是接收端在获取发送端所发送数据包后,如果其获取到的数据包的包标识在接收端滑动窗口范围内,但是接收端没有接收到该包标识之前的若干个数据包,则将该包标识之前的若干个接收端没有接收到的数据包的包标识放入待重传数据包集合中;
所述已丢弃数据包集合,是接收端在获取发送端所发送的数据包后,其获取到数据包的包标识不在接收端滑动窗口范围内,则将该数据包的包标识放入已丢弃数据包集合中;
下面以数据包序号为例来解释3种数据包集合,同时数据包序号按照从小到大的顺序增加:
下面给出3个ACK包的示例,这些示例不是为了限制实现方法,而是为了便于理解本专利。
示例1:一个ACK包中只有正常接收数据包集合、待重传数据包集合、已丢弃数据包集合三者中的一个,并且其各个数据包集合只包含一个数据包的包序号,其中正常接收数据包集合用符号NormalAck、待重传数据包集合用符号RetransAck、已丢弃数据包集合用符号AbortAck表示。ACK包可以表示成:
AckPkt=<RecvSeq,ProcessSeq,AckType,NormalAck/RetransAck/AbortAck>
其中,RecvSeq表示接收端接收包序号,即接收端滑动窗口内已确认接收的连续数据包的最大包序号;ProcessSeq表示接收端处理包序号,即接收端滑动窗口内已处理的连续数据包的最大包序号;AckType表示该ACK包中的数据包集合类型,例如,取值为0表示正常接收数据包集合、取值为1表示待重传数据包集合、取值为2表示已丢弃数据包集合;NormalAck表示正常接收数据包集合,即数据包按序正确地到达接收端;RetransAck表示待重传数据包集合,即在传输过程中丢失或者出现错误的,需要发送端重新发送数据包;AbortAck表示已丢弃数据包集合,即不在接收端接收范围内,被接收端丢弃的数据包。
示例2:一个ACK包中包含正常接收数据包集合、待重传数据包集合、已丢弃数据包集合三者中的一个,正常接收数据包集合或待重传数据包集合或已丢弃数据包集合中可以有多个数据包序号,ACK包可以表示成:
AckPkt=<RecvSeq,ProcessSeq,{NormalAckType,NormalAckNum,NormalAcki|0≤i
≤NormalAckNum}/{RetransAckType,RetransAckNum,RetransAckj|0≤j
≤RetransAckNum}/{AbortAckType,AbortAckNum,AbortAckk|0≤k
≤AbortAckNum}>
其中,RecvSeq表示接收端接收包序号,即接收端滑动窗口内已确认接收的连续数据包的最大包序号;ProcessSeq表示接收端处理包序号,即接收端滑动窗口内已处理的连续数据包的最大包序号;{NormalAckType,NormalAckNum,NormalAcki|0≤i≤NormalAckNum}表示正常接收数据包集合,其中NormalAckType表示数据包集合的类型是正常接收数据包集合,NormalAckNum表示正常接收数据包序号的个数,NormalAcki表示第i个正常接收数据包序号;{RetransAckType,RetransAckNum,RetransAckj|0≤j≤RetransAckNum}表示待重传数据包集合,其中RetransAckType表示数据包集合的类型是待重传数据包集合,RetransAckNum表示待重传数据包序号的个数,RetransAckj表示第j个待重传数据包序号;{AbortAckType,AbortAckNum,AbortAckk|0≤k≤AbortAckNum}表示已丢弃数据包集合,其中AbortAckType表示数据包集合的类型是已丢弃数据包集合,AbortAckNum表示已丢弃数据包序号的个数,AbortAckk表示第k个已丢弃数据包序号;三种数据包集合只有一个,元素个数可以是任意自然数。
示例3:一个ACK包中可以同时有正常接收数据包集合、待重传数据包集合、已丢弃数据包集合三者中的一个或多个,每个数据包集合中可以有多个数据包序号,ACK包可以表示成:
AckPkt=<RecvSeq,ProcessSeq,{NormalAckType,NormalAckNum,NormalAcki|0≤i
≤NormalAckNum},{RetransAckType,RetransAckNum,RetransAckj|0≤j
≤RetransAckNum},{AbortAckType,AbortAckNum,AbortAckk|0≤k
≤AbortAckNum}>
其中,RecvSeq表示接收端接收包序号,即接收端滑动窗口内已确认接收的连续数据包的最大包序号;ProcessSeq表示接收端处理包序号,即接收端滑动窗口内已处理的连续数据包的最大包序号;{NormalAckType,NormalAckNum,NormalAcki|0≤i≤NormalAckNum}表示正常接收数据包集合,其中NormalAckType表示数据包集合的类型是正常接收数据包集合,NormalAckNum表示正常接收数据包序号的个数,NormalAcki表示第i个正常接收数据包序号;{RetransAckType,RetransAckNum,RetransAckj|0≤j≤RetransAckNum}表示待重传数据包集合,其中RetransAckType表示数据包集合的类型是待重传数据包集合,RetransAckNum表示待重传数据包序号的个数,RetransAckj表示第j个待重传数据包序号;{AbortAckType,AbortAckNum,AbortAckk|0≤k≤AbortAckNum}表示已丢弃数据包集合,其中AbortAckType表示数据包集合的类型是已丢弃数据包集合,AbortAckNum表示已丢弃数据包序号的个数,AbortAckk表示第k个已丢弃数据包序号;三种数据包集合可以同时存在一个或多个,三种数据包集合的顺序可以是任意的,每个集合中的元素个数可以是任意自然数。
具体的,本发明通过设置发送端数据包发送条件,考虑发送端滑动窗口的数据包发送数量和接收端滑动窗口空闲节点数量,从而控制发送端发送数据包的速率,从而可以有效降低数据传输的丢包率。
同时,本发明在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包,该ACK包队列存储于发送端中。
步骤S2,根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;
所述的接收端滑动窗口内已确认接收的连续数据包的最后包标识为一段时间内接收端滑动窗口内已连续接收的最后包标识;
所述接收端滑动窗口内已处理的连续数据包的最后包标识为一段时间内接收端滑动窗口内已连续处理的最后包标识;
具体的,本发明中的发送端根据接收端反馈的ACK包,对发送端待确认队列中数据包的发送状态进行确认,确保需要重传的数据包能够及时重传,提高通信效率和可靠性。
步骤S3,根据所述已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件。
具体的,本发明中已确认接收数据包的包标识,是指经过上述步骤后,发送状态为已确认接收的数据包的包标识,而本发明中根据所获取的连续已确认接收的数据包的包标识更新发送端滑动窗口状态中的发送端读指针和发送端滑动窗口状态中的发送端确认包标识,从而更新发送端滑动窗口状态,本发明在更新发送端滑动窗口状态后,重新根据更新后的发送端滑动窗口状态,验证当前是否满足发送端数据包发送条件,若满足发送端数据包发送条件,则发送数据包,若不满足发送端数据包发送条件,则重复上述步骤。
本发明中的发送端滑动窗口状态包括但不限于包括:发送端读指针,发送端写指针,发送端发送包标识,发送端确认包标识,数据包发送状态,接收端接收包标识,接收端处理包标识,发送端滑动窗口大小中的一个或多个的任意组合。
发送端滑动窗口状态可以表示为:
SendWindow={SendRptr,SendWptr,SendSeq,SendConfirmSeq,SendStatus,RecvSeq,ProcessSeq,SendWindowSize}
其中,发送端读指针SendRptr,发送端写指针SendWptr,发送端发送包标识SendSeq,发送端确认包标识SendConfirmSeq,数据包发送状态SendStatus,接收端接收包标识RecvSeq,接收端处理包标识ProcessSeq,发送端滑动窗口大小SendWindowSize。
发送端读指针表示发送端滑动窗口的下界,发送端写指针表示发送端滑动窗口的上界,发送端发送包标识表示发送端一段时间内已经发送的数据包的最后包标识,发送端确认包标识表示一段时间内发送端已经确认发送成功的连续数据包的最后包标识,数据包发送状态表示在滑动窗口内数据包的发送状态,所述数据包发送状态包括:已发送、已确认接收,接收端接收包标识表示一段时间内接收端滑动窗口内已确认接收的连续数据包的最后包标识,接收端处理包标识表示一段时间内接收端滑动窗口内已处理的连续数据包的最后包标识。
接收端滑动窗口用于表示:接收端连续的允许接收的数据包集合。
接收端滑动窗口状态包括但不限于包括:接收端读指针,接收端写指针,接收端接收包标识,接收端处理包标识,数据包接收状态,接收端滑动窗口大小中的一个或多个的任意组合。
接收端滑动窗口状态可以表示为:
RecvWindow={RecvRptr,RecvWptr,RecvSeq,ProcessSeq,RecvStatus,RecvWindowSize}
其中,接收端读指针RecvRptr,接收端写指针RecvWptr,接收端接收包标识RecvSeq,接收端处理包标识ProcessSe,数据包接收状态RecvStatu,接收端滑动窗口大小RecvWindowSize。
接收端读指针表示接收端滑动窗口的下界,接收端写指针表示接收端滑动窗口的上界,接收端接收包标识表示一段时间内接收端滑动窗口内已确认接收的连续数据包的最后包标识,接收端处理包标识表示一段时间内接收端滑动窗口内已处理的连续数据包的最后包标识,数据包接收状态表示在接收端滑动窗口内的数据包的接收状态,所述数据包接收状态包括:收到和未收到。
所述发送端滑动窗口或接收端滑动窗口存放一个或多个完整数据包。
本发明中更新发送端滑动窗口状态中的发送端读指针和发送端滑动窗口状态中的发送端确认包标识,具体为:
更新发送端滑动窗口中的发送端读指针为将所述发送端读指针加上所述连续已确认接收的数据包个数:SendRptr=SendRptr+n,其中n表示连续已确认接收的数据包个数。
更新发送端滑动窗口中的发送端确认包标识为所述发送端确认包标识之后的第n个数据包的包标识,其中n表示连续已确认接收的数据包个数。
本发明通过接收端准确反馈接收端的接收能力和数据包的接收状态给发送端,发送端根据接收端的接收能力和数据包的接收状态进行重传。这种反馈机制确保了通信的可靠性,并且提高了通信的效率。
本发明通过根据发送端数据包发送条件,充分考虑接收端接收速率的变化,来动态调整发送端的数据包发送速率,能够有效降低数据传输的丢包率,同时,本发明中还充分利用了接收端反馈的ACK包,来对发送端待确认队列中的数据包进行确认,保证根据不同接收能力和状态按需高效发送和重传,提高了通信效率和可靠性。
本发明中发送端可以给不同接收端发送数据,接收端也可以同时作为发送端,原来的发送端也可以同时作为接收端,进行双向通信,即一台设备或一个系统或一个组件或一个线程或一个进程等中可以同时部署发送端和/或接收端,以实现发送端和接收端的多对多、并行、全双工、双向通信。
基于上述任一实施例,所述在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包的步骤之前,所述方法还包括:
发送端将参数协商包发送到接收端;
接收端根据所述参数协商包确定接收端同步包标识和/或接收端滑动窗口大小,根据接收端同步包标识和/或接收端滑动窗口大小生成参数协商反馈包,并发送给发送端;
发送端根据所述接收端反馈的参数协商反馈包,获取并记录接收端同步包标识和/或接收端滑动窗口大小;
发送端根据所述参数协商反馈包确定发送端滑动窗口大小,和/或接收端和发送端的同步包标识;
其中,所述参数协商包中包括以下至少一项:期望同步包标识,期望接收端滑动窗口大小,同步命令字段;
所述参数协商反馈包中包括以下至少一项:接收端同步包标识,接收端滑动窗口大小,同步命令字段。
所述参数协商包可以表示成:
AgreePkt={AgreeSeqE,WindowSizeE,AgreeCmd}
其中,AgreeSeqE表示期望同步包标识,WindowSizeE表示期望接收端滑动窗口大小,AgreeCmd表示同步命令字段,该参数协商包由发送端设置并由接收端确认;
所述参数协商反馈包表示成:
AgreeResponsePkt={RecvAgreeSeq,RecvWindowSize,AgreeCmd}
其中,RecvAgreeSeq表示接收端同步包标识,RecvWindowSize表示接收端滑动窗口大小,AgreeCmd表示同步命令字段。
图2为本发明提供的支持差异化可协商的并行数据通信方法参数协商过程示意图,如图2所示,步骤S201,发送端根据期望同步包标识、期望接收端滑动窗口大小构造参数协商包发送给接收端;
步骤S202,接收端在获取到参数协商包后,解析并记录参数协商包中的期望同步包标识AgreeSeqE和期望接收端滑动窗口大小WindowSizeE;
接收端在获取发送端期望同步包标识后,将该期望同步包标识确定为接收端同步包标识或者接收端将自己的同步包标识确定为接收端同步包标识,根据接收能力和接收状态确定接收端滑动窗口大小,然后根据接收端滑动窗口大小RecvWindowSize,和/或接收端同步包标识构造参数协商反馈包返回给发送端;
步骤S203,发送端在接收到接收端返回的参数协商反馈包之后,解析并记录接收端滑动窗口大小RecvWindowSize,和/或接收端同步包标识,发送端根据接收端滑动窗口大小RecvWindowSize确定发送端滑动窗口大小SendWindowSize,和/或根据接收端同步包标识确定接收端和发送端的同步包标识,如果没收到返回的参数协商反馈包,则重复发送参数协商包,直至收到接收端返回的参数协商反馈包。
发送端根据接收端滑动窗口大小RecvWindowSize确定发送端滑动窗口大小SendWindowSize时,发送端根据接收端滑动窗口大小选择合适的发送端滑动窗口大小。发送端滑动窗口可以比接收端滑动窗口大小小,也可以大于或等于接收端滑动窗口大小。
具体的,同步包标识表示发送端和接收端通信的起始包标识;发送端滑动窗口用于表示:发送端连续的允许发送的数据包集合。
所述数据包包括但不限于包括包标识、命令字段、数据长度和数据中的一种或多种的任意组合,可以表示成DataPkt={Seq,Cmd,Length,Data}。其中Seq表示数据包标识,Cmd表示命令字段,Length表示数据Data的长度,Data表示待传输的数据。
本发明充分考虑不同数据通信终端数据处理能力的差异,通过发送端和接收端共同协商获得对方的滑动窗口大小,来保证发送端能根据双方滑动窗口大小的不同动态调整数据通信速率,避免数据通信两端因为数据处理能力的差异导致的数据包传输过程中的数据溢出,有效保证数据传输的高效性和可靠性。
基于上述任一实施例,根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理的步骤,具体包括:
根据ACK包得到所述ACK包对应的接收端数据包接收状态信息和接收状态对应的数据包标识和/或数据包标识集合;
若所述ACK包的接收端数据包接收状态信息为正常,则读取所述ACK包中的正常接收的数据包标识和/或数据包标识集合,并将所述正常接收的数据包标识和/或数据包标识集合对应的数据包从待确认队列中删除,将正常接收的数据包标识对应的数据包的发送状态修改为已确认接收;
若所述ACK包的接收端数据包接收状态信息为重传,则读取所述ACK包中的待重传的数据包标识和/或数据包标识集合,将待重传的数据包标识和/或数据包标识集合对应的数据包从待确认队列中重新发送给接收端;
若所述ACK包的接收端数据包接收状态信息为丢弃,则读取所述ACK包中的已丢弃的数据包标识和/或数据包标识集合,如果已丢弃的数据包标识和/或数据包标识集合对应的数据包在待确认队列中,
继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
在数据发送过程中以下原因可能会造成发送端滑动窗口异常,但不局限于以下原因:
1)维护发送端滑动窗口状态的数据被破坏;
2)数据发送中发送端或者接收端出现硬件故障;
在数据发送过程中以下原因可能会造成发送端滑动窗口状态与接收端滑动窗口状态不匹配,但不局限于以下原因:
1)参数协商过程中,设置的发送端滑动窗口大于与接收端滑动窗口大小不合适,造成接收端数据包丢包;
2)发送端滑动窗口状态异常;
3)接收端滑动窗口状态异常。
在数据发送过程中,如果出现发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配时,需要重新调整发送端滑动窗口状态,如果调整后的发送端端滑动窗口状态中的滑动窗口大小发生变化,发送端需要与接收端按照本发明提供的支持差异化可协商的并行数据通信方法参数协商过程协商出新的接收端和发送端同步包标识,和/或发送端滑动窗口大小;如果调整后的发送端端滑动窗口状态中的滑动窗口大小没有发生变化,不需要进行参数协商过程,发送端按照调整后的发送端滑动窗口状态将待确认队列中对应的数据包重新发送给接收端。
本发明中所描述的接收端数据包接收状态信息包括:正常、重传和丢弃,如果接收端数据包接收状态信息为正常,则读取ACK包中正常接收的数据包标识和/或数据包标识集合,并将正常接收的数据包标识和/或数据包标识集合对应的数据包从待确认队列中删除,修改数据包发送状态为已确认接收;如果接收端数据包接收状态信息为重传,读取ACK包中的待重传的数据包标识和/或数据包标识集合,将待重传的数据包标识和/或数据包标识集合对应的数据包从待确认队列中重新发送给接收端;如果接收端数据包接收状态信息为丢弃,读取ACK包中的已丢弃的数据包标识和/或数据包标识集合,如果已丢弃的数据包标识和/或数据包标识集合对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
本发明中所描述的待确认数据包队列中存储的数据包是指,发送端中已经发送到接收端,但是尚未根据ACK包对其接收状态进行确认的数据包。
本发明充分考虑了接收端不同接收能力,发送端和接收端利用参数协商包和参数协商反馈包,采用参数协商步骤协商出发送端和接收端合适的滑动窗口大小、同步包标识等,发送端根据接收端的资源情况和接收能力的差异,采用不同的速率进行通信,实现差异化、可协商的通信。
本发明充分利用了接收端反馈的ACK包,来对发送端待确认队列中的数据包进行确认,保证根据不同接收能力和状态按需高效发送和重传,提高了通信效率和可靠性。
基于上述任一实施例,所述方法还包括:
S31,在满足发送端数据包发送条件的情况下,将待发送数据包发送给接收端,并将所述待发送数据包保存到待确认队列中;
S32,根据所述待发送数据包的包标识更新发送端滑动窗口状态的发送端发送包标识和发送端写指针,得到更新后的发送端滑动窗口状态;
根据所述更新后的发送端滑动窗口状态,重新判断发送端数据包发送条件,重复步骤S31-S32,直至更新后的发送端滑动窗口状态不满足发送端数据包发送条件。
具体的,在满足发送端数据包发送条件的情况下,则说明此时发送端可以向接收端发送数据包,将待发送数据按照数据包格式构造一个或多个数据包,发送给接收端。
根据发送给接收端的数据包个数,更新发送端滑动窗口状态的发送端发送包标识和发送端写指针,具体为:
本发明中所描述的发送端发送包标识更新为原发送端发送包标识之后的第n个数据包的包标识,所述n表示本次发送的数据包个数。
本发明中所描述的发送端写指针更新为原发送端写指针加上本次发送的数据包个数。SendWptr=SendWptr+n,其中n表示本次发送的数据包个数。
最终根据更新后的发送端写指针和发送端发送包标识,得到更新后的发送端滑动窗口状态。
而在发送端滑动窗口状态发生变化的情况下,是否满足发送端数据包发送条件则需要根据更新后的发送端滑动窗口状态重新进行判断,若满足发送端数据包发送条件,则重复上述步骤S31-S32;若不满足发送端数据包发送条件,则进入步骤S1。
所述发送端数据包发送条件,具体为:
发送端滑动窗口未满,且接收端滑动窗口空闲节点数量大于正在发送的数据包数量;
其中,所述发送端滑动窗口未满具体是指发送端待确认队列中有空闲节点存放数据包;
其中,所述接收端滑动窗口空闲节点数量是指接收端滑动窗口大小与接收端滑动窗口中待处理数据包数量的差值;
其中,所述接收端滑动窗口中待处理数据包数量是指接收端滑动窗口内已确认接收的连续数据包的最后包标识与接收端滑动窗口内已处理的连续数据包的最后包标识之间的数据包的个数;
其中,所述正在发送的数据包数量是指发送端滑动窗口状态的发送端发送包标识与发送端滑动窗口状态的发送端确认包标识之间的数据包的个数;
其中,所述发送端滑动窗口状态的发送端发送包标识是指发送端数据包发送状态为已发送的数据包的最后包标识;
其中,所述发送端滑动窗口状态的发送端确认包标识是指发送端当前确认接收的连续数据包的最后包标识。
本发明中通过精确计算接收端的数据处理能力来动态调节发送端的数据包发送速率,有效地降低了数据通信的丢包率,提高了数据通信效率。
图3为本发明提供的支持差异化可协商的并行数据通信方法发送过程示意图,如图3所示,步骤S301,发送端判断是否满足数据包发送条件,如果满足数据包发送条件,则进入步骤S302,否则跳转到步骤S304;步骤S302,将待发送数据按照数据包格式构建一个或多个数据包,和/或从待发送队列中提取一个或多个数据包,然后将数据包发送给接收端,并将数据包保存在待确认队列中,修改发送端滑动窗口中数据包发送状态为已发送;步骤S303,更新发送端滑动窗口状态的发送端发送包标识和发送端写指针;步骤S304,从ACK包队列中取出一个ACK包,根据ACK包中接收端数据包接收状态信息对所述ACK包对应的发送端待确认队列中的数据包进行管理;步骤S305,根据发送端滑动窗口状态的数据包发送状态更新发送端滑动窗口状态的发送端读指针和发送端确认包标识,转入步骤S301。
图4为本发明提供的支持差异化可协商的并行数据通信方法的流程示意图之二,如图4所示,包括:
S41,接收端获取发送端发送的数据包,对所述数据包进行解析,得到数据包的接收状态;
其中,本发明中所描述的数据包都至少包括:包标识、命令字段、数据长度和数据,可以表示成DataPkt={Seq,Cmd,Length,Data}。
本发明中对所述数据包进行解析,得到数据包标识;
根据所述数据包标识和接收端滑动窗口状态,确定数据包的接收状态;
具体的,判断数据包标识Seq是否在接收端滑动窗口范围内,如果数据包标识Seq不在接收端滑动窗口范围内则说明该数据包标识对应的数据包不在接收端的接收范围内,标记该数据包标识为已丢弃数据包标识;如果在接收端滑动窗口范围内,则搜索接收端滑动窗口处理包标识至当前数据包标识之间是否有数据包的状态为未收到,如果接收端滑动窗口处理包标识至当前数据包标识之间的数据包都收到,则说明接收端滑动窗口处理包标识至当前数据包标识之间对应的数据包为正常接收数据包,将接收端滑动窗口处理包标识至当前数据包标识之间的数据包标识标记为正常接收数据包标识;如果接收端滑动窗口处理包标识至当前数据包标识之间有数据包的状态为未收到,标记未收到的数据包标识为待重传数据包标识,其余为正常数据包标识。
其中,所述接收端滑动窗口范围用于表示接收端可以接收的数据包范围,包括接收端滑动窗口最先包标识和接收端滑动窗口大小,或者接收端滑动窗口最先包标识和接收端滑动窗口最后包标识。
所述接收端滑动窗口最先包标识用于表述一段时间内接收端滑动窗口最先可以处理的数据包的包标识,也叫做接收端处理包标识。
所述的接收端滑动窗口最后包标识用于表述一段时间内接收端滑动窗口可以接收的最后数据包的包标识。
S42,根据数据包的接收状态生成正常接收数据包集合、待重传数据包集合和已丢弃数据包集合;
S43,根据所述接收端滑动窗口状态中的接收端接收包标识、接收端处理包标识、正常接收数据包集合、待重传数据包集合和已丢弃数据包集合生成ACK包,将所述ACK包发送给发送端;
其中,所述接收端滑动窗口状态的接收端接收包标识是指接收端滑动窗口内已确认接收的连续数据包的最后包标识;
其中,所述接收端滑动窗口状态的接收端处理包标识是指接收端滑动窗口内已处理的连续数据包的最后包标识。
本发明通过接收端准确分析数据包的接收状态,并反馈给发送端,发送端根据接收端反馈的ACK包精准地对数据进行重传,提高数据通信效率和可靠性。
下面通过具体例子来说明接收端如何生成ACK包,发送端如何根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理。本实例仅用来解释发明内容,但不限制发明内容。为解释方便,后面数据包标识用数据包序号表示,下面中i,k,j为包序号,i+1≤k≤j。
假设接收端最后发送的ACK包的最后数据包标识为i,后续收到数据包标识为k,如果数据包标识k的数据包不在接收端滑动窗口范围内,标记该数据包类型为已丢弃,将数据包标识k放入已丢弃数据包集合;如果数据包标识k在接收端滑动窗口范围内,修改数据包k的接收状态为收到,标记该数据包类型为正常接收,将数据包标识k放入正常接收数据包集合。在接收端收到第j数据包后,才生成ACK包。接收端可以以下几种不同的方式来生成第i+1到j对应的ACK包。
第一种方式,接收端在生成ACK包时,根据数据包接收状态将所有数据包的数据包标识都放入到ACK包中。
从数据包标识i+1到j进行遍历,判断从i+1到j之间哪些数据包未收到,将对应数据包接收状态标记为未收到,标记该数据包类型为待重传,并将对应的数据包标识放入待重传数据包集合中。
假设第i+1到j数据包均收到,那么ACK包只有正常接收数据包集合,最终生成的正常数据包集合为:{NormalAckType,j-i,i+1,i+2,…,j}。
假设第i+1到j中第m个包的接收状态为未收到,待重传数据包集合为{RetransAckType,1,m},正常数据包集合为{NormalAckType,j-i-1,i+1,i+2,…,m-1,m+1,…,j}。
假设数据包标识j为丢弃数据包,生成已丢弃数据包集合为{AbortAckType,1,j}。
在判断数据包接收状态时,可以采用上面每接收一个数据包并同时判断数据包接收状态,也可以等收到第j包时,生成ACK包时一起判断数据包接收状态。还可以采用其他方式。
生成ACK包时,一个ACK包可以只包含一种接收状态信息,将不同接收状态的数据包标识放入到不同ACK包中,也可以包含多种接收状态信息。比如上述例子中,可以将正常接收数据包集合、待重传数据包集合、已丢弃数据包集合放入一个ACK包中,也可以将正常接收数据包集合、待重传数据包集合和已丢弃数据包集合分别放入不同的ACK包中,也可以将正常接收数据包集合、待重传数据包集合、已丢弃数据包集合任意组合生成ACK包。或者生成ACK包时,每接收一个数据包生成一个对应ACK包。
上述生成的ACK包,ACK包中包含了所有数据包标识,发送端对所述ACK包对应的待确认队列中的数据包进行管理时,将正常接收数据包集合中的数据包标识对应的数据包从待确认队列中删除,将正常接收的数据包标识对应的数据包的发送状态修改为已确认接收;读取待重传数据包集合中的数据包标识对应的数据包,将待重传的数据包标识对应的数据包从待确认队列中重新发送给接收端;读取已丢弃数据包标识集合中的数据包标识,如果已丢弃的数据包标识对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
第二种方式,接收端在生成ACK包时,根据数据包接收状态将不同接收状态最后一个数据包的数据包标识都放入到ACK包中。
从数据包标识i+1到j进行遍历,判断从i+1到j之间哪些数据包未收到,将对应的数据包接收状态修改为未收到,标记该数据包类型为待重传,并将对应的数据包标识放入待重传数据包集合中。假设第i+1到j数据包均收到,那么ACK包只有正常接收数据包集合,最终生成的正常数据包集合为:{NormalAckType,j-i,j},表示第i+1到j数据包接收状态都为正常接收。假设第i+1到j中第m个包的接收状态为未收到,待重传数据包集合为{RetransAckType,1,m},正常接收的数据包集合为{NormalAckType,m-i-1,m-i},和{NormalAckType,j-m,j},其中{NormalAckType,m-i-1,m-1}表示数据包标识从第i+1到第m-1对应的数据包都为正常接收数据包,也就是从第m-1开始往前m-i-1个数据包都为正常接收数据包。{NormalAckType,j-m,j}表示表示数据包标识从第m+1到第j对应的数据包都为正常接收数据包,也就是从第j开始往前j-m个数据包都为正常接收数据包。假设数据包标识j为丢弃数据包,生成已丢弃数据包集合为{AbortAckType,1,j}。
生成ACK包时,一个ACK包可以只包含一种接收状态信息,将不同接收状态的数据包标识放入到不同ACK包中,也可以包含多种接收状态信息。比如上述例子中,比如上述例子中,可以将正常接收数据包集合、待重传数据包集合、已丢弃数据包集合放入一个ACK包中,也可以将正常接收数据包集合、待重传数据包集合和已丢弃数据包集合分别放入不同的ACK包中,也可以将正常接收数据包集合、待重传数据包集合、已丢弃数据包集合任意组合生成ACK包。或者生成ACK包时,每接收一个数据包生成一个对应ACK包。。
上述生成的ACK包,发送端对所述ACK包对应的待确认队列中的数据包进行管理时,读取正常接收数据包集合中的数据包标识,得到正常接收的数据包标识和/或数据包标识集合,将正常接收的数据包标识和/或数据包标识集合对应的数据包从待确认队列中删除,将正常接收的数据包标识和/或数据包标识集合对应的数据包的发送状态修改为已确认接收;读取待重传数据包集合中的数据包标识,得到待重传的数据包标识和/或数据包标识集合,将待重传的数据包标识和/或数据包标识集合对应的数据包从待确认队列中重新发送给接收端;读取已丢弃数据包标识集合中的数据包标识,得到已丢弃的数据包标识和/或数据包标识集合,如果已丢弃的数据包标识和/或数据包标识集合对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
比如上面的例子中,如果数据包标识为j在接收端滑动窗口范围内,第m个包的接收状态为未收到,读取正常接收数据包集合{NormalAckType,m-i-1,m-i}和{NormalAckType,j-m,j}中的数据标识m-i和j,并分析数据包集合中的数据包个数,分别得到正常接收数据包标识集合为[i+1,m-1]和[m+1,j],那么将数据包标识集合对应的数据包从待确认队列中删除,并将对应的数据包的发送状态修改为已确认接收;读取待重传数据包集合,{RetransAckType,1,m}中的数据包标识m,将待重传的数据包标识m对应的数据包从待确认队列中重新发送给接收端。
第三种方式,接收端在生成ACK包时,根据数据包接收状态将不同接收状态数据包标识集合都放入到ACK包中,也就是把不同接收状态的起始数据包标识和结束数据包标识放在ACK包。
从数据包标识i+1到j进行遍历,判断从i+1到j之间哪些数据包未收到,将对应数据包接收状态修改为未收到,并将对应的数据包标识放入待重传数据包集合中。假设第i+1到j数据包均收到,那么ACK包只有正常接收数据包集合,最终生成的正常数据包集合为:{NormalAckType,i+1,j},表示第i+1到j数据包接收状态都为正常接收。假设第i+1到j中第m个包的接收状态为未收到,待重传数据包集合为{RetransAckType,1,m},正常接收的数据包集合为{NormalAckType,i+1,m-1},和{NormalAckType,m+1,j},其中{NormalAckType,i+1,m-1}表示数据包标识从第i+1到第m-1对应的数据包都为正常接收数据包,{NormalAckType,m+1,j}表示数据包标识从第m+1到第j对应的数据包都为正常接收数据包。假设数据包标识j为丢弃数据包,生成已丢弃数据包集合为{AbortAckType,1,j}。
实际应用中,生成数据ACK包时,正常接收数据包集合、待重传数据包集合、丢弃数据包集合可以采用上述任何方式的任意组合得到。
发送端根据数据包的发送状态更新发送端滑动窗口状态,如果发送端滑动窗口状态的发送端写指针之后有连续m个数据包的状态为已发送,则更新发送端滑动窗口状态的发送端写指针为将所述发送端写指针加上所述连续已发送的数据包个数:SendWptr=SendWptr+m,更新发送端滑动窗口状态的发送端发送包标识为所述发送端发送包标识之后的第m个数据包的包标识,其中m表示连续已发送的数据包个数。
发送端根据数据包的接收状态更新发送端滑动窗口状态,如果发送端滑动窗口状态的发送端读指针之后有连续n个数据包的状态为已确认接收,则更新发送端滑动窗口状态的发送端读指针为将所述发送端读指针加上所述连续已确认接收的数据包个数:SendRptr=SendRptr+n;更新发送端滑动窗口状态的发送端确认包标识为所述发送端确认包标识之后的第n个数据包的包标识,其中n表示连续已确认接收的数据包个数。
接收端根据数据包的接收状态更新接收端滑动窗口状态,如果接收端滑动窗口中的接收端接收包标识RecvSeq对应的数据包之后有连续n个数据包的数据包接收状态为已确认接收,则更新接收端处理包标识RecvSeq为接收端接收包标识RecvSeq之后的第n个数据包的包标识;
如果接收端滑动窗口中的接收端处理包标识ProcessSeq对应的数据包之后有连续n个数据包被处理,则更新接收端处理包标识ProcessSeq为接收端处理包标识ProcessSeq之后的第n个数据包的包标识。
发送端根据ACK包中数据包接收状态信息得到已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;根据已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态。
比如上面例子中,假设第i+1到第j所有的数据包都收到,那么接收端已确认接收的数据包的包标识为i+1,…,j,接收端滑动窗口内已确认接收的连续数据包的最后包标识为j,假设接收端滑动窗口内已处理的连续数据包的最后包标识为l。(以SM2/3/4算法运算为例,接收端已经连续确认接收的数据包需要交给FPGA去做SM2/3/4算法运算,因此处理包标识多少由算法运算速度决定)此时发送端滑动窗口状态中接收端接收包标识为j,接收端处理包标识为l。如果第i+1到第j中数据包标识为m的数据包接收状态为未收到,那么接收端已确认接收的数据包的包标识为i+1,…,m-1,m+1,…,j,接收端滑动窗口内已确认接收的连续数据包的最后包标识为m-1,接收端滑动窗口内已处理的连续数据包的最后包标识为l。此时发送端滑动窗口状态中接收端接收包标识为m-1,接收端处理包标识为l。
本发明所提供的一种支持差异化可协商的并行数据通信方法,通过充分考虑接收端接收速率的变化,并根据发送端数据包发送条件,来动态调整发送端的数据包发送情况,能够有效降低数据传输的丢包率;本发明中充分利用了接收端反馈的ACK包,来对发送端待确认队列中的数据包进行确认,保证了需要重传的数据包能够及时重传,提高了通信效率和可靠性;本发明充分考虑了接收端不同接收能力,发送端和接收端通过参数协商步骤协商出发送端和接收端的滑动窗口大小以及同步包标识,实现差异化、可协商的通信;一个发送端可以根据不同接收端的能力不同,采用不同的滑动窗口大小,以不同的通信速率并行通信,反过来,一个接收端同样可以与不同发送端采用不同的滑动窗口大小,以不同的通信速率并行通信,实现多对多并行的通信,提供了通信的效率。
图5为本发明提供的在应用程序与服务器之间多对多场景下的支持差异化可协商的并行数据通信方法的流程示意图,当应用程序向服务器发送数据时,如图5所示,发送端为应用程序,接收端为服务器,反过来,当服务器向应用程序发送数据时,发送端为服务器,接收端为应用程序。下面以应用APP1向一个服务器S1发送数据为例,来解释本发明内容。此时,发送端为应用APP1,接收端为服务器S1,包括:
应用APP1根据应用APP1滑动窗口大小、应用APP1期望同步包标识构造参数协商包发送给服务器S1;
服务器S1在获取到参数协商包后,解析并记录参数协商包中的应用APP1期望同步包标识和期望滑动窗口大小;
服务器S1根据参数协商包确定服务器S1同步包标识和/或服务器S1滑动窗口大小,然后根据服务器S1同步包标识和/或服务器S1滑动窗口大小构造参数协商反馈包返回给应用APP1。
应用APP1在接收到服务器S1返回的参数协商反馈包之后,获取并记录服务器S1同步包标识,和/或服务器S1滑动窗口大小,确定应用APP1的滑动窗口大小,和/或服务器S1和应用APP1的同步包标识,如果没收到返回的参数协商反馈包,则重复发送参数协商包,直至收到服务器S1返回的参数协商反馈包。
S31,更具体的,在满足应用APP1数据包发送条件的情况下,即应用APP1滑动窗口未满,且服务器S1滑动窗口空闲节点数量大于正在发送的数据包数量,将待发送数据包发送给服务器S1,并将所述待发送数据包保存到应用APP1待确认队列中;
S32,根据所述待发送数据包的包标识更新应用APP1滑动窗口状态的发送端发送包标识和发送端写指针,得到更新后的应用APP1滑动窗口状态;
根据所述更新后的应用APP1滑动窗口状态,重新判断应用APP1数据包发送条件,重复步骤S31-S32,直至更新后的应用APP1滑动窗口状态不满足应用APP1数据包发送条件。
可选的,在不满足应用APP1数据包发送条件的情况下,应用APP1提取ACK包队列中的ACK包;
根据服务器S1发送的ACK包,对所述ACK包对应的应用APP1待确认队列中的数据包进行管理,得到应用APP1滑动窗口内已确认接收的数据包的包标识、服务器S1滑动窗口内已确认接收的连续数据包的最后包标识、服务器S1滑动窗口内已处理的连续数据包的最后包标识;
若所述ACK包中的数据包集合类型为正常,则读取所述ACK包中的正常接收的数据包标识,并将所述正常接收的数据包标识对应的数据包从待确认队列中删除,将正常接收的数据包标识对应的数据包的发送状态修改为已确认接收;
若所述ACK包中的数据包集合类型为重传,则读取所述ACK包中的待重传的数据包标识,将待重传的数据包标识对应的数据包从待确认队列中重新发送给服务器S1;
若所述ACK包中的数据包集合类型为丢弃,则读取所述ACK包中的已丢弃的数据包标识,如果已丢弃的数据包标识对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给服务S1;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
根据已确认接收的数据包的包标识、服务器S1滑动窗口内已确认接收的连续数据包的最后包标识、服务器S1滑动窗口内已处理的连续数据包的最后包标识更新应用APP1滑动窗口状态,以根据更新后的应用APP1滑动窗口状态重新判断应用APP1的数据包发送条件。
更具体的,本实施例中还包括;服务器S1获取应用APP1发送的数据包,对所述数据包进行解析,得到数据包的接收状态;
具体的,判断数据包的包标识是否在服务器S1滑动窗口范围内,如果数据包的包标识不在服务器S1滑动窗口范围内则说明该包标识对应的数据包不在服务器S1的接收范围内,标记该包标识为已丢弃数据包标识;如果在服务器S1滑动窗口范围内,则搜索服务器S1滑动窗口处理包标识至当前数据包包标识之间是否有数据包的状态为未收到,如果服务器S1滑动窗口处理包标识至当前数据包包标识之间的数据包都收到,则说明滑动窗口处理包标识至当前数据包包标识之间的包标识对应的数据包为正常接收数据包,将对应的包标识标记为正常接收数据包标识;如果服务器S1滑动窗口处理包标识至当前数据包包标识之间有数据包的状态为未收到,将未收到的数据包标识标记为待重传数据包标识,其余标识为正常接收数据包标识。
根据数据包的接收状态生成正常接收数据包集合、待重传数据包集合和已丢弃数据包集合;
根据所述服务器S1滑动窗口状态的接收端接收包标识、接收端处理包标识、正常接收数据包集合、待重传数据包集合和已丢弃数据包集合生成ACK包,将所述ACK包发送给应用APP1。
实际运行中,通过本发明的方案,可以实现一个应用根据不同服务器接收能力,应用和服务器通过协商采用不同的滑动窗口大小、以不同的速率向多个服务器发送数据,同时多个应用也可以根据不同服务器的不同接收能力采用不同的滑动窗口大小、以不同的速率向多个服务器发送数据,实现差异化、可协商的通信。发送数据时,根据服务器数据接收状态,实时调整数据发送的速度,提高通信的效率和可靠性。反之同样成立,采用本发明一个服务器可以根据不同应用接收能力采用不同的滑动窗口大小向多个应用发送数据,多个服务器也可以根据不同应用的不同接收能力采用不同的滑动窗口大小向多个应用发送数据,实现多对多、并行的、全双工的通信。发送数据时,根据应用程序数据接收状态,实时调整数据发送的速度,提高了通信可靠性和效率。
图6为本发明提供的在密码服务场景下的支持差异化可协商的并行数据通信方法的流程示意图,如图6所示,在密码服务应用和调度服务器之间、调度服务器和密码计算节点之间均可采用本发明实施例提供的支持差异化可协商的并行数据通信方法进行多对多的数据通信,尤其是调度服务器和密码计算节点之间,采用本发明实施例提供的数据方法可以实现可靠、稳定、高效的数据传输。同样,对于更多级别架构,不同级别之间同样可以采用本发明实施例提供的方法进行通信,实现差异化、可协商的、并行数据通信。
在本发明提供的通信方法中,通信双方可以协商获得对方的滑动窗口大小,因此在多对多通信中,对于不同的通信双方,其使用的滑动窗口大小是可以不一样的,例如本实施例中密码计算节点对应调度服务器中不同的发送端和接收端,可以通过不同的滑动窗口大小发送数据。
图7为本发明提供的在物联网终端使用场景下的支持差异化可协商的并行数据通信方法的流程示意图,如图7所示,物联网终端中的APP应用、线程、组件、进程等与服务器之间采用本发明实施例提供的支持差异化可协商的并行数据通信方法进行数据通信,由于物联网终端设备自身资源有限,采用本发明实施例提供的数据方法可以实现低功耗、高可靠、高性能的数据传输。
图8为本发明提供的支持差异化可协商的并行数据通信装置示意图之一,如图8所示,包括:提取模块810、处理模块820和通信模块830;其中,提取模块810用于在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;其中,处理模块820用于根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;其中,通信模块830用于根据所述已确认接收数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件。
所述装置还包括:窗口同步模块;
所述窗口同步模块,用于发送端将参数协商包发送到接收端;
接收端根据所述参数协商包确定接收端同步包标识和/或接收端滑动窗口大小,根据接收端同步包标识和/或接收端滑动窗口大小生成参数协商反馈包,并发送给发送端;
发送端根据所述接收端反馈的参数协商反馈包,获取并记录接收端同步包标识和/或接收端滑动窗口大小;
发送端根据所述参数协商反馈包确定发送端滑动窗口大小,和/或接收端和发送端的同步包标识;
其中,所述参数协商包中包括以下至少一项:期望同步包标识,期望接收端滑动窗口大小,同步命令字段;
所述参数协商反馈包中包括以下至少一项:接收端同步包标识,接收端滑动窗口大小,同步命令字段。
所述处理模块,具体用于:
根据ACK包得到所述ACK包对应的接收端数据包接收状态信息和接收状态对应的数据包标识和/或数据包标识集合;
若所述ACK包的接收端数据包接收状态信息为正常,则读取所述ACK包中的正常接收的数据包标识和/或数据包标识集合,并将所述正常接收的数据包标识和/或数据包标识集合对应的数据包从待确认队列中删除,将正常接收的数据包标识对应的数据包的发送状态修改为已确认接收;
若所述ACK包的接收端数据包接收状态信息为重传,则读取所述ACK包中的待重传的数据包标识和/或数据包标识集合,将待重传的数据包标识和/或数据包标识集合对应的数据包从待确认队列中重新发送给接收端;
若所述ACK包的接收端数据包接收状态信息为丢弃,则读取所述ACK包中的已丢弃的数据包标识和/或数据包标识集合,如果已丢弃的数据包标识和/或数据包标识集合对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
所述装置还包括:发送模块;
所述发送模块,具体用于:
S31,在满足发送端数据包发送条件的情况下,将待发送数据包发送给接收端,并将所述待发送数据包保存到待确认队列中;
S32,根据所述待发送数据包的包标识更新发送端滑动窗口状态的发送端发送包标识和发送端写指针,得到更新后的发送端滑动窗口状态;
根据所述更新后的发送端滑动窗口状态,重新判断发送端数据包发送条件,重复步骤S31至S32,直至更新后的发送端滑动窗口状态不满足发送端数据包发送条件。
所述发送端数据包发送条件,具体为:
发送端滑动窗口未满,且接收端滑动窗口空闲节点数量大于正在发送的数据包数量;
其中,所述发送端滑动窗口未满具体是指发送端待确认队列中有空闲节点存放数据包;
其中,所述接收端滑动窗口空闲节点数量是指接收端滑动窗口大小与接收端滑动窗口中待处理数据包数量的差值;
其中,所述接收端滑动窗口中待处理数据包数量是指接收端滑动窗口内已确认接收的连续数据包的最后包标识与接收端滑动窗口内已处理的连续数据包的最后包标识之间的数据包的个数;
其中,所述正在发送的数据包数量是指发送端滑动窗口状态的发送端发送包标识与发送端滑动窗口状态的发送端确认包标识之间的数据包的个数;
其中,所述发送端滑动窗口状态的发送端发送包标识是指发送端数据包发送状态为已发送的数据包的最后包标识;
其中,所述发送端滑动窗口状态的发送端确认包标识是指发送端当前确认接收的连续数据包的最后包标识。
图9为本发明提供的支持差异化可协商的并行数据通信装置示意图之二,如图9所示,包括:解析模块910、生成模块920和传递模块930;其中,解析模块910用于获取发送端发送的数据包,对所述数据包进行解析,得到数据包的接收状态;其中,生成模块920用于根据数据包的接收状态生成正常接收数据包集合、待重传数据包集合和已丢弃数据包集合;其中,传递模块930用于根据所述接收端滑动窗口状态中的接收端接收包标识、接收端处理包标识、正常接收数据包集合、待重传数据包集合和已丢弃数据包集合生成ACK包,将所述ACK包发送给发送端。
所述解析模块,具体用于:
对所述数据包进行解析,得到数据包标识;
根据所述数据包标识和接收端滑动窗口状态,确定数据包的接收状态。本发明通过根据发送端数据包发送条件,充分考虑接收端接收速率的变化,来动态调整发送端的数据包发送速率,能够有效降低数据传输的丢包率,同时,本发明中充分利用了接收端反馈的ACK包,来对发送端待确认队列中的数据包进行确认,保证根据不同接收能力和状态进行发送和重传,提高通信效率和可靠性。
图10为本发明提供的电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(Communications Interface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行支持差异化可协商的并行数据通信方法,该方法包括:在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;根据所述已确认接收数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件。
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的支持差异化可协商的并行数据通信方法,该方法包括:在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;根据所述已确认接收数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的支持差异化可协商的并行数据通信方法,该方法包括:在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;根据所述已确认接收数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (15)
1.一种支持差异化可协商的并行数据通信方法,其特征在于,包括:
在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;
根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;
根据所述已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件;
其中,所述发送端数据包发送条件,具体为:
发送端滑动窗口未满,且接收端滑动窗口空闲节点数量大于正在发送的数据包数量;
其中,所述发送端滑动窗口未满具体是指发送端待确认队列中有空闲节点存放数据包;
其中,所述接收端滑动窗口空闲节点数量是指接收端滑动窗口大小与接收端滑动窗口中待处理数据包数量的差值;
其中,所述接收端滑动窗口中待处理数据包数量是指接收端滑动窗口内已确认接收的连续数据包的最后包标识与接收端滑动窗口内已处理的连续数据包的最后包标识之间的数据包的个数;
其中,所述正在发送的数据包数量是指发送端滑动窗口状态的发送端发送包标识与发送端滑动窗口状态的发送端确认包标识之间的数据包的个数;
其中,所述发送端滑动窗口状态的发送端发送包标识是指发送端数据包发送状态为已发送的数据包的最后包标识;
其中,所述发送端滑动窗口状态的发送端确认包标识是指发送端当前确认接收的连续数据包的最后包标识。
2.根据权利要求1所述支持差异化可协商的并行数据通信方法,其特征在于,所述在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包的步骤之前,所述方法还包括:
发送端将参数协商包发送到接收端;
接收端根据所述参数协商包确定接收端同步包标识和/或接收端滑动窗口大小,根据接收端同步包标识和/或接收端滑动窗口大小生成参数协商反馈包,并发送给发送端;
发送端根据所述接收端反馈的参数协商反馈包,获取并记录接收端同步包标识和/或接收端滑动窗口大小;
发送端根据所述参数协商反馈包确定发送端滑动窗口大小和/或接收端和发送端的同步包标识;
其中,所述参数协商包中包括以下至少一项:期望同步包标识,期望接收端滑动窗口大小,同步命令字段;
所述参数协商反馈包中包括以下至少一项:接收端同步包标识,接收端滑动窗口大小,同步命令字段。
3.根据权利要求1所述支持差异化可协商的并行数据通信方法,其特征在于,根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理的步骤,具体包括:
根据ACK包得到所述ACK包对应的接收端数据包接收状态信息和接收状态对应的数据包标识和/或数据包标识集合;
若所述ACK包的接收端数据包接收状态信息为正常,则读取所述ACK包中的正常接收的数据包标识和/或数据包标识集合,并将所述正常接收的数据包标识和/或数据包标识集合对应的数据包从待确认队列中删除,将正常接收的数据包标识对应的数据包的发送状态修改为已确认接收;
若所述ACK包的接收端数据包接收状态信息为重传,则读取所述ACK包中的待重传的数据包标识和/或数据包标识集合,将待重传的数据包标识和/或数据包标识集合对应的数据包从待确认队列中重新发送给接收端;
若所述ACK包的接收端数据包接收状态信息为丢弃,则读取所述ACK包中的已丢弃的数据包标识和/或数据包标识集合,如果已丢弃的数据包标识和/或数据包标识集合对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
4.根据权利要求1所述支持差异化可协商的并行数据通信方法,其特征在于,所述方法还包括:
S31,在满足发送端数据包发送条件的情况下,将待发送数据包发送给接收端,并将所述待发送数据包保存到待确认队列中;
S32,根据所述待发送数据包的包标识更新发送端滑动窗口状态的发送端发送包标识和发送端滑动窗口状态的发送端写指针,得到更新后的发送端滑动窗口状态;
根据所述更新后的发送端滑动窗口状态,重新判断发送端数据包发送条件,重复步骤S31至S32,直至更新后的发送端滑动窗口状态不满足发送端数据包发送条件。
5.根据权利要求1所述支持差异化可协商的并行数据通信方法,其特征在于,所述ACK包包括以下至少一项:接收端接收包标识,接收端处理包标识,数据包集合类型,数据包集合元素个数,正常接收数据包集合,待重传数据包集合,已丢弃数据包集合;
所述数据包包括以下至少一项:包标识,命令字段,数据长度和数据;
所述包标识包括以下至少一项:数据包序号,数据包的哈希值,在一段时间内不重复的任意数字/字符串;
所述发送端滑动窗口状态包括以下至少一项:发送端读指针,发送端写指针,发送端发送包标识,发送端确认包标识,数据包发送状态,接收端接收包标识,接收端处理包标识,发送端滑动窗口大小;
所述接收端滑动窗口状态包括以下至少一项:接收端读指针,接收端写指针,接收端接收包标识,接收端处理包标识,数据包接收状态,接收端滑动窗口大小。
6.一种支持差异化可协商的并行数据通信方法,其特征在于,包括:
接收端获取发送端发送的数据包,对所述数据包进行解析,得到数据包的接收状态;
根据数据包的接收状态生成正常接收数据包集合、待重传数据包集合和已丢弃数据包集合;
根据所述接收端滑动窗口状态中的接收端接收包标识、接收端处理包标识、正常接收数据包集合、待重传数据包集合和已丢弃数据包集合生成ACK包,将所述ACK包发送给发送端;
其中,发送端在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;
根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;
根据所述已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件;
其中,所述发送端数据包发送条件,具体为:
发送端滑动窗口未满,且接收端滑动窗口空闲节点数量大于正在发送的数据包数量;
其中,所述发送端滑动窗口未满具体是指发送端待确认队列中有空闲节点存放数据包;
其中,所述接收端滑动窗口空闲节点数量是指接收端滑动窗口大小与接收端滑动窗口中待处理数据包数量的差值;
其中,所述接收端滑动窗口中待处理数据包数量是指接收端滑动窗口内已确认接收的连续数据包的最后包标识与接收端滑动窗口内已处理的连续数据包的最后包标识之间的数据包的个数;
其中,所述正在发送的数据包数量是指发送端滑动窗口状态的发送端发送包标识与发送端滑动窗口状态的发送端确认包标识之间的数据包的个数;
其中,所述发送端滑动窗口状态的发送端发送包标识是指发送端数据包发送状态为已发送的数据包的最后包标识;
其中,所述发送端滑动窗口状态的发送端确认包标识是指发送端当前确认接收的连续数据包的最后包标识。
7.根据权利要求6所述支持差异化可协商的并行数据通信方法,其特征在于,在接收端获取发送端发送的数据包,对所述数据包进行解析,得到数据包的接收状态的步骤,具体包括:
对所述数据包进行解析,得到数据包标识;
根据所述数据包标识和接收端滑动窗口状态,确定数据包的接收状态。
8.一种支持差异化可协商的并行数据通信装置,其特征在于,包括:
提取模块,用于在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;
处理模块,用于根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;
通信模块,用于根据所述已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件;
其中,所述发送端数据包发送条件,具体为:
发送端滑动窗口未满,且接收端滑动窗口空闲节点数量大于正在发送的数据包数量;
其中,所述发送端滑动窗口未满具体是指发送端待确认队列中有空闲节点存放数据包;
其中,所述接收端滑动窗口空闲节点数量是指接收端滑动窗口大小与接收端滑动窗口中待处理数据包数量的差值;
其中,所述接收端滑动窗口中待处理数据包数量是指接收端滑动窗口内已确认接收的连续数据包的最后包标识与接收端滑动窗口内已处理的连续数据包的最后包标识之间的数据包的个数;
其中,所述正在发送的数据包数量是指发送端滑动窗口状态的发送端发送包标识与发送端滑动窗口状态的发送端确认包标识之间的数据包的个数;
其中,所述发送端滑动窗口状态的发送端发送包标识是指发送端数据包发送状态为已发送的数据包的最后包标识;
其中,所述发送端滑动窗口状态的发送端确认包标识是指发送端当前确认接收的连续数据包的最后包标识。
9.根据权利要求8所述支持差异化可协商的并行数据通信装置,其特征在于,所述装置还包括:窗口同步模块;
所述窗口同步模块,用于发送端将参数协商包发送到接收端;
接收端根据所述参数协商包确定接收端同步包标识和/或接收端滑动窗口大小,根据接收端同步包标识和/或接收端滑动窗口大小生成参数协商反馈包,并发送给发送端;
发送端根据所述接收端反馈的参数协商反馈包,获取并记录接收端同步包标识和/或接收端滑动窗口大小;
发送端根据所述参数协商反馈包确定发送端滑动窗口大小,和/或接收端和发送端的同步包标识;
其中,所述参数协商包中包括以下至少一项:期望同步包标识,期望接收端滑动窗口大小,同步命令字段;
所述参数协商反馈包中包括以下至少一项:接收端同步包标识,接收端滑动窗口大小,同步命令字段。
10.根据权利要求8所述支持差异化可协商的并行数据通信装置,其特征在于,所述处理模块,具体用于:
根据ACK包得到所述ACK包对应的接收端数据包接收状态信息和接收状态对应的数据包标识和/或数据包标识集合;
若所述ACK包的接收端数据包接收状态信息为正常,则读取所述ACK包中的正常接收的数据包标识和/或数据包标识集合,并将所述正常接收的数据包标识和/或数据包标识集合对应的数据包从待确认队列中删除,将正常接收的数据包标识对应的数据包的发送状态修改为已确认接收;
若所述ACK包的接收端数据包接收状态信息为重传,则读取所述ACK包中的待重传的数据包标识和/或数据包标识集合,将待重传的数据包标识和/或数据包标识集合对应的数据包从待确认队列中重新发送给接收端;
若所述ACK包的接收端数据包接收状态信息为丢弃,则读取所述ACK包中的已丢弃的数据包标识和/或数据包标识集合,如果已丢弃的数据包标识和/或数据包标识集合对应的数据包在待确认队列中,继续判断发送端滑动窗口状态是否正常,发送端滑动窗口状态是否与接收端滑动窗口状态匹配,如果发送端滑动窗口状态不正常或者与接收端滑动窗口状态不匹配,与接收端进行参数协商和/或调整发送端滑动窗口状态后,再将待确认队列中对应的数据包重新发送给接收端,如果发送端滑动窗口状态正常并且与接收端滑动窗口状态匹配,直接将待确认队列中对应的数据包重新发送给接收端;如果已丢弃的数据包标识和/或数据包标识集合对应的数据包不在待确认队列中,不作任何处理。
11.根据权利要求8所述支持差异化可协商的并行数据通信装置,其特征在于,所述装置还包括:发送模块;
所述发送模块,具体用于:
S31,在满足发送端数据包发送条件的情况下,将待发送数据包发送给接收端,并将所述待发送数据包保存到待确认队列中;
S32,根据所述待发送数据包的包标识更新发送端滑动窗口状态的发送端发送包标识和发送端滑动窗口状态的发送端写指针,得到更新后的发送端滑动窗口状态;
根据所述更新后的发送端滑动窗口状态,重新判断发送端数据包发送条件,重复步骤S31至S32,直至更新后的发送端滑动窗口状态不满足发送端数据包发送条件。
12.一种支持差异化可协商的并行数据通信装置,其特征在于,包括:
解析模块,用于获取发送端发送的数据包,对所述数据包进行解析,得到数据包的接收状态;
生成模块,用于根据数据包的接收状态生成正常接收数据包集合、待重传数据包集合和已丢弃数据包集合;
传递模块,用于根据接收端滑动窗口状态中的接收端接收包标识、接收端处理包标识、正常接收数据包集合、待重传数据包集合和已丢弃数据包集合生成ACK包,将所述ACK包发送给发送端;
提取模块,用于在不满足发送端数据包发送条件的情况下,提取ACK包队列中的ACK包;
处理模块,用于根据ACK包,对所述ACK包对应的发送端待确认队列中的数据包进行管理,得到发送端滑动窗口内已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识;
通信模块,用于根据所述已确认接收的数据包的包标识、接收端滑动窗口内已确认接收的连续数据包的最后包标识、接收端滑动窗口内已处理的连续数据包的最后包标识更新发送端滑动窗口状态,以根据更新后的发送端滑动窗口状态重新判断发送端的数据包发送条件;
其中,所述发送端数据包发送条件,具体为:
发送端滑动窗口未满,且接收端滑动窗口空闲节点数量大于正在发送的数据包数量;
其中,所述发送端滑动窗口未满具体是指发送端待确认队列中有空闲节点存放数据包;
其中,所述接收端滑动窗口空闲节点数量是指接收端滑动窗口大小与接收端滑动窗口中待处理数据包数量的差值;
其中,所述接收端滑动窗口中待处理数据包数量是指接收端滑动窗口内已确认接收的连续数据包的最后包标识与接收端滑动窗口内已处理的连续数据包的最后包标识之间的数据包的个数;
其中,所述正在发送的数据包数量是指发送端滑动窗口状态的发送端发送包标识与发送端滑动窗口状态的发送端确认包标识之间的数据包的个数;
其中,所述发送端滑动窗口状态的发送端发送包标识是指发送端数据包发送状态为已发送的数据包的最后包标识;
其中,所述发送端滑动窗口状态的发送端确认包标识是指发送端当前确认接收的连续数据包的最后包标识。
13.根据权利要求12所述支持差异化可协商的并行数据通信装置,其特征在于,所述解析模块,具体用于:
对所述数据包进行解析,得到数据包标识;
根据所述数据包标识和接收端滑动窗口状态,确定数据包的接收状态。
14.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5或权利要求6至7任一项所述支持差异化可协商的并行数据通信方法的步骤。
15.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5或权利要求6至7任一项所述支持差异化可协商的并行数据通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110105973.1A CN112994851B (zh) | 2021-01-26 | 2021-01-26 | 一种支持差异化可协商的并行数据通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110105973.1A CN112994851B (zh) | 2021-01-26 | 2021-01-26 | 一种支持差异化可协商的并行数据通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112994851A CN112994851A (zh) | 2021-06-18 |
CN112994851B true CN112994851B (zh) | 2022-03-29 |
Family
ID=76345522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110105973.1A Active CN112994851B (zh) | 2021-01-26 | 2021-01-26 | 一种支持差异化可协商的并行数据通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112994851B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115250288B (zh) * | 2022-07-18 | 2024-07-09 | 国仪量子技术(合肥)股份有限公司 | 数据通信方法、下位机、上位机、数据传输系统和介质 |
CN116192985B (zh) * | 2023-02-08 | 2023-11-21 | 广东保伦电子股份有限公司 | 一种数据传输方法、装置及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585322A (zh) * | 2003-08-24 | 2005-02-23 | 华硕电脑股份有限公司 | 控制接收器与传送器处理传送框调整程序的方法 |
CN101399634A (zh) * | 2007-09-28 | 2009-04-01 | 索尼株式会社 | 无线发送设备、无线发送方法、无线通信系统和程序 |
CN110601799A (zh) * | 2019-09-12 | 2019-12-20 | 无锡江南计算技术研究所 | 一种基于双滑动窗口的链路重传方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7161978B2 (en) * | 2001-08-29 | 2007-01-09 | Texas Instruments Incorporated | Transmit and receive window synchronization |
BRPI0612473A2 (pt) * | 2005-05-04 | 2010-11-23 | Lg Electronics Inc | método para transmitir informações de controle em um sistema de comunicação sem fio e método de atualização de janela de transmissão usando o mesmo |
CN105376173B (zh) * | 2014-09-02 | 2020-04-28 | 中兴通讯股份有限公司 | 一种发送窗口流量控制方法和终端 |
WO2017133014A1 (zh) * | 2016-02-06 | 2017-08-10 | 中国科学院计算技术研究所 | Tcp传输流中基于接收端的网络性能检测方法及系统 |
US11375399B2 (en) * | 2019-07-10 | 2022-06-28 | Qualcomm Incorporated | Contention window adjustment for multiple transmit receive points |
-
2021
- 2021-01-26 CN CN202110105973.1A patent/CN112994851B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585322A (zh) * | 2003-08-24 | 2005-02-23 | 华硕电脑股份有限公司 | 控制接收器与传送器处理传送框调整程序的方法 |
CN101399634A (zh) * | 2007-09-28 | 2009-04-01 | 索尼株式会社 | 无线发送设备、无线发送方法、无线通信系统和程序 |
CN110601799A (zh) * | 2019-09-12 | 2019-12-20 | 无锡江南计算技术研究所 | 一种基于双滑动窗口的链路重传方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112994851A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104518853B (zh) | 一种数据重传的方法、接收端及系统 | |
JP5523350B2 (ja) | Tcpフロー制御のための方法及び装置 | |
CN112994851B (zh) | 一种支持差异化可协商的并行数据通信方法及装置 | |
WO2012066824A1 (ja) | 通信装置および通信システム | |
CN106452692A (zh) | 一种数据传输方法和系统 | |
EP3468132A1 (en) | Method and device for transmitting speech data | |
US20080301799A1 (en) | Method and apparatus for reliable, high speed data transfers in a high assurance multiple level secure environment | |
KR102046792B1 (ko) | 송신 노드로부터 목적지 노드로의 데이터 전송 방법 | |
CN104980257B (zh) | 物联网通讯方法及装置 | |
CN114978433B (zh) | 数据传输方法、装置、设备、存储介质及计算机程序产品 | |
CN105430320A (zh) | 基于udp和tcp的音视频媒体数据传输方法 | |
CN111131179B (zh) | 业务处理方法、装置、网络设备及存储介质 | |
CN105406915A (zh) | 一种面向星地链路的文件传输方法 | |
CN113259989B (zh) | 数据重传方法、装置及电子设备 | |
JP4229807B2 (ja) | データ転送方法とtcpプロキシ装置およびそれを用いたネットワークシステム | |
CN113259490A (zh) | 基于udp传输协议的多级节点网络数据传输方法 | |
CN115913473B (zh) | 一种数据选择性重传方法及其系统、存储介质、电子设备 | |
EP2846469A1 (en) | Rateless encoding | |
CN113692767A (zh) | 无线通信设备和方法 | |
CN116455532A (zh) | 一种数据的可靠传输方法、装置、设备及电子介质 | |
Phung et al. | Enhancing rest http with random linear network coding in dynamic edge computing environments | |
CN114422425B (zh) | 多链路聚合的数据传输方法、系统、装置及存储介质 | |
Maisuria et al. | Overview of techniques for improving QoS of TCP over wireless links | |
EP2725760B1 (en) | Transfer device and transfer method | |
US8806287B1 (en) | Retransmission systems and methods in reliable streaming protocols using connection characteristics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |