一种ack信息的发送方法及装置制造方法

文档序号:7790547阅读:168来源:国知局
一种ack信息的发送方法及装置制造方法
【专利摘要】一种ACK信息发送方法及装置,用以解决现有技术中数据包的发送速率较低的问题。该方法接收方接收发送方发送的数据包,并确定该数据包所属的会话流,当确定该数据包为该会话流中的第一个数据包时,向发送方返回ACK信息。通过上述方法,发送方在初始只向接收方发送一个数据包时,接收方可及时返回相应的ACK信息,而无需等待200ms后再返回ACK信息,因此可提高发送方根据该ACK信息确定RTT的准确性,进而加快拥塞矿口增大的速度,提高数据包的发送效率。
【专利说明】—种ACK信息的发送方法及装置
【技术领域】
[0001]本发明涉及通信【技术领域】,尤指一种ACK信息的发送方法及装置。
【背景技术】 [0002]目前,传输控制协议/ 互联网协议(Transmission Control Protocol/InternetProtocol, TCP/IP)协议已经被广泛的应用在数据包传输领域。发送方和接收方在通过TCP/IP协议传输数据包时,接收方接收到发送方发送的数据包后,向发送方返回确认字符(ACKnowledgement,ACK)信息,用于使发送方确认接收方已经接收到的数据包,并向发送方请求后续的数据包。
[0003]在RFC1122协议中规定:接收方针对一个会话流,每接收到发送方发送的该会话流中的两个数据包就向发送方返回一个ACK信息,如果在接收到第一个数据包后的200ms内未接收到第二个数据包,也向发送方返回ACK信息。
[0004]发送方针对接收到的每个ACK信息,根据接收到该ACK信息的时刻以及发送相应数据包的时刻,确定该发送方到接收方的往返时延(Round-Trip Time, RTT),并根据确定的各RTT确定拥塞窗口(该拥塞窗口即为下一次要向接收方发送数据包的数量)。具体的,如果各RTT较小、且各RTT之间的差值较小,则说明当前网络状态较好,发送方可增大拥塞窗口,如果各RTT之间的差值较大,则说明当前网络状态较差,发送方可减小拥塞窗口。
[0005]例如,发送方先向接收方顺序发送数据包1、数据包2、……数据包η共η个数据包(这η个数据包是一个会话流中的数据包),接收方接收到数据包I和数据包2后,则向发送方返回ACK3信息(ACK3表示数据包3之前的数据包已经被成功接收),以告知发送方数据包I和2已经被成功接收。类似的,接收方接收到数据包3和4后,向发送方返回ACK5信息(ACK5表示数据包5之前的数据包已经被成功接收)。
[0006]发送方则针对ACK3信息,根据发送相应数据包(数据包2)的时刻和接收到该ACK3信息的时刻确定发送方到接收方的RTT。类似的,发送方针对ACK5信息,根据发送相应数据包(数据包4)的时刻和接收到该ACK5信息的时刻确定发送方到接收方的RTT。最后,发送方根据确定的各RTT确定拥塞窗口。假设确定的拥塞窗口为m,则下一次发送方向接收方发送数据包n+1、数据包n+2、......数据包n+m共m个数据包。
[0007]然而,当发送方在初始发送数据包时,由于并不能确定发送方到接收方的RTT,因此,为了避免因网络状态不佳而造成大量的丢包,发送方在初始发送数据包时通常采用慢启动的发送方法,即,发送方针对一个会话流,初始发送时只向接收方发送该会话流中的一个数据包。但在RFC1122协议的规定下,由于接收方只接收到了第一个数据包而并未接收到第二个数据包,因此只能等待200ms之后才向发送方返回ACK信息,这就会影响发送方确定RTT的准确性,导致后续发送方发送数据包的数量上升过慢,降低了数据包的发送效率。

【发明内容】

[0008]本发明实施例提供一种ACK信息的发送方法及装置,用以解决现有技术中数据包的发送速率较低的问题。
[0009]第一方面,提供一种ACK信息的发送方法,包括:
[0010]接收方接收发送方发送的数据包;
[0011]确定所述数据包所属的会话流;
[0012]当确定所述数据包为所述会话流中的第一个数据包时,向所述发送方返回ACK信
肩、O
[0013]结合第一方面,在第一种可能的实现方式中,当确定所述数据包为所述会话流中的第一个数据包时,向所述发送方返回ACK信息,具体包括:
[0014]当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量小于设定阈值时,向所述发送方返回一个ACK信息。
[0015]结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,当确定所述数据包为所述会话流中的第一个数据包时,向所述发送方返回ACK信息,具体包括:
[0016]当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量不小于设定阈值时,向所述发送方返回至少两个ACK信息。
[0017]结合第二种可能的实现方式,在第三种可能的实现方式中,向所述发送方返回至少两个ACK信息,具体包括:
[0018]根据所述数据包的数据量以及预设的拆分比例,将所述数据包拆分为至少两个子数据包;
[0019]针对拆分的子数据包向发送方返回ACK信息。
[0020]结合第一方面或第一?三种任一可能的实现方式,在第四种可能的实现方式中,所述方法还包括:
[0021]当所述接收方确定所述数据包不是所述会话流中的第一个数据包时,所述接收方判断自身是否已针对接收到的上一个数据包向所述发送方返回ACK信息;
[0022]若是,则在接收到所述会话流中的下一个数据包时,或等待设定时间后,向发送方返回ACK信息;
[0023]否则,向所述发送方返回ACK信息。
[0024]第二方面,提供一种ACK信息的发送装置,包括:
[0025]接收模块,用于接收发送方发送的数据包;
[0026]确定模块,用于确定所述接收模块接收到的所述数据包所属的会话流;
[0027]发送模块,用于当确定所述接收模块接收到的所述数据包为所述确定模块确定的所述会话流中的第一个数据包时,向所述发送方返回ACK信息。
[0028]结合第二方面,在第一种可能的实现方式中,所述发送模块具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量小于设定阈值时,向所述发送方返回一个ACK信息。
[0029]结合第二方面或第一种可能的实现方式,在第二种可能的实现方式中,所述发送模块具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量不小于设定阈值时,向所述发送方返回至少两个ACK信息。
[0030]结合第二种可能的实现方式,在第三种可能的实现方式中,所述发送模块具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量不小于设定阈值时,根据所述数据包的数据量以及预设的拆分比例,将所述数据包拆分为至少两个子数据包,针对拆分的子数据包向发送方返回ACK信息。
[0031]结合第二方面或第一?三种任一可能的实现方式,在第四种可能的实现方式中,所述发送模块还用于,当确定所述数据包不是所述会话流中的第一个数据包时,判断所述装置自身是否已针对接收到的上一个数据包向所述发送方返回ACK信息;若是,则在所述接收模块接收到所述会话流中的下一个数据包时,或等待设定时间后,向发送方返回ACK信息;否则,向所述发送方返回ACK信息。
[0032]第三方面,提供一种终端,包括如上所述的ACK信息的发送装置。
[0033]本发明实施例提供一种ACK信息的发送方法及装置,该方法接收方接收发送方发送的数据包,并确定该数据包所属的会话流,当确定该数据包为该会话流中的第一个数据包时,向发送方返回ACK信息。通过上述方法,发送方在初始只向接收方发送一个数据包时,接收方可及时返回相应的ACK信息,而无需等待200ms后再返回ACK信息,因此可提高发送方根据该ACK信息确定RTT的准确性,进而加快拥塞矿口增大的速度,提高数据包的发送效率。
【专利附图】

【附图说明】
[0034]图1为本发明实施例提供的ACK信息的发送过程;
[0035]图2为本发明实施例提供的ACK信息的详细发送过程;
[0036]图3为本发明实施例提供的ACK信息的发送装置结构示意图;
[0037]图4为本发明实施例提供的终端的具体实现结构示意图。
【具体实施方式】
[0038]由于当发送方采用慢启动的发送方法发送数据包时,初始发送时只发送一个数据包,后续则会根据接收方返回的ACK信息确定RTT,并根据RTT增大拥塞窗口,直至增大到某一个值时不再改变,因此,拥塞窗口增大的速度直接影响到数据包的发送效率。为了提高数据包的发送效率,本发明实施例中接收方接收到发送方发送的数据包后,如果确定该数据包为该数据包所属的会话流中的第一个数据包时,直接向发送方返回ACK信息,而无需等待200ms后再发送,因此可提高发送方根据该ACK信息确定RTT的准确性,进而加快拥塞矿口增大的速度,提高数据包的发送效率。
[0039]下面结合说明书附图,对本发明实施例的方案进行详细说明。
[0040]实施例一:
[0041]图1为本发明实施例提供的ACK信息的发送过程,具体包括以下步骤:
[0042]SlOl:接收方接收发送方发送的数据包。
[0043]在本发明实施例中,首先由接收方发起会话,向发送方请求会话流中的数据包,发送方与接收方建立会话后,则按照该会话流中各个要发送的数据包的顺序,向接收方发送该会话流中的各数据包。具体的,发送方以慢启动的方式向接收方发送该会话流中的各数据包,即,首次向接收方发送该会话流中的数据包时,只向接收方发送该会话流中的第一个数据包,在接收到接收方返回的ACK信息后,根据接收到该ACK信息的时刻以及发送相应数据包的时刻,确定发送方到接收方的RTT,再根据确定的RTT调整拥塞窗口(即,下一次要向接收方发送的该会话流中的数据包的数量)的大小。
[0044]例如,接收方与发送方建立了会话流a后,发送方要依次向接收方发送的该会话流a中的数据包为数据包I?数据包n,则发送方以慢启动的方式,先只向发送方发送数据包1,在接收到接收方针对该数据包I返回的ACK信息后,再确定RTT,并据此调整拥塞窗口。假设调整后的拥塞窗口为2,则发送方再向接收方发送数据包2和3。
[0045]S102:确定该数据包所属的会话流。
[0046]接收方在接收到一个数据包后,可根据该数据包中携带的标识信息,确定该数据包所属的会话流。例如,由于对于一个会话流而言,其由源互联网协议(InternetProtocol,IP)地址、源端口号、目的IP地址和目的端口号组成的四元组是唯一的,因此,接收方可根据该数据包中携带的四元组,即:源地址、源端口号、目的IP地址和目的端口号,确定该数据包所属的会话流。
[0047]S103:判断该数据包是否为确定的该会话流中的第一个数据包,若是,则执行步骤S104,否则执行步骤S105。
[0048]S104:向发送方返回ACK信息。
[0049]在本发明实施例中,接收方确定了接收到的数据包所属的会话流后,则判断该数据包是否为接收到的该会话流中的首个数据包,若是,则直接针对该数据包向发送方返回ACK信息,而无需等待200ms后再返回ACK信息,从而,发送方根据接收方及时返回的该ACK信息的时刻以及发送该首个数据包的时刻,可准确的确定出接收方到发送方的RTT,从而可较大幅度的提高拥塞窗口,进而提高数据包的发送效率。
[0050]继续沿用上例,发送方将会话流a中的首个数据包,即数据包I发送给接收方后,接收方确定在接收到该数据包I之前,并未接收到该会话流a中的任何数据包,因此确定该数据包是接收到的该会话流a中的第一个数据包,直接针对该数据包I向发送方返回ACK信息,而无需等待200ms后再返回ACK信息。发送方接收到接收方及时反馈的该ACK信息后,则可准确的确定发送方到接收方的RTT,相比于现有技术中接收方等待200ms后在返回ACK的方法,本发明实施例一提供的方法可大幅减小发送方确定的RTT,因此发送方可大幅提高拥塞窗口,下一次向接收方发送会话流a中的数据包时,则可发送较多数量的数据包,因此提高了数据包的发送效率。
[0051]S105:接收方判断自身是否已针对接收到的上一个数据包向发送方返回ACK信息,若是,则自行步骤S106,否则执行步骤S104。
[0052]S106:在接收到该会话流中的下一个数据包时,或等待设定时间后,向发送方返回ACK信息。
[0053]如果接收方确定该数据包不是接收到的该会话流中的首个数据包,也就是说,接收方在接收到该数据包之前,已经接收到该会话流中的其他数据包,则可按照现行的RFCl 122协议进行ACK信息的发送,即,每接收到该会话流中的两个数据包,就向发送方返回一个ACK信息,或者等待设定时间(如200ms)后向发送方返回ACK信息。
[0054]通过上述方法,发送方在初始只向接收方发送一个数据包时,接收方可及时返回相应的ACK信息,而无需等待200ms后再返回ACK信息,因此可提高发送方根据该ACK信息确定RTT的准确性,相比于现有技术中接收方需等待200ms后再返回ACK信息的方法,本发明实施例提供的ACK信息发送方法可使发送方确定的RTT较小,从而加快拥塞矿口增大的速度,提高数据包的发送效率。
[0055]另外,为了进一步提高数据包的发送效率,本发明实施例中接收方在接收到一个会话流中的首个数据包后,还可根据该数据包的数据量向接收方返回一个或两个以上的ACK信息,下面通过实施例二进行详细说明。
[0056]实施例二:
[0057]图2为本发明实施例提供的ACK信息的详细发送过程,具体包括以下步骤:
[0058]S201:接收方接收发送方发送的数据包。
[0059]S202:确定该数据包所属的会话流。
[0060]S203:判断该数据包是否为确定的该会话流中的第一个数据包,若是,则执行步骤S204,否则执行步骤S207。
[0061]上述步骤S201?S203与实施例一种的步骤SlOl?S103相同,这里就不在——赘述。
[0062]S204:判断该数据包的数据量是否小于设定阈值,若是,则执行步骤S205,否则执行步骤S206。
[0063]在本发明实施例中,接收方确定接收到的数据包为接收到的该会话流中的首个数据包后,比较该数据包的数据量与设定阈值的大小,以判断该数据包的数据量是否小于设定阈值。其中,该设定阈值可根据需要进行设定,例如,可设定为最大分段大小(MaximumSegment Size, MSS),或设定为最大传输单兀(Maximum Transmission Unit, MTU)。
[0064]S205:向发送方返回一个ACK信息。
[0065]当该数据包的数据量小于上述设定阈值时,接收方则直接针对接收到的该数据包向发送方返回一个ACK信息。
[0066]S206:向发送方返回至少两个ACK信息。
[0067]当该数据包的数据量不小于上述设定阈值时,接收方则可针对接收到的该数据包向发送方返回至少两个ACK信息。具体的,接收方可根据该数据包的数据量以及预设的拆分比例,将该数据包拆分为至少两个子数据包,并针对拆分的每个子数据包向发送方返回ACK信息。
[0068]例如,假设设定阈值为100字节,预设的拆分比例为60%,如果接收方接收到的数据包是该会话流中的首个数据包,而且该数据包的数据量是100字节,则接收方确定该数据包的数据量不小于设定阈值,将该数据包的前60%的数据量拆分为一个子数据包,后40%的数据量拆分为另一个子数据包,即,将该数据包的前60个字节拆分为一个子数据包,后40个字节拆分为另一个子数据包,再针对拆分出的这两个子数据包分别向发送方返回ACK信息,使发送方连续接收到两个时间相近的ACK信息,从而,发送方根据接收到这两个ACK信息的时刻以及发送该数据包的时刻,可确定出两个较小且差值也较小的RTT,从而根据第一个RTT将拥塞窗口增大后,紧接着根据这两个差值较小的RTT又会再次增大拥塞窗口,从而可进一步提高后续向接收方发送数据包的数量。
[0069]S207:接收方判断自身是否已针对接收到的上一个数据包向发送方返回ACK信息,若是,则自行步骤S208,否则执行步骤S205。
[0070]S208:在接收到该会话流中的下一个数据包时,或等待设定时间后,向发送方返回ACK信息。[0071]在图2所示的过程中,当接收方接收到的数据包为该数据包所属的会话流中的首个数据包,且该数据包的数据量大与设定阈值时,将该数据包拆分为至少两个子数据包,并针对拆分的每个子数据包分别向发送方返回ACK信息,可进一步提高数据包的发送效率。
[0072]以上为本发明实施例提供的ACK信息的发送方法,基于同样的发明思路,本发明实施例还提供一种ACK信息的发送装置,下面通过实施例三进行详细说明。
[0073]实施例三:
[0074]图3为本发明实施例提供的ACK信息的发送装置结构示意图,具体包括:
[0075]接收模块301,用于接收发送方发送的数据包;
[0076]确定模块302,用于确定所述接收模块301接收到的所述数据包所属的会话流;
[0077]发送模块303,用于当确定所述接收模块301接收到的所述数据包为所述确定模块302确定的所述会话流中的第一个数据包时,向所述发送方返回ACK信息。
[0078]所述发送模块303具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量小于设定阈值时,向所述发送方返回一个ACK信息。
[0079]所述发送模块303具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量不小于设定阈值时,向所述发送方返回至少两个ACK信息。
[0080]所述发送模块303具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量不小于设定阈值时,根据所述数据包的数据量以及预设的拆分比例,将所述数据包拆分为至少两个子数据包,针对拆分的子数据包向发送方返回ACK信肩、O
[0081]所述发送模块303还用于,当确定所述数据包不是所述会话流中的第一个数据包时,判断所述装置自身是否已针对接收到的上一个数据包向所述发送方返回ACK信息;若是,则在所述接收模块301接收到所述会话流中的下一个数据包时,或等待设定时间后,向发送方返回ACK信息;否则,向所述发送方返回ACK信息。
[0082]另外,本发明实施例还提供一种终端,包括如图3所示的ACK信息的发送装置。
[0083]图4为本发明实施例提供的终端的具体实现结构示意图,具体包括:
[0084]接收器401,用于接收发送方发送的数据包;
[0085]处理器402,与接收器401和发送器403耦合,用于确定所述接收器401接收到的所述数据包所属的会话流;当确定所述接收器401接收到的所述数据包为所述会话流中的第一个数据包时,指示发送器403向所述发送方返回ACK信息;
[0086]发送器403,用于根据所述处理器402的指示向所述发送方返回ACK信息。
[0087]本发明实施例提供一种ACK信息的发送方法及装置,该方法接收方接收发送方发送的数据包,并确定该数据包所属的会话流,当确定该数据包为该会话流中的第一个数据包时,向发送方返回ACK信息。通过上述方法,发送方在初始只向接收方发送一个数据包时,接收方可及时返回相应的ACK信息,而无需等待200ms后再返回ACK信息,因此可提高发送方根据该ACK信息确定RTT的准确性,进而加快拥塞矿口增大的速度,提高数据包的发送效率。
[0088]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0089]本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0090]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0091]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0092]尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0093]显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
【权利要求】
1.一种确认字符ACK信息的发送方法,其特征在于,包括: 接收方接收发送方发送的数据包; 确定所述数据包所属的会话流; 当确定所述数据包为所述会话流中的第一个数据包时,向所述发送方返回ACK信息。
2.如权利要求1所述的方法,其特征在于,当确定所述数据包为所述会话流中的第一个数据包时,向所述发送方返回ACK信息,具体包括: 当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量小于设定阈值时,向所述发送方返回一个ACK信息。
3.如权利要求1或2所述的方法,其特征在于,当确定所述数据包为所述会话流中的第一个数据包时,向所述发送方返回ACK信息,具体包括: 当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量不小于设定阈值时,向所述发送方返回至少两个ACK信息。
4.如权利要求3所述的方法,其特征在于,向所述发送方返回至少两个ACK信息,具体包括: 根据所述数据包的数据量以及预设的拆分比例,将所述数据包拆分为至少两个子数据包; 针对拆分的子数据包向发送方返回ACK信息。
5.如权利要求1~4任一所述的方`法,其特征在于,所述方法还包括: 当所述接收方确定所述数据包不是所述会话流中的第一个数据包时,所述接收方判断自身是否已针对接收到的上一个数据包向所述发送方返回ACK信息; 若是,则在接收到所述会话流中的下一个数据包时,或等待设定时间后,向发送方返回ACK信息; 否则,向所述发送方返回ACK信息。
6.一种确认字符ACK信息的发送装置,其特征在于,包括: 接收模块,用于接收发送方发送的数据包; 确定模块,用于确定所述接收模块接收到的所述数据包所属的会话流; 发送模块,用于当确定所述接收模块接收到的所述数据包为所述确定模块确定的所述会话流中的第一个数据包时,向所述发送方返回ACK信息。
7.如权利要求6所述的装置,其特征在于,所述发送模块具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量小于设定阈值时,向所述发送方返回一个ACK信息。
8.如权利要求6或7所述的装置,其特征在于,所述发送模块具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量不小于设定阈值时,向所述发送方返回至少两个ACK信息。
9.如权利要求8所述的装置,其特征在于,所述发送模块具体用于,当确定所述数据包为所述会话流中的第一个数据包,且所述数据包的数据量不小于设定阈值时,根据所述数据包的数据量以及预设的拆分比例,将所述数据包拆分为至少两个子数据包,针对拆分的子数据包向发送方返回ACK信息。
10.如权利要求6~7任一所述的装置,其特征在于,所述发送模块还用于,当确定所述数据包不是所述会话流中的第一个数据包时,判断所述装置自身是否已针对接收到的上一个数据包向所述发送方返回ACK信息;若是,则在所述接收模块接收到所述会话流中的下一个数据包时,或等待设定时间后,向发送方返回ACK信息;否则,向所述发送方返回ACK信息。
11.一种终端,其特征在于,包括如权利要求6~10任一所述的确认字符ACK信息的发送装置。`
【文档编号】H04L1/16GK103636157SQ201380001733
【公开日】2014年3月12日 申请日期:2013年6月20日 优先权日:2013年6月20日
【发明者】蔡仕江 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1