CN104967502A - 数据发送方法和装置、数据接收方法和装置 - Google Patents

数据发送方法和装置、数据接收方法和装置 Download PDF

Info

Publication number
CN104967502A
CN104967502A CN201510056678.6A CN201510056678A CN104967502A CN 104967502 A CN104967502 A CN 104967502A CN 201510056678 A CN201510056678 A CN 201510056678A CN 104967502 A CN104967502 A CN 104967502A
Authority
CN
China
Prior art keywords
packet
bag
communication connection
working method
sequence number
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.)
Granted
Application number
CN201510056678.6A
Other languages
English (en)
Other versions
CN104967502B (zh
Inventor
吕阳阳
郑泽栋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Shenzhen Tencent Computer Systems Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Tencent Computer Systems Co Ltd filed Critical Shenzhen Tencent Computer Systems Co Ltd
Priority to CN201510056678.6A priority Critical patent/CN104967502B/zh
Publication of CN104967502A publication Critical patent/CN104967502A/zh
Application granted granted Critical
Publication of CN104967502B publication Critical patent/CN104967502B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供了一种数据发送方法和装置,所述方法包括:获取待发送的原始数据包;从所述原始数据包所属通信连接所对应的缓存队列的队首取出重发包;将取出的重发包与所述原始数据包合并,获得合并包;通过所述通信连接发送所述合并包;将所述原始数据包加入所述缓存队列的队尾。本发明提供的数据发送方法和装置,原始数据包的合并发送不需要等待,适用于高实时性的数据传输。本发明还提供了一种数据接收方法和装置,通过去重处理保证了数据传输的准确性和完整性;而且根据网络质量参数来动态调整数据发送端的数据包发送工作方式,提高了兼容性和适应性。

Description

数据发送方法和装置、数据接收方法和装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种数据发送方法和装置、数据接收方法和装置。
背景技术
在数据传输过程中,会由于网络波动、节点拥塞等不可控因素的影响,发生数据包丢失的情形。目前为了保证数据的可靠传输,可以采用三种方式:丢包重传方式、冗余发包方式和交织编码方式。其中,丢包重传方式是指数据接收方发现丢包后通知数据发送方重传丢失的数据包的方式;冗余发包方式是指数据发送方通过连续发送同一数据包,降低数据接收方接收失败的概率,从而降低丢包率的方式;交织编码方式是把一个较长的突发差错离散成随机差错,再用FEC(Forward Error Correction,前向纠错)技术消除随机差错的方式。
然而,目前许多网络服务涉及到高实时性的数据传输,如游戏加速、音视频通话等。采用丢包重传方式,数据接收方发现丢包后通知数据发送方重传丢失的数据包,至少会增加一个RTT(Round-Trip Time,往返延时),这在高实时性的数据传输中是不可接受的。采用冗余发包方式虽然避免了重传带来的延时,但是重复发包增大了包量,而且存在因为路由节点的尾部丢弃策略而导致重复发送的数据包均被丢弃的风险,此时仍需要采用丢包重传方式来重传丢失的数据包,增加了延时。交织编码方式通过冗余编码,避免了丢包恢复时的重传,但如果对预设数量的数据包进行编码,在数据发送方进行冗余编码前,需要收集到预设数量的数据包后才能编码并发送,带来了额外的延时。
可见目前保证数据的可靠传输的方式并不适用于高实时性的数据传输,需要改进。
发明内容
基于此,有必要针对目前保证数据的可靠传输的方式并不适用于高实时性的数据传输的问题,提供一种数据发送方法和装置、数据接收方法和装置。
一种数据发送方法,所述方法包括:
获取待发送的原始数据包;
从所述原始数据包所属通信连接所对应的缓存队列的队首取出重发包;
将取出的重发包与所述原始数据包合并,获得合并包;
通过所述通信连接发送所述合并包;
将所述原始数据包加入所述缓存队列的队尾。
一种数据发送装置,所述装置包括:
原始数据包获取模块,用于获取待发送的原始数据包;
缓存队列管理模块,用于从所述原始数据包所属通信连接所对应的缓存队列的队首取出重发包;
合并模块,用于将取出的重发包与所述原始数据包合并,获得合并包;
发送模块,用于通过所述通信连接发送所述合并包;
所述缓存队列管理模块还用于将所述原始数据包加入所述缓存队列的队尾。
上述数据发送方法和装置,通信连接对应设置有缓存队列,发送数据时,将待发送的原始数据包与缓存队列中缓存的重发包合并后,通过该通信连接发送出去。然后将该原始数据包作为新的重发包加入缓存队列的队尾,这样以后在该原始数据包排到缓存队列队首时,就可以与其它数据包再合并后发送。这样通过发送合并包,可以避免因发送重发包而导致增加额外的数据包发送数量,减轻数据传输负担,而且原始数据包的合并发送不需要等待,适用于高实时性的数据传输。而且,一个数据包与其重发包是异步发送的,可以尽量避免连续发送数据包和其重发包导致两者均丢失的情形。
一种数据接收方法,所述方法包括:
接收通过通信连接传来的合并包;
将所述合并包拆分为原始数据包和重发包;
根据所述重发包的包序号判断是否首次接收到所述包序号的数据包;
若是,则保留所述重发包;
若否,则丢弃所述重发包。
一种数据接收装置,所述装置包括:
接收模块,用于接收通过通信连接传来的合并包;
拆分模块,用于将所述合并包拆分为原始数据包和重发包;
第一判断模块,用于根据所述重发包的包序号判断是否首次接收到所述包序号的数据包;
第一重发包处理模块,用于在所述第一判断模块判断到首次接收到所述重发包时,保留所述重发包;
第二重发包处理模块,用于在所述第一判断模块判断到非首次接收到所述重发包时,丢弃所述重发包。
上述数据接收方法和装置,接收到合并包后,拆分出原始数据包和重发包。然后根据重发包的包序号进行去重处理,如果首次接收到该包序号的数据包,说明该包序号的数据包在传输过程中丢失,此时保留该重发包来替代丢失的数据包。如果不是首次接收到该包序号的数据包,说明该包序号的数据包之前已被成功接收,此时可直接丢弃该重发包。这样通过去重处理,保证丢失的数据包能够用重发包来替代,而已接收到的数据包的重发包则直接丢弃,保证了数据传输的准确性和完整性,可以保证高实时性的数据传输的质量。
附图说明
图1为一个实施例中数据传输系统的组成结构图;
图2为一个实施例中用于实现数据发送端和数据接收端的电子设备的内部结构图;
图3为一个实施例中数据发送方法的流程示意图;
图4为一个实施例中生成合并包的头部信息中的会话标识标志位的值的步骤的流程示意图;
图5为一个实施例中从原始数据包所属通信连接所对应的缓存队列的队首取出重发包的步骤的流程示意图;
图6为一个实施例中缓存队列的存储结构示意图;
图7为一个实施例中调整缓存队列的长度的步骤的流程示意图;
图8为一个具体实施例中数据发送方法的流程示意图;
图9为一个实施例中数据接收方法的流程示意图;
图10为一个实施例中根据重发包的包序号判断是否首次接收到该包序号的数据包的步骤的流程示意图;
图11为一个实施例中利用通信连接所对应的数组对接收到的数据包进行去重处理的过程的示意图;
图12为一个实施例中请求切换数据包发送工作方式的步骤的流程示意图;
图13为一个实施例中对工作方式切换操作进行确认并处理的步骤的流程示意图;
图14为一个实施例中数据发送装置的结构框图;
图15为另一个实施例中数据发送装置的结构框图;
图16为一个实施例中图14中的缓存队列管理模块的结构框图;
图17为再一个实施例中数据发送装置的结构框图;
图18为一个实施例中数据发送装置的结构框图;
图19为一个实施例中数据接收装置的结构框图;
图20为一个实施例中图19中的第一判断单元的结构框图;
图21为另一个实施例中数据接收装置的结构框图;
图22为再一个实施例中数据接收装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种数据传输系统100,包括数据发送端102和数据接收端104。数据发送端102与数据接收端104之间具有通信连接,数据发送端102通过该通信连接向数据接收端104发送数据包,相应地,数据接收端104接收数据发送端102通过该通信连接发来的数据包。数据发送端102和数据接收端104可以是网络中的任意节点,比如用户终端或者服务器。
如图2所示,在一个实施例中,提供了一种电子设备,可被配置为数据发送端102,也可以被配置为数据接收端104。该电子设备包括通过系统总线连接的处理器、内存、存储介质和网络接口。其中,该电子设备的存储介质存储有操作系统,网络接口用于通过通信连接进行通信。若该电子设备被配置为数据发送端102,则该存储介质还包括一种数据发送装置,用于实现一种数据发送方法,相应地内存中存在缓存队列,主要用于缓存已发送数据包的重发包。若该电子设备被配置为数据接收端104,则该存储介质还包括一种数据接收装置,用于实现一种数据接收方法。该电子设备可以是台式计算机、服务器、CDN(内容分发网络)中的网络节点或者移动终端,移动终端包括但不限于智能手机、平板电脑、PDA(个人数字助理等)。
如图3所示,在一个实施例中,提供了一种数据发送方法,本实施例以该方法应用于上述图1中的数据发送端102来举例说明。该方法具体包括如下步骤:
步骤302,获取待发送的原始数据包。
具体地,原始数据包是当前需要发送的数据包,原始数据包的描述用于与下述合并包、重发包的概念相区分。原始数据包可以是数据发送端102自身所生成的数据包,也可以是从其它网络节点接收到的需要转发的数据包。
步骤304,从原始数据包所属通信连接所对应的缓存队列的队首取出重发包。
具体地,原始数据包所属通信连接,是指发送该原始数据包所使用的通信连接。若两个数据包的目的地址相同,则该两个数据包属于相同的通信连接。
一个缓存队列与一个通信连接是对应的,缓存队列是一个单进单出的队列,主要用于缓存重发包,已经通过通信连接向数据接收端104发送过的数据包缓存在该缓存队列中,作为冗余的重发包排队等待发送。该重发包用于在其相应的数据包在传输过程中被丢失时,用来替代该丢失的数据包。
缓存队列中缓存的数据包至少具有该重发包的包序号,该包序号是该重发包对应的已发送的数据包的头部信息中用来唯一标识出一个数据包的数据。一个数据包包括头部信息和数据内容,数据内容就是该数据包所要传达的信息,而头部信息则是传输数据包所必须的信息,包括源地址和目的地址。具有相同包序号的数据包和重发包,两者所包括的数据内容是相同的。
步骤306,将取出的重发包与原始数据包合并,获得合并包。
具体地,可提取出重发包的头部信息和原始数据包的头部信息,生成合并包的头部信息,并采用预定义方式将重发包与原始数据包的数据内容合并,从而生成合并包。其中数据内容的合并是可还原的,比如可以用特定字符将两种数据内容区隔开,用于在拆分合并包时区分数据内容。生成的合并包是一个数据包,该数据包的头部信息包括表示该数据包是合并包的合并包识别标志位。
步骤308,通过通信连接发送合并包。
具体地,通过与数据接收端104的通信连接,将合并包发送给数据接收端104。
步骤310,将原始数据包加入缓存队列的队尾。
具体地,原始数据包被合并后发送,然后作为新的重发包加入缓存队列的队尾,这样以后在该原始数据包排到缓存队列队首时,就可以与其它数据包再合并后发送。
上述数据发送方法,通信连接对应设置有缓存队列,发送数据时,将待发送的原始数据包与缓存队列中缓存的重发包合并后,通过该通信连接发送出去。然后将该原始数据包作为新的重发包加入缓存队列的队尾,这样以后在该原始数据包排到缓存队列队首时,就可以与其它数据包再合并后发送。这样通过发送合并包,可以避免因发送重发包而导致增加额外的数据包发送数量,减轻数据传输负担,而且原始数据包的合并发送不需要等待,适用于高实时性的数据传输。而且,一个数据包与其重发包是异步发送的,可以尽量避免连续发送数据包和其重发包导致两者均丢失的情形。
如图4所示,在一个实施例中,步骤308之前,还包括生成合并包的头部信息中的会话标识标志位的值的步骤,具体包括以下步骤:
步骤402,确定合并包的收敛会话标识;确定的收敛会话标识选取自包括预设数量的预设收敛会话标识的集合;预设数量小于通信连接上收敛前的会话数。
具体地,预设数量小于该通信连接上的实际的会话的数量,这里收敛是指将较多数量的会话合并到较少数量的会话的过程。预设数量就是收敛后的会话的数量,收敛后的会话用收敛会话标识来唯一标识出。
预设数量可以事先设定,也可以根据某一时刻该通信连接上的实际的会话的数量来动态设定,或者某一段时间内该通信连接上的实际的会话的平均数量来动态设定,比如取收敛前某一时刻或某一段时间内平均的会话总数量的10%.可以从包括预设数量的收敛会话标识的集合中随机或者按顺序选取收敛会话标识。
步骤404,将确定的收敛会话标识作为合并包的头部信息中的会话标识标志位的值。
具体地,合并包的头部信息中的会话标识标志位用于在传输过程中识别出所属的会话。采用收敛会话标识作为合并包的会话标识,这样可以将会话合并,把较多的会话收敛到较少数量的会话,防止会话数量过多导致传输数据时占用过多网络资源,而且可以避免因超出中转路由节点或者数据接收端104的并发连接数而导致的传输延时。合并包的头部信息还可以包括其它传输、解析数据包时必要的信息,比如源地址、目的地址、采用的传输协议、合并包识别标志位、合并前的原始数据包和重发包的包序号等。
在一个实施例中,该数据发送方法应用于CDN,用户终端和CDN中的网络节点之间的UDP(全称User Datagram Protocol,用户数据报协议)会话数是比较少的,最少时可能只存在一个UDP会话。但CDN中网络节点间的UDP会话数是非常多的,将这些大量的会话收敛到少数预设数量的会话中,可以保证数据传输的稳定性。
如图5所示,在一个实施例中,步骤304具体包括如下步骤:
步骤502,从原始数据包所属通信连接所对应的缓存队列的队首取出数据包。
具体地,缓存队列包括多个元素,每个元素代表一个数据包。参照图6,单进单出的缓存队列602中的每个元素包含5个数据项604,分别为数据包类型TYPE、收敛会话标识SID、在原始会话中的包序号PID、时间戳TS和指向数据内容的数据指针P_con。
其中,数据包类型TYPE包括不带时间戳的延时包类型、不带时间戳的重发包类型、带时间戳的延时包类型以及带时间戳的重发包类型,每种数据包类型可以分别用事先约定的四个数值来表示,比如可以用0、1、2和3来表示这四种数据包类型,数据包类型TYPE可用一个字节表示。数据包类型TYPE这一数据项,可以在需要根据不同的数据包类型执行不同操作时起作用。
收敛会话标识SID可以在将相应的重发包加入缓存队列时分配,该收敛会话标识可以取自包括预设数量的收敛会话标识的集合,具体可以从该集合中随机或者按顺序选取。收敛会话标识SID可以用2个字节表示。包序号PID可以用4个字节表示,时间戳TS可以用4个字节表示,数据指针P_con可以用4个字节表示。
收敛会话标识SID可用来在生成合并包时作为合并包的头部信息中的会话标识标志位的值,当然生成合并包的头部信息中的会话标识标志位的值时也可以采用上述步骤402~步骤404的步骤,两种方式虽然最终会话标识标志位的值可能不同,但都是对应于同一通信连接的,不会对数据传输造成影响,都可以达到将会话收敛到较少数量的会话并传输相应的合并包的目的。
步骤504,判断提取出的数据包是延时包还是重发包;若是重发包,则执行步骤306,若是延时包则执行步骤506。
具体地,可以根据缓存队列中队首元素的数据项数据包类型TYPE来判断是延时包还是重发包,如果判定提取出的数据包是重发包,就可以执行步骤306,将取出的重发包与原始数据包合并,获得合并包。
步骤506,通过通信连接直接发送原始数据包。
延时包填充在缓存队列中的重发包之间,用来控制重发包的发送时间间隔,并不参与实际的数据传输。通过插入或者删除缓存队列中的延时包,就可以调整缓存队列的长度,从而调整缓存队列中重发包被合并生成合并包并发出的时间间隔。这样如果提取出的数据包是延时包,则无需进行合并的操作,直接将原始数据包通过相应的通信连接发送给数据接收端104。
本实施例中,在提取到延时包时,不需要合并而直接发送原始数据包,这样可以通过调整延时包来控制重发包被合并以及发送的时机,这样可以根据实际需要灵活地控制重发包的传输策略。
在一个实施例中,步骤304之前还包括:判断原始数据包所属的通信连接所对应的缓存队列是否存在数据包;若是,则执行步骤304;若否,则执行步骤506。
具体地,本实施例中,在从缓存队列中提取数据包之前,先判断缓存队列中是否存在数据包,如果不存在则说明不存在需要发送的重发包,不需要再提取数据包,而是直接向数据接收端发送原始数据包,可以提高发送数据的效率。
考虑到缓存队列的长度会影响到数据传输的质量,具体来说,如果缓存队列过长,则重发包与其相应的已发送的数据包之间的时间间隔会增大,如果查过数据接收端104的去抖动缓存的间隔大小,那么重发包将被数据接收端104全部丢弃。如果缓存队列过短,将会使得重发包与其相应的已发送的数据包的时间间隔过小,接近于直接连续发送同一数据包,存在两个数据包因路由节点的尾部丢弃策略均被丢弃的风险,导致两个数据包都无法送达数据接收端104。
基于此,如图7所示,在一个实施例中,该数据发送方法还包括调整缓存队列的长度的步骤,具体包括如下步骤:
步骤702,检测提取出的数据包是否具有时间戳;若是,则执行步骤704~步骤708,若否则执行步骤710。
具体地,可以根据缓存队列中队首的元素的数据包类型TYPE来确定提取出的数据包是否具有时间戳。缓存队列中每隔预设个数的数据包会添加时间戳,时间戳可以用一个字符序列表示,可唯一地标识某一刻的时间。时间戳可以是发送该重发包相应的已发送的数据包时生成的时间戳。
步骤704,计算重发平均延时。
重发延时是指一个重发包被加入缓存队列时起,到最终发送出去的这一段延时。重发平均延时则是多个重发延时的平均值,可以通过计算缓存队列中任意多个重发包的重发延时的平均值而获得。
在一个实施例中,可以采用下述公式(1)来计算重发平均延时ts_delay:
公式(1): ts _ delay = ts Δ * length Num ( μs ) , ts Δ = ts sign - ts last _ sign ;
其中,公式(1)中tsΔ表示提取出的数据包的时间戳tssign与上一次检测到具有时间戳的数据包的时间戳tslast_sign之间的时间差;length是当前缓存队列的长度;Num是缓存队列中最近的两个具有时间戳的数据包之间相隔的数据包数量,称为相邻时间戳间隔包数,可设置为10000;μs表示时间单位为微秒。
步骤706,根据预设重发标准延时和重发平均延时计算重发延时误差。
具体地,预设重发标准延时是预先设定的重发包的重发延时标准值,重发延时误差则是指当前计算出的重发平均延时偏离该预设重发标准延时的值。重发延时误差可以直接用预设重发标准延时减去重发平均延时来计算获得。
步骤708,根据重发延时误差调整缓存队列的长度。
具体地,若重发延时误差为预设重发标准延时与重发平均延时的差值,那么如果重发延时误差大于0,则通过向缓存队列中插入延时包来增加缓存队列的长度;如果重发延时误差小于0,则通过从缓存队列队首起取出数据包丢弃来减少缓存队列的长度;如果重发延时误差等于0,则可以不调整缓存队列的长度。
在一个实施例中,重发延时误差为预设重发标准延时与重发平均延时的差值,步骤708具体包括:根据重发延时误差、当前提取出的数据包的时间戳与上一次检测到具有时间戳的数据包的时间戳之间的时间差以及相邻时间戳间隔包数来计算重发延迟数据包数;若重发延迟数据包数大于0,则向缓存队列中插入重发延迟数据包数的延时包;若重发延迟数据包数小于0,则从缓存队列队首起取出重发延迟数据包数的数据包丢弃;若重发延迟数据包数等于0,则无动作。其中插入延时包可以均匀插入,也可以在队尾插入。
具体地,可根据以下公式(2)来计算重发延迟数据包数pkt_dis:
公式(2): pkt _ dis [ TS - delay - ts _ delay ts Δ / Num ] = [ Num * TS _ delay ts Δ - length ] ;
其中,公式(2)中tsΔ表示提取出的数据包的时间戳tssign与上一次检测到具有时间戳的数据包的时间戳tslast_sign之间的时间差;length是当前缓存队列的长度;Num是缓存队列中最近的两个具有时间戳的数据包之间相隔的数据包数量,称为相邻时间戳间隔包数,TS_delay为预设重发标准延时,ts_delay为重发平均延时。tslast_sign的初始值可取缓存队列中第一个数据包进入缓存队列时的时间戳。
步骤708之后,将提取出的数据包的时间戳tssign赋值给tslast_sign,以备下次调整缓存队列的长度时使用。
步骤710,无动作。
具体地,对于没有时间戳的数据包,可以不进行处理。
本实施例中,可以通过动态调整缓存队列长度来动态控制重发包与其相应的数据包之间的发送间隔,防止发送间隔过长或过短导致重发包和相应的数据包均被丢弃,进而导致传输数据失败。
在一个实施例中,步骤308之前,还包括:判断合并包的大小是否超过通信连接的最大传输单元;若是,则通过通信连接直接发送原始数据包;若否,则执行步骤308。
具体地,最大传输单元是指Maximum Transmission Unit,缩写为MTU,是指通信连接所能通过的最大数据包大小,超过该最大传输单元的数据包将被丢弃。本实施例中通过判断合并包的大小是否超过通信连接的最大传输单元,防止合并包太大无法传输,保证数据能够正常传输。在判断为否时,可以将取出的重发包丢弃或者等待与下一次待发送的原始数据包合并后发送。
如图8所示,在一个具体的实施例中,一种数据发送方法,具体包括如下步骤:
步骤801,获取待发送的原始数据包。
步骤802,判断原始数据包所属的通信连接所对应的缓存队列是否存在数据包;若否,则执行步骤803,若是,则执行步骤804。
步骤803,通过通信连接直接发送原始数据包。
步骤804,从原始数据包所属通信连接所对应的缓存队列的队首取出数据包。
步骤805,判断提取出的数据包是延时包还是重发包;若是延时包,则执行步骤803,若是重发包,则执行步骤806。
步骤806,将取出的重发包与原始数据包合并,获得合并包。
步骤807,确定合并包的收敛会话标识;确定的收敛会话标识选取自包括预设数量的预设收敛会话标识的集合;预设数量小于通信连接上收敛前的会话数。
步骤808,将确定的收敛会话标识作为合并包的头部信息中的会话标识标志位的值。
步骤809,判断合并包的大小是否超过通信连接的最大传输单元;若是,则执行步骤803;若否,则执行步骤810。
步骤810,通过通信连接发送合并包。
步骤811,检测提取出的数据包是否具有时间戳,若是,则执行步骤812,若否则无动作。
步骤812,计算重发平均延时。
步骤813,根据预设重发标准延时和重发平均延时计算重发延时误差。
步骤814,根据重发延时误差调整缓存队列的长度。
步骤815,生成原始数据包的包括数据项的头部信息,并将原始数据包加入缓存队列的队尾。其中每隔相邻时间戳间隔包数的数据包,在相应的缓存队列中的元素中添加时间戳。
如图9所示,在一个实施例中,提供了一种数据接收方法,本实施例以该方法应用于上述图1中的数据接收端104进行举例说明。该数据接收方法具体包括如下步骤:
步骤902,接收通过通信连接传来的数据包。
具体地,数据发送端102在执行上述步骤308后,合并包通过通信连接传递到数据接收端104,由数据接收端104接收。若数据发送端102未进行合并,进而发出原始数据包,则相应地数据接收端104会接收到数据发送端102发来的原始数据包。该通信连接是指数据接收端104与数据发送端102间的通信连接。
步骤904,检测到接收到的数据包为合并包时,将合并包拆分为原始数据包和重发包。
具体地,数据接收端104可以根据接收到的数据包的头部信息中的合并包识别标志位的值,来判断接收到的数据包是否为合并包。若接收到的是合并包,则继续进行后续对合并包的处理流程;否则,将接收到的数据包按照原始数据包进行处理。
对合并包的头部信息进行协议分析,具体根据合并包的头部信息中的数据指针,可以获取到相应的数据内容;原始数据包和重发包各自的包序号也记录在合并包的头部信息中,可直接获得;通过头部信息中的源地址和目的地址,可以确定原始数据包和重发包的源地址和目的地址。将拆分出的原始数据包保留。
步骤906,根据重发包的包序号判断是否首次接收到该包序号的数据包;若是,则执行步骤908,若否则执行步骤910。
具体地,在一个实施例中,数据接收端104可以在每接收到一个数据包时,判断是否存在与其包序号匹配的已接收记录。如果存在已接收记录,则说明不是首次接收到,如果不存在已接收记录,则说明是首次接收到,此时再对应应该数据包的包序号存储已接收记录,以备下次接收到数据包时进行去重处理。所谓去重是指将数据发送端102最初发送的相应包序号的数据包以及后续发送的相应重发包选择其一保留的过程。
步骤908,保留重发包。
具体地,若判定首次接收到相应包序号的数据包,说明数据发送端102最初发出的相应包序号的数据包已经丢失或者延时很大,此时可以直接用该重发包来替代数据接收端104最初发出的相应包序号的数据包,避免产生过长的延时。
步骤910,丢弃重发包。
具体地,若判定不是首次接收到相应包序号的数据包,说明数据发送端102之前发送的相应包序号的数据包已经被成功接收,该重发包不再起作用,则将该重发包丢弃。
上述数据接收方法,接收到合并包后,拆分出原始数据包和重发包。然后根据重发包的包序号进行去重处理,如果首次接收到该包序号的数据包,说明该包序号的数据包在传输过程中丢失,此时保留该重发包来替代丢失的数据包。如果不是首次接收到该包序号的数据包,说明该包序号的数据包之前已被成功接收,此时可直接丢弃该重发包。这样通过去重处理,保证丢失的数据包能够用重发包来替代,而已接收到的数据包的重发包则直接丢弃,保证了数据传输的准确性和完整性,可以保证高实时性的数据传输的质量。
如图10所示,在一个实施例中,步骤906具体包括如下步骤:
步骤1002,求取重发包的包序号除以通信连接所对应的存储位置总数所得的余数,作为相应的存储位置序号。
具体地,每个通信连接会对应有相应的存储区域,该存储区域中包括固定数量的存储位置,每个存储位置用存储位置序号来唯一标识。存储位置总数是指通信连接所对应的存储区域中用于存储数值的存储位置的总数量。
数据包的包序号是递增产生的,比如若一个数据包的包序号为0,则下一个数据包的包序号则是1,再下一个则是2,以此类推。将包序号除以存储位置总数求得余数,获得与重发包的包序号相应的存储位置序号,这样每固定数量的数据包的包序号会循环利用该固定数量的存储位置来进行去重处理。
将包序号除以存储位置总数求得余数,也就是将包序号按存储位置总数取模。若存储位置总数为2的整数次幂,则可以截取二进制的包序号的低位来作为存储位置序号,相当于将包序号除以存储位置总数求得余数。
步骤1004,获取存储位置序号所对应的存储位置处的数值。
具体地,根据得到的存储位置序号,获取对应于相应的通信连接的存储区域中相应存储位置处的数值。合并包的收敛会话标识是与通信连接对应的,多个收敛会话标识可与一个通信连接对应,可获取与收敛会话标识对应的存储区域中,存储位置序号所对应的存储位置处的数值。若存储位置用数组表示,则相应地,步骤1004包括:获取数组序号所对应的数组中所存储的数值。
步骤1006,判断包序号是否大于获取的数值。若是,则执行步骤908后,执行步骤1008;若否,则执行步骤910。
具体地,通信连接所对应的各个存储位置处具有初始值,且该初始值小于通信连接上所有包序号中的最小值,比如取任意负数值。这样数据接收端104在刚开始去重处理的工作时,就可以直接通过判定包序号大于初始值而判定首次接收到相应包序号的数据包。
步骤1008,将存储位置序号所对应的存储位置处的数值修改为包序号。
具体地,若判定包序号大于获取的数值,说明首次接收到相应包序号的数据包,此时将该存储位置序号所对应的存储位置处的数值修改为包序号。这样下次接收到同一包序号的数据包时,就因为包序号与该存储位置处的数值相等而判定不是首次接收到该包序号的数据包。
举例说明,参照图11,通信连接所对应的存储位置用数组m表示,数组m的长度为N,也就是上述的存储位置总数。数据接收端104在接收到一个包序号为M的数据包后,对该包序号M按数组m的长度N取模,求得数组序号id为Mod(M,N)。从数组m中读取该数组序号id所对应的数值为m(id),然后比较包序号M与数值m(id)的大小。若M>m(id),则将接收到的数据包保留,若M≤m(id),则将接收到的数据包丢弃。
本实施例中,通过固定数量的存储位置来作为判断是否首次接收到相应包序号的数据包的依据,占用存储资源极少,又可以高效地完成去重处理。
如图12所示,在一个实施例中,该数据发送方法还包括请求切换数据包发送工作方式的步骤,具体包括如下步骤:
步骤1202,根据接收到的数据包的头部信息确定当前数据包发送工作方式。
具体地,接收到的数据包的头部信息中包括工作方式标志位,通过该标志位的值可以确定数据发送端102的当前数据包发送工作方式。这里数据包发送工作方式是指单独发送原始数据包的独立发送方式和将原始数据包和重发包合并后发送的合并发送方式。
步骤1204,计算通信连接所对应的网络质量参数。
具体地,网络质量参数是指衡量通信连接的传输性能的量化参数,比如丢包率、传输错误率、数据包延迟时间变化、数据包传输平均延迟时间等。其中,丢包率是指数据在传输中被丢失的比率,在一个实施例中,可以连续接收到的指定数量的数据包中数据包总数为被除数、该多个数据包中包序号最大值减去最小值再加一为除数计算商,将该商作为丢包率。数据包延迟时间可以通过计算接收到数据包的时间戳与数据包头部信息中的发出数据包的时间戳的差值获得。数据包传输平均延迟时间则可以通过计算多个数据包延迟时间的平均值得到。
步骤1206,若当前数据包发送工作方式为原始数据包单独发送方式,且网络质量参数在用于表示网络质量差的第一预设参数范围内,则通过通信连接发送工作方式切换请求。
具体地,第一预设参数范围是预先定义的用于表示网络质量差的数值范围,第一预设参数范围可以是超过第一预设值,比如若网络质量参数为丢包率,则该第一预设值比如可以取0.01~0.02中的值。若网络质量参数为数据包传输平均延迟时间,则该第一预设值比如可以取0.005~0.01中的值。工作方式切换请求是用于请求数据发送端102进行工作方式切换的请求,在当前数据包发送工作方式为原始数据包单独发送方式的情况下,使得数据发送端102在接收到该工作方式切换请求后进行工作方式切换,切换为合并包发送方式。数据发送端102在切换为合并包发送方式后,将缓存队列以及与合并包发送方式相关的变量进行初始化,与合并包发送方式相关的变量比如上一次检测到具有时间戳的数据包的时间戳tslast_sign
步骤1208,若当前数据包发送工作方式为合并包发送方式,且网络质量参数在用于表示网络质量好的第二预设参数范围内,则通过通信连接发送工作方式切换请求。
具体地,第二预设参数范围是预先定义的用于表示网络质量好的数值范围,第二预设参数范围可以是低于第二预设值,比如若网络质量参数为丢包率,则该第二预设值比如可以取0.01~0.02中的值。若网络质量参数为数据包传输平均延迟时间,则该第二预设值比如可以取0.005~0.01中的值。工作方式切换请求是用于请求数据发送端102进行工作方式切换的请求,在当前数据包发送工作方式为合并包发送方式的情况下,使得数据发送端102在接收到该工作方式切换请求后进行工作方式切换,切换为原始数据包单独发送方式。在原始数据包单独发送方式下发生丢包,可以采用丢包重传方式重新获取相应的数据包。
本实施例中,考虑到合并包发送方式会增加单个数据包的数据量,并非适用于所有网络环境,本实施例中根据网络质量参数来动态调整数据发送端102的数据包发送工作方式,提高了兼容性。
在一个实施例中,网络质量参数为丢包率,步骤1204包括:计算对应于通信连接的丢包率。且步骤1206中网络质量参数在用于表示网络质量差的第一预设参数范围内,包括:计算出的丢包率超过第一预设值。且步骤1208中网络质量参数在用于表示网络质量好的第二预设参数范围内,包括:计算出的丢包率低于第二预设值。
在一个实施例中,网络质量参数为平均丢包率,则步骤1204包括:计算当前对应于通信连接的实时丢包率,根据上一次计算出的平均丢包率和当前的实时丢包率计算当前的平均丢包率。且步骤1206中网络质量参数在用于表示网络质量差的第一预设参数范围内,包括:当前的平均丢包率超过第一预设值。且步骤1208中网络质量参数在用于表示网络质量好的第二预设参数范围内,包括:当前的平均丢包率低于第二预设值。
具体地,实时丢包率是当前实时计算出的丢包率,可以根据接收到的前n个数据包来计算实时丢包率,比如前100个数据包。考虑到可能存在的乱序,可以延迟预设数量的数据包,再根据接收到的前n个数据包来计算实时丢包率。比如在接收到第100个数据包后,延迟5个数据包,计算从第1到第100个数据包的丢包率。
根据下述公式(3)来计算平均丢包率Pt
公式(3):Pt=(1-w)*Pt-1+w*p
其中,上述公式(3)Pt-1为上一次计算出的平均丢包率,t表示计算平均丢包率的次序,p为当前实时计算出的丢包率,w为调整参数,用来调整计算平均丢包率Pt时上一次计算出的平均丢包率Pt-1与当前实时计算出的丢包率p各自的权重。
本实施例中,根据平均丢包率来动态调整数据发送端102的数据包发送工作方式,考虑了历史的丢包情况,避免因为短暂的网络波动而导致频繁改变数据包发送工作方式。
如图13所示,在一个实施例中,该数据发送方法还包括对工作方式切换操作进行确认并处理的步骤,具体包括如下步骤:
步骤1302,保存工作方式切换记录。
具体地,保存的工作方式切换记录至少包括需要切换到的数据包发送工作方式,还可以保存切换时间、当时的网络质量参数等。可以仅用一处存储位置来保存工作方式切换记录,每次保存时覆盖写入。
步骤1304,在通过通信连接接收到预设个数的数据包后,获取当前通过通信连接接收到的数据包的头部信息中工作方式标志位的值。
具体地,当前通过通信连接接收到的数据包,是指在通过通信连接接收到预设个数的数据包后的那个时间通过通信连接接收到的数据包。每个数据包中的头部信息中包括工作方式标志位,用于表示发送该数据包所采用的数据包发送工作方式。
步骤1306,根据工作方式切换记录和工作方式标志位的值判断工作方式切换是否成功。若是,则无动作;若否,则执行步骤1308。
具体地,判断工作方式切换记录所记录的数据包发送工作方式,是否与工作方式标志位的值所表示的数据包发送工作方式一致,若一致则说明工作方式切换成功,否则说明工作方式切换失败。
步骤1308,再次通过通信连接发送工作方式切换请求。
具体地,工作方式切换失败后,说明之前发送的工作方式切换请求没有发生作用,可能是该工作方式切换请求在传输过程中丢失,此时继续通过相应的通信连接向数据发送端102发送工作方式切换请求,直至根据工作方式切换记录和工作方式标志位的值判定工作方式切换成功。
本实施例中,根据保存的工作方式切换记录以及接收到的数据包中工作方式标志位的值判断工作方式切换是否成功,在切换失败时继续发送工作方式切换请求,从而可以保证切换成功。
如图14所示,在一个实施例中,提供了一种数据发送装置1400,具有实现上述各个实施例的数据发送方法的功能。该数据发送装置1400包括原始数据包获取模块1401、缓存队列管理模块1402、合并模块1403和发送模块1404。
原始数据包获取模块1401,用于获取待发送的原始数据包。具体地,具体地,原始数据包是当前需要发送的数据包。原始数据包获取模块1401可用于生成原始数据包,或者获取从其它网络节点接收到的需要转发的数据包作为原始数据包。
缓存队列管理模块1402,用于从原始数据包所属通信连接所对应的缓存队列的队首取出重发包。
具体地,原始数据包所属通信连接,是指发送该原始数据包所使用的通信连接。若两个数据包的目的地址相同,则该两个数据包属于相同的通信连接。
一个缓存队列与一个通信连接是对应的,缓存队列是一个单进单出的队列,主要用于缓存重发包,已经通过通信连接向数据接收端104发送过的数据包缓存在该缓存队列中,作为冗余的重发包排队等待发送。该重发包用于在其相应的数据包在传输过程中被丢失时,用来替代该丢失的数据包。
缓存队列中缓存的数据包至少具有该重发包的包序号,该包序号是该重发包对应的已发送的数据包的头部信息中用来唯一标识出一个数据包的数据。一个数据包包括头部信息和数据内容,数据内容就是该数据包所要传达的信息,而头部信息则是传输数据包所必须的信息,包括源地址和目的地址。具有相同包序号的数据包和重发包,两者所包括的数据内容是相同的。
合并模块1403,用于将取出的重发包与原始数据包合并,获得合并包。具体地,合并模块1403可用于提取出重发包的头部信息和原始数据包的头部信息,生成合并包的头部信息,并采用预定义方式将重发包与原始数据包的数据内容合并,从而生成合并包。其中数据内容的合并是可还原的,比如可以用特定字符将两种数据内容区隔开。生成的合并包是一个数据包,该数据包的头部信息包括表示该数据包是合并包的合并包识别标志位。
发送模块1404,用于通过通信连接发送合并包。具体地,发送模块1404用于通过与数据接收端104的通信连接,将合并包发送给数据接收端104。
缓存队列管理模块1402还用于将原始数据包加入缓存队列的队尾。具体地,原始数据包被合并后发送,缓存队列管理模块1402用于将该原始数据包作为新的重发包加入缓存队列的队尾,这样以后在该原始数据包排到缓存队列队首时,就可以与其它数据包再合并后发送。
上述数据发送装置1400,通信连接对应设置有缓存队列,发送数据时,将待发送的原始数据包与缓存队列中缓存的重发包合并后,通过该通信连接发送出去。然后将该原始数据包作为新的重发包加入缓存队列的队尾,这样以后在该原始数据包排到缓存队列队首时,就可以与其它数据包再合并后发送。这样通过发送合并包,可以避免因发送重发包而导致增加额外的数据包发送数量,减轻数据传输负担,而且原始数据包的合并发送不需要等待,适用于高实时性的数据传输。而且,一个数据包与其重发包是异步发送的,可以尽量避免连续发送数据包和其重发包导致两者均丢失的情形。
如图15所示,在一个实施例中,数据发送装置1400还包括:收敛会话标识确定模块1405和会话标识标志位设定模块1406。
收敛会话标识确定模块1405,用于确定合并包的收敛会话标识;确定的收敛会话标识选取自包括预设数量的预设收敛会话标识的集合;预设数量小于通信连接上收敛前的会话数。
具体地,预设数量小于该通信连接上的实际的会话的数量,这里收敛是指将较多数量的会话合并到较少数量的会话的过程。预设数量就是收敛后的会话的数量,收敛后的会话用收敛会话标识来唯一标识出。
预设数量可以事先设定,也可以根据某一时刻该通信连接上的实际的会话的数量来动态设定,或者某一段时间内该通信连接上的实际的会话的平均数量来动态设定,比如取收敛前某一时刻或某一段时间内平均的会话总数量的10%.可以从包括预设数量的收敛会话标识的集合中随机或者按顺序选取收敛会话标识。
会话标识标志位设定模块1406,用于将确定的收敛会话标识作为合并包的头部信息中的会话标识标志位的值。
具体地,合并包的头部信息中的会话标识标志位用于在传输过程中识别出所属的会话。采用收敛会话标识作为合并包的会话标识,这样可以将会话合并,把较多的会话收敛到较少数量的会话,防止会话数量过多导致传输数据时占用过多网络资源,而且可以避免因超出中转路由节点或者数据接收端104的并发连接数而导致的传输延时。合并包的头部信息还可以包括其它传输、解析数据包时必要的信息,比如源地址、目的地址、采用的传输协议、合并包识别标志位、合并前的原始数据包和重发包的包序号等。
在一个实施例中,该数据发送装置1400应用于CDN,用户终端和CDN中的网络节点之间的UDP(全称User Datagram Protocol,用户数据报协议)会话数是比较少的,最少时可能只存在一个UDP会话。但CDN中网络节点间的UDP会话数是非常多的,将这些大量的会话收敛到少数预设数量的会话中,可以保证数据传输的稳定性。
如图16所示,在一个实施例中,缓存队列管理模块1402包括:数据包取出模块1402a和第一判断模块1402b。
数据包取出模块1402a,用于从原始数据包所属通信连接所对应的缓存队列的队首取出数据包。
具体地,缓存队列包括多个元素,每个元素代表一个数据包。参照图6,单进单出的缓存队列602中的每个元素包含5个数据项604,分别为数据包类型TYPE、收敛会话标识SID、在原始会话中的包序号PID、时间戳TS和指向数据内容的数据指针P_con。
其中,数据包类型TYPE包括不带时间戳的延时包类型、不带时间戳的重发包类型、带时间戳的延时包类型以及带时间戳的重发包类型,每种数据包类型可以分别用事先约定的四个数值来表示,比如可以用0、1、2和3来表示这四种数据包类型,数据包类型TYPE可用一个字节表示。数据包类型TYPE这一数据项,可以在需要根据不同的数据包类型执行不同操作时起作用。
收敛会话标识SID可以在将相应的重发包加入缓存队列时分配,该收敛会话标识可以取自包括预设数量的收敛会话标识的集合,具体可以从该集合中随机或者按顺序选取。收敛会话标识SID可以用2个字节表示。包序号PID可以用4个字节表示,时间戳TS可以用4个字节表示,数据指针P_con可以用4个字节表示。
第一判断模块1402b,用于判断提取出的数据包是延时包还是重发包。具体地,第一判断模块1402b可用于根据缓存队列中队首元素的数据项数据包类型TYPE来判断是延时包还是重发包,如果判定提取出的数据包是重发包,就可以执行步骤306,将取出的重发包与原始数据包合并,获得合并包。
合并模块1403还用于在第一判断模块判断到提取出的数据包是重发包时,将取出的重发包与原始数据包合并,获得合并包。
发送模块1404还用于在第一判断模块判断到提取出的数据包是延时包时,通过通信连接直接发送原始数据包。具体地,延时包填充在缓存队列中的重发包之间,用来控制重发包的发送时间间隔,并不参与实际的数据传输。通过插入或者删除缓存队列中的延时包,就可以调整缓存队列的长度,从而调整缓存队列中重发包被合并生成合并包并发出的时间间隔。这样如果提取出的数据包是延时包,则无需进行合并的操作,直接将原始数据包通过相应的通信连接发送给数据接收端104。
另外,缓存队列管理模块1402还可以包括数据包加入模块1402c,用于将原始数据包加入缓存队列的队尾。
本实施例中,在提取到延时包时,不需要合并而直接发送原始数据包,这样可以通过调整延时包来控制重发包被合并以及发送的时机,这样可以根据实际需要灵活地控制重发包的传输策略。
如图17所示,在一个实施例中,该数据发送装置1400还包括:检测模块1407、重发平均延时计算模块1408、重发延时误差计算模块1409和缓存队列调整模块1410。
检测模块1407,用于检测提取出的数据包是否具有时间戳。具体地,检测模块1407可用于根据缓存队列中队首的元素的数据包类型TYPE来确定提取出的数据包是否具有时间戳。缓存队列中每隔预设个数的数据包会添加时间戳,时间戳可以用一个字符序列表示,可唯一地标识某一刻的时间。时间戳可以是发送该重发包相应的已发送的数据包时生成的时间戳。
重发平均延时计算模块1408,用于计算重发平均延时。具体地,重发延时是指一个重发包被加入缓存队列时起,到最终发送出去的这一段延时。重发平均延时则是多个重发延时的平均值,可以通过计算缓存队列中任意多个重发包的重发延时的平均值而获得。重发平均延时计算模块1408可用于采用上述公式(1)来计算重发平均延时ts_delay。
重发延时误差计算模块1409,用于根据预设重发标准延时和重发平均延时计算重发延时误差。具体地,预设重发标准延时是预先设定的重发包的重发延时标准值,重发延时误差则是指当前计算出的重发平均延时偏离该预设重发标准延时的值。重发延时误差可以直接用预设重发标准延时减去重发平均延时来计算获得。
缓存队列调整模块1410,用于根据重发延时误差调整缓存队列的长度。具体地,若重发延时误差为预设重发标准延时与重发平均延时的差值,那么如果重发延时误差大于0,则通过向缓存队列中插入延时包来增加缓存队列的长度;如果重发延时误差小于0,则通过从缓存队列队首起取出数据包丢弃来减少缓存队列的长度;如果重发延时误差等于0,则可以不调整缓存队列的长度。
在一个实施例中,缓存队列调整模块1410用于根据重发延时误差、当前提取出的数据包的时间戳与上一次检测到具有时间戳的数据包的时间戳之间的时间差以及相邻时间戳间隔包数来计算重发延迟数据包数;若重发延迟数据包数大于0,则向缓存队列中插入重发延迟数据包数的延时包;若重发延迟数据包数小于0,则从缓存队列队首起取出重发延迟数据包数的数据包丢弃;若重发延迟数据包数等于0,则无动作。其中插入延时包可以均匀插入,也可以在队尾插入。
如图18所示,在一个实施例中,该数据发送装置1400还包括:第二判断模块1411,用于判断合并包的大小是否超过通信连接的最大传输单元。且发送模块1404还用于在第二判断模块判断到合并包的大小超过通信连接的最大传输单元时,通过通信连接直接发送原始数据包;还用于在第二判断模块判断到合并包的大小小于或等于通信连接的最大传输单元时,通过通信连接发送合并包。
具体地,最大传输单元是指Maximum Transmission Unit,缩写为MTU,是指通信连接所能通过的最大数据包大小,超过该最大传输单元的数据包将被丢弃。本实施例中通过判断合并包的大小是否超过通信连接的最大传输单元,防止合并包太大无法传输,保证数据能够正常传输。在判断为否时,可以将取出的重发包丢弃或者等待与下一次待发送的原始数据包合并后发送。
如图19所示,在一个实施例中,提供了一种数据接收装置1900,具有实现上述各个实施例的数据接收方法的功能。该数据接收装置1900包括:接收单元1901、拆分单元1902、第一判断单元1903、第一重发包处理单元1904和第二重发包处理单元1905。
接收单元1901,用于接收通过通信连接传来的数据包。具体地,数据发送端102在执行上述步骤308后,合并包通过通信连接传递到数据接收端104,接收单元1901用于接收该合并包。若数据发送端102未进行合并,进而发出原始数据包,则相应地接收单元1901用于接收数据发送端102发来的原始数据包。该通信连接是指数据接收端104与数据发送端102间的通信连接。
拆分单元1902,用于检测到接收到的数据包为合并包时,将合并包拆分为原始数据包和重发包。
具体地,拆分单元1902可用于根据接收到的数据包的头部信息中的合并包识别标志位的值,来判断接收到的数据包是否为合并包。若接收到的是合并包,则继续进行后续对合并包的处理流程;否则,将接收到的数据包按照原始数据包进行处理。
拆分单元1902可用于对合并包的头部信息进行协议分析,具体根据合并包的头部信息中的数据指针,可以获取到相应的数据内容;原始数据包和重发包各自的包序号也记录在合并包的头部信息中,可直接获得;通过头部信息中的源地址和目的地址,可以确定原始数据包和重发包的源地址和目的地址。将拆分出的原始数据包保留。
第一判断单元1903,用于根据重发包的包序号判断是否首次接收到包序号的数据包。具体地,在一个实施例中,第一判断单元1903可用于在每接收到一个数据包时,判断是否存在与其包序号匹配的已接收记录。如果存在已接收记录,则说明不是首次接收到,如果不存在已接收记录,则说明是首次接收到,此时再对应应该数据包的包序号存储已接收记录,以备下次接收到数据包时进行去重处理。所谓去重是指将数据发送端102最初发送的相应包序号的数据包以及后续发送的相应重发包选择其一保留的过程。
第一重发包处理单元1904,用于在第一判断单元判断到首次接收到重发包时,保留重发包。具体地,若判定首次接收到相应包序号的数据包,说明数据发送端102最初发出的相应包序号的数据包已经丢失或者延时很大,此时可以直接用该重发包来替代数据接收端104最初发出的相应包序号的数据包,避免产生过长的延时。
第二重发包处理单元1905,用于在第一判断单元判断到非首次接收到重发包时,丢弃重发包。具体地,若判定不是首次接收到相应包序号的数据包,说明数据发送端102之前发送的相应包序号的数据包已经被成功接收,该重发包不再起作用,则将该重发包丢弃。
上述数据接收装置1900,接收到合并包后,拆分出原始数据包和重发包。然后根据重发包的包序号进行去重处理,如果首次接收到该包序号的数据包,说明该包序号的数据包在传输过程中丢失,此时保留该重发包来替代丢失的数据包。如果不是首次接收到该包序号的数据包,说明该包序号的数据包之前已被成功接收,此时可直接丢弃该重发包。这样通过去重处理,保证丢失的数据包能够用重发包来替代,而已接收到的数据包的重发包则直接丢弃,保证了数据传输的准确性和完整性,可以保证高实时性的数据传输的质量。
如图20所示,在一个实施例中,第一判断单元1903包括:存储位置序号映射单元1903a、数值获取单元1903b和判断执行单元1903c。
存储位置序号映射单元1903a,用于求取重发包的包序号除以通信连接所对应的存储位置总数所得的余数,作为相应的存储位置序号。
具体地,每个通信连接会对应有相应的存储区域,该存储区域中包括固定数量的存储位置,每个存储位置用存储位置序号来唯一标识。存储位置总数是指通信连接所对应的存储区域中用于存储数值的存储位置的总数量。
数据包的包序号是递增产生的,比如若一个数据包的包序号为0,则下一个数据包的包序号则是1,再下一个则是2,以此类推。将包序号除以存储位置总数求得余数,获得存储位置序号,这样每固定数量的数据包的包序号会循环利用该固定数量的存储位置来进行去重处理。
将包序号除以存储位置总数求得余数,也就是将包序号按存储位置总数取模。若存储位置总数为2的整数次幂,则可以截取二进制的包序号的低位来作为存储位置序号,相当于将包序号除以存储位置总数求得余数。
数值获取单元1903b,用于获取存储位置序号所对应的存储位置处的数值。
具体地,根据得到的存储位置序号,获取对应于通信连接的存储区域中相应存储位置处的数值。合并包的收敛会话标识是与通信连接对应的,多个收敛会话标识可与一个通信连接对应,可获取与收敛会话标识对应的存储区域中,存储位置序号所对应的存储位置处的数值。若存储位置用数组表示,则相应地,数值获取单元1903b用于获取数组序号所对应的数组中所存储的数值。
判断执行单元1903c,用于判断包序号是否大于获取的数值。
具体地,通信连接所对应的各个存储位置处具有初始值,且该初始值小于包序号的最小值。这样判断执行单元1903c可用于在刚开始去重处理的工作时,就可以直接通过判定包序号大于初始值而判定首次接收到相应包序号的数据包。
第一重发包处理单元1904还用于将存储位置序号所对应的存储位置处的数值修改为包序号。
具体地,若判定包序号大于获取的数值,说明首次接收到相应包序号的数据包,此时将该存储位置序号所对应的存储位置处的数值修改为包序号。这样下次接收到同一包序号的数据包时,就因为包序号与该存储位置处的数值相等而判定不是首次接收到该包序号的数据包。
举例说明,参照图11,通信连接所对应的存储位置用数组m表示,数组m的长度为N,也就是上述的存储位置总数。数据接收端104在接收到一个包序号为M的数据包后,对该包序号M按数组m的长度N取模,求得数组序号id为Mod(M,N)。从数组m中读取该数组序号id所对应的数值为m(id),然后比较包序号M与数值m(id)的大小。若M>m(id),则将接收到的数据包保留,若M≤m(id),则将接收到的数据包丢弃。
本实施例中,通过固定数量的存储位置来作为判断是否首次接收到相应包序号的数据包的依据,占用存储资源极少,又可以高效地完成去重处理。
如图21所示,在一个实施例中,数据接收装置1900还包括:当前数据包发送工作方式确定单元1906、网络质量参数计算单元1907和工作方式切换请求单元1908。
当前数据包发送工作方式确定单元1906,用于根据接收到的数据包的头部信息确定当前数据包发送工作方式。具体地,接收到的数据包的头部信息中包括工作方式标志位,当前数据包发送工作方式确定单元1906用于通过该标志位的值可以确定数据发送端102的当前数据包发送工作方式。这里数据包发送工作方式是指单独发送原始数据包的独立发送方式和将原始数据包和重发包合并后发送的合并发送方式。
网络质量参数计算单元1907,用于计算通信连接所对应的网络质量参数。
具体地,网络质量参数是指衡量通信连接的传输性能的量化参数,比如丢包率、传输错误率、数据包延迟时间变化、数据包传输平均延迟时间等。其中,丢包率是指数据在传输中被丢失的比率,在一个实施例中,可以连续接收到的指定数量的数据包中数据包总数为被除数、该多个数据包中包序号最大值减去最小值再加一为除数计算商,将该商作为丢包率。数据包延迟时间可以通过计算接收到数据包的时间戳与数据包头部信息中的发出数据包的时间戳的差值获得。数据包传输平均延迟时间则可以通过计算多个数据包延迟时间的平均值得到。
工作方式切换请求单元1908,用于若当前数据包发送工作方式为原始数据包单独发送方式,且网络质量参数在用于表示网络质量差的第一预设参数范围内,则通过通信连接发送工作方式切换请求。
具体地,第一预设参数范围是预先定义的用于表示网络质量差的数值范围,第一预设参数范围可以是超过第一预设值,比如若网络质量参数为丢包率,则该第一预设值比如可以取0.01~0.02中的值。若网络质量参数为数据包传输平均延迟时间,则该第一预设值比如可以取0.005~0.01中的值。工作方式切换请求是用于请求数据发送端102进行工作方式切换的请求,在当前数据包发送工作方式为原始数据包单独发送方式的情况下,使得数据发送端102在接收到该工作方式切换请求后进行工作方式切换,切换为合并包发送方式。数据发送端102在切换为合并包发送方式后,将缓存队列以及与合并包发送方式相关的变量进行初始化,与合并包发送方式相关的变量比如上一次检测到具有时间戳的数据包的时间戳tslast_sign
在另一个实施例中,工作方式切换请求单元1908用于若当前数据包发送工作方式为合并包发送方式,且网络质量参数在用于表示网络质量好的第二预设参数范围内,则通过通信连接发送工作方式切换请求。
具体地,第二预设参数范围是预先定义的用于表示网络质量好的数值范围,第二预设参数范围可以是低于第二预设值,比如若网络质量参数为丢包率,则该第二预设值比如可以取0.01~0.02中的值。若网络质量参数为数据包传输平均延迟时间,则该第二预设值比如可以取0.005~0.01中的值。工作方式切换请求是用于请求数据发送端102进行工作方式切换的请求,在当前数据包发送工作方式为合并包发送方式的情况下,使得数据发送端102在接收到该工作方式切换请求后进行工作方式切换,切换为原始数据包单独发送方式。在原始数据包单独发送方式下发生丢包,可以采用丢包重传方式重新获取相应的数据包。
本实施例中,考虑到合并包发送方式会增加单个数据包的数据量,并非适用于所有网络环境,本实施例中根据网络质量参数来动态调整数据发送端102的数据包发送工作方式,提高了兼容性和适应性。
在一个实施例中,网络质量参数计算单元1907还用于计算对应于通信连接的丢包率。工作方式切换请求单元1908还用于若当前数据包发送工作方式为原始数据包单独发送方式,且计算出的丢包率超过第一预设值,则通过通信连接发送工作方式切换请求。工作方式切换请求单元1908还用于若当前数据包发送工作方式为合并包发送方式,且计算出的丢包率低于第二预设值,则通过通信连接发送工作方式切换请求。
在一个实施例中,网络质量参数计算单元1907还用于计算当前对应于通信连接的实时丢包率,根据上一次计算出的平均丢包率和当前的实时丢包率计算当前的平均丢包率。工作方式切换请求单元1908还用于若当前数据包发送工作方式为原始数据包单独发送方式,且当前的平均丢包率超过第一预设值,则通过通信连接发送工作方式切换请求。工作方式切换请求单元1908还用于若当前数据包发送工作方式为合并包发送方式,且当前的平均丢包率低于第二预设值,则通过通信连接发送工作方式切换请求。其中个,网络质量参数计算单元1907具体可用于采用上述公式(3)来计算平均丢包率Pt
如图22所示,在一个实施例中,数据接收装置1900还包括:工作方式切换记录保存单元1909、工作方式标志位值获取单元1910和第二判断单元1911。
工作方式切换记录保存单元1909,用于保存工作方式切换记录。具体地,保存的工作方式切换记录至少包括需要切换到的数据包发送工作方式,还可以保存切换时间、当时的网络质量参数等。可以仅用一处存储位置来保存工作方式切换记录,每次保存时覆盖写入。
工作方式标志位值获取单元1910,用于在通过通信连接接收到预设个数的数据包后,获取当前通过通信连接接收到的数据包的头部信息中工作方式标志位的值;具体地,当前通过通信连接接收到的数据包,是指在通过通信连接接收到预设个数的数据包后的那个时间通过通信连接接收到的数据包。每个数据包中的头部信息中包括工作方式标志位,用于表示发送该数据包所采用的数据包发送工作方式。
第二判断单元1911,用于根据工作方式切换记录和工作方式标志位的值判断工作方式切换是否成功。具体地,判断工作方式切换记录所记录的数据包发送工作方式,是否与工作方式标志位的值所表示的数据包发送工作方式一致,若一致则说明工作方式切换成功,否则说明工作方式切换失败。
工作方式切换请求单元1908还用于若第二判断单元判断到切换工作方式失败,则再次通过通信连接发送工作方式切换请求。具体地,工作方式切换失败后,说明之前发送的工作方式切换请求没有发生作用,可能是该工作方式切换请求在传输过程中丢失,此时继续通过相应的通信连接向数据发送端102发送工作方式切换请求,直至根据工作方式切换记录和工作方式标志位的值判定工作方式切换成功。
本实施例中,根据保存的工作方式切换记录以及接收到的数据包中工作方式标志位的值判断工作方式切换是否成功,在切换失败时继续发送工作方式切换请求,从而可以保证切换成功。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (20)

1.一种数据发送方法,所述方法包括:
获取待发送的原始数据包;
从所述原始数据包所属通信连接所对应的缓存队列的队首取出重发包;
将取出的重发包与所述原始数据包合并,获得合并包;
通过所述通信连接发送所述合并包;
将所述原始数据包加入所述缓存队列的队尾。
2.根据权利要求1所述的方法,其特征在于,所述通过所述通信连接发送所述合并包之前,还包括:
确定所述合并包的收敛会话标识;所述确定的收敛会话标识选取自包括预设数量的预设收敛会话标识的集合;所述预设数量小于所述通信连接上收敛前的会话数;
将确定的收敛会话标识作为所述合并包的头部信息中的会话标识标志位的值。
3.根据权利要求1所述的方法,其特征在于,所述从所述原始数据包所属通信连接所对应的缓存队列的队首取出重发包,包括:
从所述原始数据包所属通信连接所对应的缓存队列的队首取出数据包;
判断提取出的数据包是延时包还是重发包;若是重发包,则
执行所述将取出的重发包与所述原始数据包合并,获得合并包的步骤;
若是延时包,则通过所述通信连接直接发送所述原始数据包。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
检测提取出的数据包是否具有时间戳,若是,则
计算重发平均延时;
根据预设重发标准延时和所述重发平均延时计算重发延时误差;
根据所述重发延时误差调整所述缓存队列的长度。
5.根据权利要求1所述的方法,其特征在于,所述通过所述通信连接发送所述合并包之前,还包括:
判断所述合并包的大小是否超过所述通信连接的最大传输单元;
若是,则通过所述通信连接直接发送所述原始数据包;
若否,则通过所述通信连接发送所述合并包。
6.一种数据接收方法,所述方法包括:
接收通过通信连接传来的数据包;
检测到所述接收到的数据包为合并包时,将所述合并包拆分为原始数据包和重发包;
根据所述重发包的包序号判断是否首次接收到所述包序号的数据包;
若是,则保留所述重发包;
若否,则丢弃所述重发包。
7.根据权利要求6所述的方法,其特征在于,所述根据所述重发包的包序号判断是否首次接收到所述包序号的数据包,包括:
求取所述重发包的包序号除以所述通信连接所对应的存储位置总数所得的余数,作为相应的存储位置序号;
获取所述存储位置序号所对应的存储位置处的数值;
判断所述包序号是否大于所述获取的数值;
所述若是,则保留所述重发包之后,还包括:
将所述存储位置序号所对应的存储位置处的数值修改为所述包序号。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
根据接收到的数据包的头部信息确定当前数据包发送工作方式;
计算所述通信连接所对应的网络质量参数;
若当前数据包发送工作方式为原始数据包单独发送方式,且所述网络质量参数在用于表示网络质量差的第一预设参数范围内,则通过所述通信连接发送工作方式切换请求;或者,
若当前数据包发送工作方式为合并包发送方式,且所述网络质量参数在用于表示网络质量好的第二预设参数范围内,则通过所述通信连接发送工作方式切换请求。
9.根据权利要求8所述的方法,其特征在于,所述计算所述通信连接所对应的网络质量参数,包括:
计算对应于所述通信连接的丢包率;
所述网络质量参数在用于表示网络质量差的第一预设参数范围内,包括:
所述计算出的丢包率超过第一预设值;
所述网络质量参数在用于表示网络质量好的第二预设参数范围内,包括:
所述计算出的丢包率低于第二预设值。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
保存工作方式切换记录;
在通过所述通信连接接收到预设个数的数据包后,获取当前通过所述通信连接接收到的数据包的头部信息中工作方式标志位的值;
根据所述工作方式切换记录和所述工作方式标志位的值判断工作方式切换是否成功;
若否,则再次通过所述通信连接发送工作方式切换请求。
11.一种数据发送装置,其特征在于,所述装置包括:
原始数据包获取模块,用于获取待发送的原始数据包;
缓存队列管理模块,用于从所述原始数据包所属通信连接所对应的缓存队列的队首取出重发包;
合并模块,用于将取出的重发包与所述原始数据包合并,获得合并包;
发送模块,用于通过所述通信连接发送所述合并包;
所述缓存队列管理模块还用于将所述原始数据包加入所述缓存队列的队尾。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
收敛会话标识确定模块,用于确定所述合并包的收敛会话标识;所述确定的收敛会话标识选取自包括预设数量的预设收敛会话标识的集合;所述预设数量小于所述通信连接上收敛前的会话数;
会话标识标志位设定模块,用于将确定的收敛会话标识作为所述合并包的头部信息中的会话标识标志位的值。
13.根据权利要求11所述的装置,其特征在于,所述缓存队列管理模块包括:
数据包取出模块,用于从所述原始数据包所属通信连接所对应的缓存队列的队首取出数据包;
第一判断模块,用于判断提取出的数据包是延时包还是重发包;
所述合并模块还用于在所述第一判断模块判断到提取出的数据包是重发包时,将取出的重发包与所述原始数据包合并,获得合并包;
所述发送模块还用于在所述第一判断模块判断到提取出的数据包是延时包时,通过所述通信连接直接发送所述原始数据包。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
检测模块,用于检测提取出的数据包是否具有时间戳;
重发平均延时计算模块,用于计算重发平均延时;
重发延时误差计算模块,用于根据预设重发标准延时和所述重发平均延时计算重发延时误差;
缓存队列调整模块,用于根据所述重发延时误差调整所述缓存队列的长度。
15.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于判断所述合并包的大小是否超过所述通信连接的最大传输单元;
所述发送模块还用于在所述第二判断模块判断到所述合并包的大小超过所述通信连接的最大传输单元时,通过所述通信连接直接发送所述原始数据包;还用于在所述第二判断模块判断到所述合并包的大小小于或等于所述通信连接的最大传输单元时,通过所述通信连接发送所述合并包。
16.一种数据接收装置,其特征在于,所述装置包括:
接收单元,用于接收通过通信连接传来的数据包;
拆分单元,用于检测到所述接收到的数据包为合并包时,将所述合并包拆分为原始数据包和重发包;
第一判断单元,用于根据所述重发包的包序号判断是否首次接收到所述包序号的数据包;
第一重发包处理单元,用于在所述第一判断单元判断到首次接收到所述重发包时,保留所述重发包;
第二重发包处理单元,用于在所述第一判断单元判断到非首次接收到所述重发包时,丢弃所述重发包。
17.根据权利要求16所述的装置,其特征在于,所述第一判断单元包括:
存储位置序号映射单元,用于求取所述重发包的包序号除以所述通信连接所对应的存储位置总数所得的余数,作为相应的存储位置序号;
数值获取单元,用于获取所述存储位置序号所对应的存储位置处的数值;
判断执行单元,用于判断所述包序号是否大于所述获取的数值;
所述第一重发包处理单元还用于将所述存储位置序号所对应的存储位置处的数值修改为所述包序号。
18.根据权利要求16所述的装置,其特征在于,所述装置还包括:
当前数据包发送工作方式确定单元,用于根据接收到的数据包的头部信息确定当前数据包发送工作方式;
网络质量参数计算单元,用于计算所述通信连接所对应的网络质量参数;
工作方式切换请求单元,用于若当前数据包发送工作方式为原始数据包单独发送方式,且所述网络质量参数在用于表示网络质量差的第一预设参数范围内,则通过所述通信连接发送工作方式切换请求;或者,
所述工作方式切换请求单元用于若当前数据包发送工作方式为合并包发送方式,且所述网络质量参数在用于表示网络质量好的第二预设参数范围内,则通过所述通信连接发送工作方式切换请求。
19.根据权利要求18所述的装置,其特征在于,所述网络质量参数计算单元还用于计算对应于所述通信连接的丢包率;
所述工作方式切换请求单元还用于若当前数据包发送工作方式为原始数据包单独发送方式,且所述计算出的丢包率超过第一预设值,则通过所述通信连接发送工作方式切换请求;或者,
所述工作方式切换请求单元还用于若当前数据包发送工作方式为合并包发送方式,且所述计算出的丢包率低于第二预设值,则通过所述通信连接发送工作方式切换请求。
20.根据权利要求18所述的装置,其特征在于,所述装置还包括:
工作方式切换记录保存单元,用于保存工作方式切换记录;
工作方式标志位值获取单元,用于在通过所述通信连接接收到预设个数的数据包后,获取当前通过所述通信连接接收到的数据包的头部信息中工作方式标志位的值;
第二判断单元,用于根据所述工作方式切换记录和所述工作方式标志位的值判断工作方式切换是否成功;
所述工作方式切换请求单元还用于若所述第二判断单元判断到切换工作方式失败,则再次通过所述通信连接发送工作方式切换请求。
CN201510056678.6A 2015-02-03 2015-02-03 数据发送方法和装置、数据接收方法和装置 Active CN104967502B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510056678.6A CN104967502B (zh) 2015-02-03 2015-02-03 数据发送方法和装置、数据接收方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510056678.6A CN104967502B (zh) 2015-02-03 2015-02-03 数据发送方法和装置、数据接收方法和装置

Publications (2)

Publication Number Publication Date
CN104967502A true CN104967502A (zh) 2015-10-07
CN104967502B CN104967502B (zh) 2017-06-27

Family

ID=54221454

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510056678.6A Active CN104967502B (zh) 2015-02-03 2015-02-03 数据发送方法和装置、数据接收方法和装置

Country Status (1)

Country Link
CN (1) CN104967502B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105743805A (zh) * 2016-01-28 2016-07-06 昭文科技(北京)股份有限公司 一种数据传输方法及装置
CN106230561A (zh) * 2016-07-22 2016-12-14 努比亚技术有限公司 数据收集方法、装置及系统
CN106850001A (zh) * 2017-01-06 2017-06-13 南京明伟达电子科技有限公司 一种用于蓝牙广播的动态数据传输方法及系统
CN107483306A (zh) * 2017-07-28 2017-12-15 深圳怡化电脑股份有限公司 一种通信方法、通信系统及存储介质
CN107621991A (zh) * 2017-08-17 2018-01-23 国网北京市电力公司 数据处理方法和装置
CN108718286A (zh) * 2018-05-24 2018-10-30 北京无线电测量研究所 数据通信方法、系统及存储介质
CN110086564A (zh) * 2018-01-26 2019-08-02 翔升(上海)电子技术有限公司 基于数据传输的差错控制方法、装置和系统
CN110167084A (zh) * 2018-08-15 2019-08-23 腾讯科技(深圳)有限公司 多通道数据传输方法及装置
CN110244604A (zh) * 2019-05-29 2019-09-17 北京大豪科技股份有限公司 数据传输方法、装置、电子设备及存储介质
CN111092907A (zh) * 2019-12-30 2020-05-01 人和未来生物科技(长沙)有限公司 基于udp协议的数据流快速传输方法、系统及介质
CN111262718A (zh) * 2018-12-03 2020-06-09 厦门雅迅网络股份有限公司 避免因数据丢失而影响统计准确性的数据传输方法和系统
CN111435555A (zh) * 2019-01-14 2020-07-21 杰克缝纫机股份有限公司 数据传输与验证方法及其装置、设备和存储介质
CN113392412A (zh) * 2021-05-11 2021-09-14 杭州趣链科技有限公司 数据接收方法、数据发送方法及电子设备
CN113608892A (zh) * 2021-07-23 2021-11-05 中国电子科技集团公司第三十研究所 一种异步网络环境下的高并发无锁代理转发实现方法
CN114157730A (zh) * 2021-10-26 2022-03-08 武汉光迅信息技术有限公司 一种报文去重的方法和装置
WO2022083371A1 (zh) * 2020-10-19 2022-04-28 华为技术有限公司 一种数据传输方法和装置
CN114884911A (zh) * 2022-03-30 2022-08-09 阿里云计算有限公司 基于nfv的网络数据传输方法、系统和存储介质
CN115834555A (zh) * 2023-02-16 2023-03-21 广州市保伦电子有限公司 一种基于模糊控制的音频流量控制和传输方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101335740A (zh) * 2007-06-26 2008-12-31 华为技术有限公司 发送、接收数据的方法和系统
CN102905319A (zh) * 2012-10-23 2013-01-30 李文龙 一种数据分流的方法及系统
US20130073923A1 (en) * 2010-03-11 2013-03-21 Microsoft Corporation Fast and reliable wireless communication
CN103441826A (zh) * 2013-07-12 2013-12-11 中国人民解放军国防科学技术大学 一种减少无线通信丢包率的方法和设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101335740A (zh) * 2007-06-26 2008-12-31 华为技术有限公司 发送、接收数据的方法和系统
US20130073923A1 (en) * 2010-03-11 2013-03-21 Microsoft Corporation Fast and reliable wireless communication
CN102905319A (zh) * 2012-10-23 2013-01-30 李文龙 一种数据分流的方法及系统
CN103441826A (zh) * 2013-07-12 2013-12-11 中国人民解放军国防科学技术大学 一种减少无线通信丢包率的方法和设备

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105743805A (zh) * 2016-01-28 2016-07-06 昭文科技(北京)股份有限公司 一种数据传输方法及装置
CN106230561A (zh) * 2016-07-22 2016-12-14 努比亚技术有限公司 数据收集方法、装置及系统
CN106850001A (zh) * 2017-01-06 2017-06-13 南京明伟达电子科技有限公司 一种用于蓝牙广播的动态数据传输方法及系统
CN107483306A (zh) * 2017-07-28 2017-12-15 深圳怡化电脑股份有限公司 一种通信方法、通信系统及存储介质
CN107621991A (zh) * 2017-08-17 2018-01-23 国网北京市电力公司 数据处理方法和装置
CN107621991B (zh) * 2017-08-17 2020-11-06 国网北京市电力公司 数据处理方法和装置
CN110086564A (zh) * 2018-01-26 2019-08-02 翔升(上海)电子技术有限公司 基于数据传输的差错控制方法、装置和系统
CN110086564B (zh) * 2018-01-26 2021-12-21 翔升(上海)电子技术有限公司 基于数据传输的差错控制方法、装置和系统
CN108718286A (zh) * 2018-05-24 2018-10-30 北京无线电测量研究所 数据通信方法、系统及存储介质
CN108718286B (zh) * 2018-05-24 2022-05-03 北京无线电测量研究所 数据通信方法、系统及存储介质
CN110167084A (zh) * 2018-08-15 2019-08-23 腾讯科技(深圳)有限公司 多通道数据传输方法及装置
CN110167084B (zh) * 2018-08-15 2021-07-27 腾讯科技(深圳)有限公司 多通道数据传输方法及装置
US11350318B2 (en) 2018-08-15 2022-05-31 Tencent Technology (Shenzhen) Company Limited Multichannel data transmission method and apparatus
CN111262718A (zh) * 2018-12-03 2020-06-09 厦门雅迅网络股份有限公司 避免因数据丢失而影响统计准确性的数据传输方法和系统
CN111435555A (zh) * 2019-01-14 2020-07-21 杰克缝纫机股份有限公司 数据传输与验证方法及其装置、设备和存储介质
CN110244604A (zh) * 2019-05-29 2019-09-17 北京大豪科技股份有限公司 数据传输方法、装置、电子设备及存储介质
CN111092907A (zh) * 2019-12-30 2020-05-01 人和未来生物科技(长沙)有限公司 基于udp协议的数据流快速传输方法、系统及介质
CN111092907B (zh) * 2019-12-30 2021-09-03 人和未来生物科技(长沙)有限公司 基于udp协议的数据流快速传输方法、系统及介质
WO2022083371A1 (zh) * 2020-10-19 2022-04-28 华为技术有限公司 一种数据传输方法和装置
CN113392412A (zh) * 2021-05-11 2021-09-14 杭州趣链科技有限公司 数据接收方法、数据发送方法及电子设备
CN113608892A (zh) * 2021-07-23 2021-11-05 中国电子科技集团公司第三十研究所 一种异步网络环境下的高并发无锁代理转发实现方法
CN114157730A (zh) * 2021-10-26 2022-03-08 武汉光迅信息技术有限公司 一种报文去重的方法和装置
CN114884911A (zh) * 2022-03-30 2022-08-09 阿里云计算有限公司 基于nfv的网络数据传输方法、系统和存储介质
CN115834555A (zh) * 2023-02-16 2023-03-21 广州市保伦电子有限公司 一种基于模糊控制的音频流量控制和传输方法
CN115834555B (zh) * 2023-02-16 2023-08-18 广东保伦电子股份有限公司 一种基于模糊控制的音频流量控制和传输方法

Also Published As

Publication number Publication date
CN104967502B (zh) 2017-06-27

Similar Documents

Publication Publication Date Title
CN104967502A (zh) 数据发送方法和装置、数据接收方法和装置
CN109756536B (zh) 一种数据传输的方法、装置及系统
CN104836748B (zh) 拥塞控制比特率算法
CN1859579B (zh) 传输多媒体数据流的设备和方法
CN108881008A (zh) 一种数据传输的方法、装置和系统
CN106411560A (zh) 数据传输方法和装置
CN110086578A (zh) 数据传输方法、装置和系统
EP2437421A1 (en) Method, device and communication system for retransmitting based on forward error correction
CN105450785B (zh) 一种文件传输方法和装置
WO2018121742A1 (zh) 一种流数据的传输方法和装置
CN103825841B (zh) 一种以太网报文排序方法及装置
CN106549916A (zh) 组播传输方法、装置及系统
CN107231269B (zh) 一种集群精确限速方法和装置
EP1473636A1 (en) Information processing device and method, and computer program
CN108668144B (zh) 一种数据流控方法、装置及设备
CN108429682A (zh) 一种网络传输链路的优化方法及系统
CN112653634A (zh) 一种流量控制方法、装置、设备及可读存储介质
KR20060091055A (ko) 손실된 패킷 재건을 위한 방법 및 상기 방법을 수행하기위한 디바이스
CN109617891A (zh) 码流传输方法及装置
CN106911740A (zh) 一种缓存管理的方法和装置
CN113938431B (zh) 突发数据包传输方法、装置和电子设备
CN105763375B (zh) 一种数据包发送方法、接收方法及微波站
US11812114B2 (en) Method and server for audio and/or video content delivery
CN106911485A (zh) 用于可靠组播传输数据的方法及设备
CN112436998B (zh) 一种数据传输方法及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant