一种数据包发送、接收方法及设备与流程

文档序号:13763298阅读:223来源:国知局
一种数据包发送、接收方法及设备与流程

本发明涉及通信技术领域,特别涉及一种数据包发送、接收方法及设备。



背景技术:

两个设备要实现通信,则这两个设备之间可能会建立多条用于传输数据的数据通道,为每条数据通道分配的带宽可能不同,且在数据传输过程中,每条数据通道的可用带宽也可能不同。

在发送设备向接收设备发送数据时,如果发送设备从中任意选择一条数据通道来进行发送,很可能发送设备所选择的数据通道的可用带宽较小,那么通过该数据通道来发送数据,可能会导致数据传输速率较低,甚至可能会造成拥塞。



技术实现要素:

本发明实施例提供一种数据包发送、接收方法及设备,用于解决设备选择可用带宽较小的数据通道发送数据导致数据传输速率较低的技术问题。

第一方面,提供一种数据包发送方法,该方法包括:

在需发送第一数据包时,确定第一设备与第二设备之间的至少一条数据通道中的每条数据通道的可用带宽;

通过所述至少一条数据通道中的第一数据通道向所述第二设备发送所述第一数据包;所述第一数据通道为所述至少一条数据通道中可用带宽最大的数据通道。

可选的,在通过所述至少一条数据通道中的第一数据通道向所述第二设备发送所述第一数据包之前,还包括:

在所述第一数据包的包头中添加序列号,所述序列号为所述第一数据包的发送时刻。

可选的,确定第一设备与第二设备之间的至少一条数据通道中的每条数据通道的可用带宽,包括:

获取所述至少一条数据通道中的每条数据通道的当前的信号强度;

根据所述每条数据通道的当前的信号强度计算得到所述每条数据通道的可用带宽。

可选的,在通过所述至少一条数据通道中的第一数据通道向所述第二设备发送所述第一数据包之前,还包括:

确定所述第一数据通道处于已连接状态。

第二方面,提供一种数据包接收方法,该方法包括:

接收第一设备发送的第一数据包;

解析所述第一数据包,得到所述第一数据包携带的序列号;

根据所述序列号的大小将所述第一数据包放入接收队列;其中,在所述接收队列中,各数据包按照各自的序列号顺序排列。

可选的,所述方法还包括:

根据所述接收队列中已接收的数据包的序列号计算所述第一设备发送所述已接收的数据包的发包率;所述序列号为所述第一数据包的发送时刻。

可选的,若所述发包率小于第一阈值,则增大所述接收队列每次输出的数据量;

可选的,若所述发包率大于第二阈值,则减小所述接收队列每次输出的数据量。

第三方面,提供一种数据包发送设备,包括:

存储器,用于存储指令;

处理器,用于调用所述存储器存储的指令,在需发送第一数据包时,确定数据包发送设备与数据包接收设备之间的至少一条数据通道中的每条数据通道的可用带宽;

发送器,用于通过所述至少一条数据通道中的第一数据通道向所述数据包接收设备发送所述第一数据包;所述第一数据通道为所述至少一条数据通道中可用带宽最大的数据通道。

可选的,所述处理器还用于:

在所述发送器通过所述至少一条数据通道中的第一数据通道向所述数据包接收设备发送所述第一数据包之前,在所述第一数据包的包头中添加序列号,所述序列号为所述第一数据包的发送时刻。

可选的,所述处理器用于:

获取所述至少一条数据通道中的每条数据通道的当前的信号强度;

根据所述每条数据通道的当前的信号强度计算得到所述每条数据通道的可用带宽。

可选的,所述处理器还用于:

在所述发送器通过所述至少一条数据通道中的第一数据通道向所述数据包接收设备发送所述第一数据包之前,确定所述第一数据通道处于已连接状态。

第四方面,提供一种数据包接收设备,包括:

存储器,用于存储指令;

接收器,用于接收第一设备发送的第一数据包;

处理器,用于调用所述存储器存储的指令,解析所述第一数据包,得到所述第一数据包携带的序列号,根据所述序列号的顺序将所述第一数据包放入接收队列;其中,在所述接收队列中,各数据包按照各自的序列号顺序排列。

可选的,所述处理器还用于:

根据所述接收队列中已接收的数据包的序列号计算所述数据包发送设备发送所述已接收的数据包的发包率;所述序列号为所述第一数据包的发送时刻。

可选的,所述处理器还用于:

若所述发包率小于第一阈值,则增大所述接收队列每次输出的数据量;或

若所述发包率大于第二阈值,则减小所述接收队列每次输出的数据量。

第五方面,提供一种数据包发送设备,包括:

确定单元,用于在需发送第一数据包时,确定数据包发送设备与数据包接收设备之间的至少一条数据通道中的每条数据通道的可用带宽;

发送单元,用于通过所述至少一条数据通道中的第一数据通道向所述数据包接收设备发送所述第一数据包;所述第一数据通道为所述至少一条数据通道中可用带宽最大的数据通道。

第六方面,提供一种数据包接收设备,包括:

接收单元,用于接收数据包发送设备发送的第一数据包;

解析单元,用于解析所述第一数据包,得到所述第一数据包携带的序列号;

操作单元,用于根据所述序列号的顺序将所述第一数据包放入接收队列;其中,在所述接收队列中,各数据包按照各自的序列号顺序排列。

本发明实施例提供了一种选择数据通道的方式,通过本发明实施例所提供的方法,第一设备在发送数据包时可以选择可用带宽最大的数据通道进行发送,从而有利于提高数据传输速率,也可以尽量避免拥塞。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例提供的一种应用场景示意图;

图2为本发明实施例提供的数据包发送方法的流程图;

图3为本发明实施例提供的数据包接收方法的流程图;

图4为本发明实施例提供的数据包发送设备的一种结构示意图;

图5为本发明实施例提供的数据包接收设备的一种结构示意图;

图6为本发明实施例提供的数据包发送设备的一种结构示意图;

图7为本发明实施例提供的数据包接收设备的一种结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。

数据通道,是两个设备之间用于传输数据的信道。

第一设备可以是物理机,例如服务器,或者个人计算机(PC),或者也可以是运行在物理机中的虚拟机(Virtual Machine,VM)。第二设备可以是物理机,例如服务器,或者PC,或者也可以是运行在物理机中的VM。第一设备的类型和第二设备的类型可以相同也可以不同,如果第一设备和第二设备都是VM,那么第一设备和第二设备可以是运行在不同的物理机中的VM,此时第一设备和第二设备之间的数据通道可以通过有线方式实现也可以通过无线方式实现,或者如果第一设备和第二设备都是VM,那么第一设备和第二设备也可以是运行在同一个物理机中的VM,此时第一设备和第二设备之间的数据通道可以通过有线方式实现。

请参见图1,介绍本发明实施例的一种应用场景。图1包括第一设备101和第二设备102,第一设备101和第二设备102之间可以建立多条用于传输数据的数据通道,本发明实施例中的“多条”可以理解为“至少两条”。图1以第一设备101和第二设备102均为运行在同一个物理机中的VM,且第一设备101和第二设备102之间建立了三条数据通道为例。由于VM运行在物理机中,应该是不可见的,因此在图1中通过虚线框进行示意。在现有技术中,第一设备101在向第二设备102发送数据包时,可能从三条数据通道中任选一条进行发送,那么第一设备101所选择的数据通道很可能性能不是很好,例如可用带宽较低,第一设备101通过该数据通道发送数据包,很可能导致数据传输速率较低。

鉴于此,本发明实施例在该应用场景下提供一种新的选择数据通道的方法。

下面结合说明书附图介绍本发明实施例提供的技术方案。

请参见图2,提供一种数据包发送方法,该方法可以应用于第一设备101,该方法的流程描述如下。

步骤201:在需发送第一数据包时,确定第一设备101与第二设备102之间的至少一条数据通道中的每条数据通道的可用带宽;

步骤202:通过至少一条数据通道中的第一数据通道向第二设备102发送第一数据包;第一数据通道为至少一条数据通道中可用带宽最大的数据通道。

第一设备101是第一数据包的发送方,第二设备102是第一数据包的接收方,因此下面再提供第二设备102接收数据包的方法。

请参见图3,提供一种数据包接收方法,该方法可以应用于第二设备102,该方法的流程描述如下:

步骤301:接收第一设备101发送的第一数据包;

步骤302:解析第一数据包,得到第一数据包携带的序列号;

步骤303:根据序列号的大小将第一数据包放入接收队列;其中,在接收队列中,各数据包按照各自的序列号顺序排列。

第一设备101和第二设备102之间要实现数据传输,则第一设备101和第二设备102可以事先建立数据通道,第一设备101和第二设备102之间可以建立一条数据通道,或者为了提高数据传输效率,第一设备101和第二设备102之间也可以建立多条数据通道。若第一设备101和第二设备102之间建立了多条数据通道,第一设备101在向第二设备102发送数据包时,可以从中选择一条数据通道来进行发送。因为每条数据通道分配的带宽可能不同,且每条数据通道的连接状态及负载情况等都有可能不同,若从中随机选择数据通道来进行发送,很可能所选择的数据通道的可用带宽较小,通过该数据通道来发送数据包,可能会降低数据传输效率,甚至可能会造成拥塞。鉴于此,本发明实施例提供了新的数据包发送方式,下面以第一设备101需发送第一数据包为例进行介绍,第一数据包例如为第一设备101发送给第二设备102的任意数据包。

本发明实施例中,第一设备101在需要发送第一数据包时,可以确定第一设备101与第二设备102之间的至少一条数据通道中的每条数据通道的可用带宽,从而可以从中选择可用带宽最大的数据通道进行发送。其中,一条数据通道的可用带宽为该数据通道被分配的总带宽中未被占用的带宽,数据通道的可用带宽可以用于传输新的数据。下面介绍几种确定数据通道的可用带宽的方式。

方式一:以第一设备101确定与第二设备102之间的任意一条数据通道的可用带宽为例,第一设备101可以获得该数据通道当前的信号强度,从而可以根据该数据通道当前的信号强度来计算该数据通道的可用带宽。对于第一设备101与第二设备102之间的每条数据通道,都可以通过该方式来计算可用带宽。

在一种实施方式中,第一设备101根据该数据通道当前的信号强度来计算该数据通道的可用带宽,可以通过如下公式实现:

y=xa+b (1)

公式(1)中,y用于表示第一设备101与第二设备102之间的任意一条数据通道的可用带宽,x表示该数据通道的信号强度,a为常量,b用于表示数据通道的可用带宽由于信号衰减而引起的误差值,b可以根据经验设置。

方式二:第一设备101可以通过带宽测量工具测试第一设备101和第二设备102之间的每条数据通道的可用带宽。

例如一种带宽测量工具为CHARIOT,CHARIOT为一种软件测试工具,其包括客户端软件和控制端软件,通过CHARIOT可以测试网络中任意两个节点之间的带宽。可以在第一设备101和第二设备102上运行CHARIOT客户端软件,以及在第一设备101或第二设备102或第三方设备上运行CHARIOT控制端软件,可以在CHARIOT控制端软件的运行界面上输入第一设备101的网际协议(Internet Protocol,IP)地址和第二设备102的IP地址,运行CHARIOT控制端软件的内置测量带宽脚本,就可以测量第一设备101和第二设备102之间的任意数据通道的可用带宽。其中,若CHARIOT控制端软件安装在第一设备101上,则第一设备101可以通过CHARIOT控制端软件获得第一设备101和第二设备102之间的任意数据通道的可用带宽的测量结果,若CHARIOT控制端软件安装在第二设备102或第三方设备上,则安装了CHARIOT控制端软件的设备可以将得到的对第一设备101和第二设备102之间的任意数据通道的可用带宽的测量结果发送给第一设备101。

无论第一设备101和第二设备102之间的数据通道是通过有线方式实现还是通过无线方式实现,都可以任意选择如前所述的方式一或方式二来确定着两个设备之间的数据通道的可用带宽。

当然,以上两种确定第一设备101和第二设备102之间的数据通道的可用带宽的方式只是示例,只要能够确定第一设备101和第二设备102之间的数据通道的可用带宽的方式均在本发明实施例的保护范围之内。

在确定第一设备101和第二设备102之间的每条数据通道的可用带宽后,第一设备101可以选择第一设备101和第二设备102之间可用带宽最大的数据通道向第二设备102发送第一数据包。将第一设备101和第二设备102之间的可用带宽最大的数据通道命名为第一数据通道,则第一设备101可以通过第一数据通道向第二设备102发送第一数据包,第一数据通道的可用带宽最大,那么第一数据通道在单位时间内可以传输的数据量也就最大,从而可以提高数据传输速率。

第一设备101和第二设备102之间若具有多条数据通道,那么可能不是每条数据通道都始终处于连接状态,有些数据通道可能在某些时刻会处于非连接状态,若第一数据通道处于非连接状态,则第一设备101无法通过第一数据通道向第二设备101发送数据包。因此,第一设备101在通过第一数据通道向第二设备102发送第一数据包之前,可以先确定第一数据通道是否处于连接状态,在确定第一数据通道处于连接状态时再通过第一数据通道向第二设备102发送第一数据包,以提高第一数据包的发送成功率。

在一种实施方式中,第一设备101在确定第一数据通道是否处于连接状态之后,若第一数据通道处于非连接状态,则第一设备101可以有不同的处理方式,例如第一设备101可以重新从除第一数据通道之外的其他数据通道中选择可用带宽最大的数据通道以发送第一数据包,或者第一设备101也可以暂停发送数据包,而是等到第一数据通道恢复连接之后再通过第一数据通道发送第一数据包。

第二设备102接收第一设备101所发送的数据包后可以对数据包进行排序处理,以避免数据包乱序。为了便于第二设备102对接收的数据包进行排序,第一设备101可以在待发送的每个数据包的包头添加序列号,该序列号可以用于表示第一设备101所发送的数据包的顺序,以便第二设备102接收第一设备101所发送的每个数据包之后,可以根据每个数据包的序列号对所接收的数据包进行排序,得到顺序排序的数据包。

在一种实施方式中,第一设备101为第一数据包添加的序列号可以用于指示第一数据包的发送时刻,如第一数据包的发送时刻为2016年6月26日2时1分5秒1毫秒,可以将该发送时刻以时间的方式表示,那么第一设备101为第一数据包添加的序列号可以为20160626020105.001。

作为用于指示第一数据包的发送时刻的序列号的替换方案,在另一种实施方式中,第一设备101为第一数据包添加的序列号也可以用于指示第一数据包的发送顺序,在这种情况下,序列号越小,说明数据包的发送顺序越靠前。例如,第一设备101先向第二设备102发送第一数据包,第一设备101为第一数据包添加的序列号为1,在发送第一数据包之后第一设备101再向第二设备102发送第二数据包,则第一设备101为第一数据包添加的序列号为2。

当然,以上的两种序列号的形式只是示例,只要序列号可以用于表示第一设备101所发送的每个数据包的顺序,本发明实施例对于序列号的表现形式不作限制。

在第一设备101和第二设备102进行数据传输的过程中,因为网络等因素可能时常发生变化,因此数据包的发送情况也有可能随之变化,为了更好地掌握第一设备101发送数据包的情况,本发明实施例中,可以计算第一设备101向第二设备102发送数据包的发包率,以根据发包率确定第一设备101发送数据包的情况。本发明实施例提供几种计算第一设备101向第二设备102发送数据包的发包率的方式,下面分别介绍。

在一种实施方式中,若第一设备101为第一数据包添加的序列号用于指示数据包的发送时刻,第二设备102可以预先设定,每接收N个数据包就计算一次第一设备101向第二设备102发送数据包的发包率,N为正整数,N的数量可以由第二设备102设置。则在每次计算发包率时,第二设备102可以根据N,及所接收的N个数据包中值最大的序列号和值最小的序列号,计算第一设备101向第二设备102发送数据包的发包率。例如,N=5,那么第二设备102每接收5个数据包就计算发包率,例如在一次计算发包率时,已接收的5个数据包携带的序列号中,值最小的序列号为20160626020030.01,值最大的序列号为20160626020030.06,那么第二设备102接收这5个数据包所用的时长为该值最大的序列号与该值最小的序列号的差值,为0.05秒,第二设备102可以计算得到第一设备101发送数据包的发包率为:5个/0.05秒=100个/秒。

作为上一种计算发包率的替换方案,在一种实施方式中,若第一设备101为第一数据包添加的序列号用于指示第一数据包的发送顺序,那么,第二设备102可以根据预设时长内所接收的数据包的数量计算第一设备101发送数据包的发包率。预设时长可以由第二设备102根据经验设置,比如3s、5s或10s等。例如预设时长为10秒,第二设备102在预设时长内接收了5个数据包,则第二设备102可以计算得到第一设备101在预设时长内发送数据包的发包率为:5个/10秒=0.5个/秒。

本发明实施例中,在第一设备101发送第一数据包之后,第二设备102可以接收第一设备101发送的第一数据包,在接收第一数据包后,第二设备102可以解析第一数据包,从而第二设备102可以得到第一数据包携带的序列号,第二设备102根据第一数据包携带的序列号的大小将第一数据包放入第二设备102中的接收队列,使得接收队列中的数据包顺序排序。其中,接收队列可以通过第二设备102中的输入缓冲器实现,用来暂时存放第一设备101所发送的数据包。第二设备102和第一设备101之间可能存在多条数据通道,则第二设备102可以将通过与第一设备101之间的所有数据通道接收的数据包均存储到一个接收队列中,或者第二设备102也可以为与第一设备101之间的每条数据通道分别建立接收子队列,从而可以将通过不同的数据通道接收的数据包进行分别存储。若第二设备102将通过与第一设备101之间的所有数据通道接收的数据包均存储到一个接收队列中,则第二设备102可以直接在该接收队列中按照序列号对接收的数据包进行排序,若第二设备102为与第一设备101之间的每条数据通道分别建立接收子队列,那么第二设备102还可以建立独立于各个接收子队列之外的接收队列,在通过每个接收子队列接收数据包后,第二设备102可以将各接收子队列中的数据包放入该接收队列中,并在该接收队列中根据序列号对数据包进行排序。

接收队列起到的作用是缓存,在第二设备102对数据包进行排序后,可以按照顺序将接收队列中的数据包输出给第二设备102中的处理器,以便第二设备102中的处理器对数据包进行处理。例如第一设备101发送给第二设备102的数据包携带的是视频数据,则第二设备102的接收队列中存储的数据包都携带视频数据,第二设备102可以将接收队列中的数据包输出给处理器,从而处理器通过对这些数据包进行处理就可以播放视频。其中,第二设备102可以在接收队列中设置滑动窗口,该滑动窗口的长度可以指示第二设备102每次输出的数据量,即第二设备102每次在输出接收队列中的数据包时,可以按照滑动窗口的长度进行输出。在初始时,第二设备102可以为该滑动窗口设置初始长度。初始长度可以根据经验设置,例如针对视频数据,一般流畅的视频画面需要满足每秒通过的视频数据量为25帧,则第二设备102可以将初始长度设置为25帧的数据量或以上,使得播放的视频更为流畅。

对于实时性要求较高的数据,例如视频数据或音频数据,对于滑动窗口的长度的要求比较高,以视频数据为例,若第一设备101发送数据包的发包率较小,而滑动窗口的长度又设置的比较小,那么第二设备102在一次向处理器输出数据包后,可能较长时间之后才能再次向处理器输出下一批数据包,每次输出的数据量又比较小,处理器在播放视频或音频时很容易出现缓冲、花屏、或跳跃等现象,影响用户体验,而若第一设备101发送数据包的发包率较大,而滑动窗口的长度又设置的比较大,那么第二设备102需要积攒比较多的数据包后才会向处理器输出,实时性会受到影响。鉴于此,第二设备102可以根据第一设备101发送数据包的发包率来调整第二设备102的接收队列中的滑动窗口的长度,下面介绍几种调整滑动窗口的长度的方式。

在一种实施方式中,如果第一设备101向第二设备102发送数据包的发包率小于第一阈值,则第二设备102可以增大滑动窗口的长度,以使得第二设备102一次输出更多的数据,尽可能避免处理器在播放视频或音频时出现缓冲、花屏等现象。例如,滑动窗口的初始长度为25帧的数据量,这个长度可以保证处理器在播放视频时没有缓冲现象。第二设备102在设置第一阈值时可以根据滑动窗口的初始长度来设置,对应地可以设置为1个/秒。如果第二设备102确定第一设备101向第二设备102发送数据包的发包率为0.5个/秒,小于第一阈值,那么第二设备102可以增大滑动窗口的长度,使得增大后的滑动窗口的长度大于初始长度,比如增大后的滑动窗口的长度可以为26帧的数据量。其中,第一设备101向第二设备102发送数据包的发包率越小,第二设备102为滑动窗口增加的长度可以越长,以使得第二设备102按照调整后的滑动窗口的长度可以一次输出更多的数据包。例如,若第一设备101向第二设备102发送数据的发包率为0.5个/秒,滑动窗口增大的长度可以为1帧的数据量,若第一设备101向第二设备102发送数据包的发包率为0.2个/秒,滑动窗口增大的长度可以为3帧的数据量。

在一种实施方式中,如果第一设备101向第二设备102发送数据包的发包率大于第二阈值,则第二设备102可以减小滑动窗口的长度,以使得第二设备102能够及时输出接收队列中的数据包,可以提升处理器在进行数据处理过程中的实时性。例如,滑动窗口的初始长度为25帧的数据量,该长度可以尽量保证处理器在播放视频等对于实时性要求较高的多媒体文件时不会出现跳跃现象。第二设备102在设置第二阈值时可以根据滑动窗口的初始长度来设置,对应地可以设置为1个/秒。如果第二设备102确定第一设备101向第二设备102发送数据包的发包率为2个/秒,大于第二阈值,那么第二设备102可以减小滑动窗口的长度,使得减小后的滑动窗口的长度小于初始长度,比如减小后的滑动窗口的长度可以为24帧的数据量。其中,第一设备101向第二设备102发送数据包的发包率越大,第二设备102为滑动窗口减小的长度可以越长,以使得第二设备102能够及时输出接收队列中的数据包,尽可能避免接收队列溢出。例如,若第一设备101向第二设备102发送数据包发包率为2个/秒,滑动窗口减小的长度可以为1帧的数据量。若第一设备101向第二设备102发送数据包发包率为4个/秒,滑动窗口减小的长度可以为2帧的数据量。

下面结合附图介绍本发明实施例所提供的设备。

请参见图4,本发明实施例提供一种数据包发送设备,该数据包发送设备可以包括存储器401、处理器402和发送器403。存储器401和发送器403可以通过总线400与处理器402相连接(图4以此为例),或者可以通过专门的连接线与处理器403连接。

存储器401可以用于存储指令。处理器402可以用于调用存储器401存储的指令,在需发送第一数据包时,确定数据包发送设备与数据包接收设备之间的至少一条数据通道中的每条数据通道的可用带宽。发送器403可以用于通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包;第一数据通道为至少一条数据通道中可用带宽最大的数据通道。

可选的,处理器402还可以用于:

在发送器403通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包之前,在第一数据包的包头中添加序列号,序列号为第一数据包的发送时刻。

可选的,处理器402可以用于:

获取至少一条数据通道中的每条数据通道的当前的信号强度;

根据每条数据通道的当前的信号强度计算得到每条数据通道的可用带宽。

可选的,处理器402还可以用于:

在发送器403通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包之前,确定第一数据通道处于已连接状态。

请参见图5,本发明实施例提供一种数据包接收设备,该数据包接收设备可以包括存储器501、接收器502和处理器503。存储器501和接收器502可以通过总线500与处理器503相连接(图5以此为例),或者也可以通过专门的连接线与处理器503连接。

存储器501可以用于存储指令。接收器502可以用于接收数据包发送设备发送的第一数据包。处理器503可以用于调用存储器501存储的指令解析第一数据包,得到第一数据包携带的序列号,根据序列号的顺序将第一数据包放入接收队列;其中,在接收队列中,各数据包按照各自的序列号顺序排列。

可选的,处理器503还可以用于:

根据接收队列中已接收的数据包的序列号计算数据包发送设备发送已接收的数据包的发包率;序列号为第一数据包的发送时刻。

可选的,处理器503还可以用于:

若发包率小于第一阈值,则增大接收队列每次输出的数据量;或

若发包率大于第二阈值,则减小接收队列每次输出的数据量。

关于这部分内容的介绍,可参考方法部分,不多赘述。

请参见图6,本发明实施例还提供一种数据包发送设备,该数据包发送设备可以包括第一确定单元601和发送单元602。

第一确定单元601可以用于在需发送第一数据包时,确定数据包发送设备与数据包接收设备之间的至少一条数据通道中的每条数据通道的可用带宽;

发送单元602可以用于通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包;第一数据通道为至少一条数据通道中可用带宽最大的数据通道。

可选的,数据包发送设备还可以包括:

添加单元,用于在通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包之前,在第一数据包的包头中添加序列号,序列号为第一数据包的发送时刻。

可选的,数据包发送设备还可以包括:

获取单元,用于获取至少一条数据通道中的每条数据通道的当前的信号强度;

计算单元,用于根据每条数据通道的当前的信号强度计算得到每条数据通道的可用带宽。

可选的,数据包发送设备还可以包括:

第二确定单元,用于在通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包之前,确定第一数据通道处于已连接状态。

可选的,第一确定单元601、发送单元602、添加单元、获取单元、计算单元和第二确定单元,所对应的实体设备均可以是图4中的处理器402。

请参见图7,本发明实施例还提供一种数据包接收设备,该数据包接收设备可以包括接收单元701、解析单元702和操作单元703。

接收单元701可以用于接收数据包发送设备发送的第一数据包;

解析单元702可以用于解析第一数据包,得到第一数据包携带的序列号;

操作单元703可以用于根据序列号的顺序将第一数据包放入接收队列;其中,在接收队列中,各数据包按照各自的序列号顺序排列。

可选的,数据包接收设备还可以包括:

计算单元,用于根据接收队列中已接收的数据包的序列号计算数据包发送设备发送已接收的数据包的发包率;序列号为第一数据包的发送时刻。

可选的,数据包接收设备还可以包括:

调整单元,用于若发包率小于第一阈值,则增大接收队列每次输出的数据量;或,若发包率大于第二阈值,则减小接收队列每次输出的数据量。

可选的,接收单元701、解析单元702、操作单元703、计算单元和调整单元,所对应的实体设备均可以是图5中的处理器503。

本发明实施例提供了一种选择数据通道的方式,通过本发明实施例所提供的方法,第一设备在发送数据包时可以选择可用带宽最大的数据通道进行发送,从而有利于提高数据传输速率,也可以尽量避免拥塞。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash disk)、移动硬盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。

具体来讲,本申请实施例中的数据包发送方法对应的计算机程序指令可以被存储在光盘,硬盘,通用串行总线闪存盘等存储介质上,当存储介质中的与数据包发送方法对应的计算机程序指令被一电子设备读取或被执行时,包括:

在需发送第一数据包时,确定数据发送设备与数据包接收设备之间的至少一条数据通道中的每条数据通道的可用带宽;

通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包;第一数据通道为至少一条数据通道中可用带宽最大的数据通道。

可选的,所述存储介质中还存储有另外一些计算机指令,这些计算机指令在步骤:在通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包之前被执行,在被执行时包括:

在第一数据包的包头中添加序列号,序列号为第一数据包的发送时刻。

可选的,所述存储介质中还存储有另外一些计算机指令,这些计算机指令在步骤:确定第一设备与第二设备之间的至少一条数据通道中的每条数据通道的可用带宽时被执行,在被执行时包括:

获取至少一条数据通道中的每条数据通道的当前的信号强度;

根据每条数据通道的当前的信号强度计算得到每条数据通道的可用带宽。

可选的,所述存储介质中还存储有另外一些计算机指令,这些计算机指令在步骤:在通过至少一条数据通道中的第一数据通道向数据包接收设备发送第一数据包之前被执行,在被执行时包括:

确定第一数据通道处于已连接状态。

具体来讲,本申请实施例中的数据包接收方法对应的计算机程序指令可以被存储在光盘,硬盘,通用串行总线闪存盘等存储介质上,当存储介质中的与数据包接收方法对应的计算机程序指令被一电子设备读取或被执行时,包括:

接收数据包发送设备发送的第一数据包;

解析第一数据包,得到第一数据包携带的序列号;

根据序列号的顺序将第一数据包放入接收队列;其中,在接收队列中,各数据包按照各自的序列号顺序排列。

可选的,所述存储介质中存储了,序列号为第一数据包的发送时刻;所述存储介质中还存储有另外一些计算机指令,这些计算机指令在被执行时包括:

根据接收队列中已接收的数据包的序列号计算数据包发送设备发送已接收的数据包的发包率;序列号为第一数据包的发送时刻。

可选的,所述存储介质中还存储有另外一些计算机指令,这些计算机指令在被执行时包括:

若发包率小于第一阈值,则增大接收队列每次输出的数据量;或

若发包率大于第二阈值,则减小接收队列每次输出的数据量。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1