一种TCP报文的处理方法及装置与流程

文档序号:18125859发布日期:2019-07-10 09:54阅读:298来源:国知局
一种TCP报文的处理方法及装置与流程

本申请涉及网络通信技术领域,尤其涉及一种TCP报文的处理方法及装置。



背景技术:

TCP(Transmission Control Protocol,传输控制协议)作为一种面向连接的、可靠的、基于字节流的传输层通信协议,用于实现端对端的可靠性数据传输,是互联网的重要基础。

在现有的TCP报文处理流程中,本端设备为了保证对TCP报文的正确处理,对接收到的每一TCP报文的每种特性都要进行判断处理,例如,当接收到一TCP报文后,先要判断当前TCP连接状态,再根据TCP状态进行对应的处理,在判断TCP连接状态后,又要判断TCP报文合法性,再进行TCP流量控制和TCP拥塞控制等处理流程。

然而,在实际TCP连接的交互过程中,当本端设备与对端设备之间网络流畅时,TCP报文非法、乱序和TCP报文丢失等异常情况出现的频率是很低的,本端设备对接收到的每一TCP报文的每种特性都进行判断处理,导致本端设备对TCP报文的处理效率低下,进而占用了本端设备大量的处理资源,极大降低了本端设备的性能。



技术实现要素:

有鉴于此,本申请提供一种TCP报文的处理方法及装置,当本端设备与对端设备之间网络流畅时,可以在保证本端设备对接收到的TCP报文进行正确处理的前提下,提高本端设备对接收到的TCP报文的处理效率,减少对本端设备处理资源的占用,从而提升本端设备的性能。

为实现上述目的,本申请提供技术方案如下:

根据本申请的第一方面,提出了一种TCP报文的处理方法,应用于本端设备,所述本端设备与对端设备建立TCP连接;所述方法包括:

根据所述本端设备在TCP连接中所处的当前状态,以及预设置的预测规则,预测所述本端设备在TCP连接中所处的下一状态,所述下一状态包含所述本端设备预计接收到的TCP报文的第一特征;

根据所述本端设备实际接收到的TCP报文的第二特征,将所述第一特征与所述第二特征进行匹配;

当所述第一特征与所述第二特征相匹配时,将所述实际接收到的TCP报文转入所述下一状态对应的快速处理流程。

根据本申请的第二方面,提出了一种TCP报文的处理装置,应用于本端设备,所述本端设备与对端设备建立TCP连接;所述装置包括:

预测单元,根据所述本端设备在TCP连接中所处的当前状态,以及预设置的预测规则,预测所述本端设备在TCP连接中所处的下一状态,所述下一状态包含所述本端设备预计接收到的TCP报文的第一特征;

匹配单元,根据所述本端设备实际接收到的TCP报文的第二特征,将所述第一特征与所述第二特征进行匹配;

第一转入单元,当所述第一特征与所述第二特征相匹配时,将所述实际接收到的TCP报文转入所述下一状态对应的快速处理流程。

由以上技术方案可见,本申请根据本端设备在TCP连接中所处的当前状态,对该本端设备所处的下一状态进行预测,若预测命中,则将接收到的TCP报文转入相应的快速处理流程,该快速处理流程相比于标准处理流程,在保证对TCP报文进行正确处理的前提下,省略了没必要执行的步骤,或者为简化了相应的处理流程,从而加快了该本端设备对TCP报文的处理速度;若预测失败,则将接收到的TCP报文转入标准处理流程,从而保证了该本端设备对TCP报文的正常处理。

附图说明

图1是相关技术中本端设备处理接收到的TCP报文的标准处理流程的流程图。

图2是本申请一示例性实施例提供的一种TCP报文的处理方法的流程图。

图3是本申请一示例性实施例提供的另一种TCP报文的处理方法的流程图。

图4是本申请一示例性实施例提供的一种电子设备的结构示意图。

图5是本申请一示例性实施例提供的一种TCP报文的处理装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1是相关技术中本端设备处理接收到的TCP报文的标准处理流程的流程图。如图1所示,可以包括以下步骤:

步骤101,本端设备接收对端设备发送的TCP报文。

步骤102,本端设备判断TCP连接状态。

步骤103,本端设备判断接收到的TCP报文的合法性。

步骤104,本端设备进行流量控制。

步骤105,本端设备进行拥塞控制。

步骤106,本端设备进行其他流程处理,待处理结束后,转入步骤101,接收下一个TCP报文。

可见,在相关技术中,本端设备对接收到的每一TCP报文都要进行判断TCP连接状态、判断TCP报文合法性、TCP流量控制和TCP拥塞控制等处理流程。然而,在实际TCP连接的交互过程中,当本端设备与对端设备之间网络流畅时,TCP报文非法、乱序和TCP报文丢失等异常情况出现的频率是很低的,本端设备对接收到的每一TCP报文的每种特性都进行判断处理,导致本端设备对TCP报文的处理效率低下,进而占用了本端设备大量的处理资源,极大降低了本端设备的性能。

图2是本申请一示例性实施例示出的一种TCP报文的处理方法的流程图,如图2所示,该方法应用于本端设备,所述本端设备与对端设备建立TCP连接;该方法可以包括以下步骤:

步骤201,根据所述本端设备在TCP连接中所处的当前状态,以及预设置的预测规则,预测所述本端设备在TCP连接中所处的下一状态,所述下一状态包含所述本端设备预计接收到的TCP报文的第一特征。

步骤202,根据所述本端设备实际接收到的TCP报文的第二特征,将所述第一特征与所述第二特征进行匹配。

在本实施例中,所述第一特征包括以下至少之一:所述预计接收到的TCP报文的类型为预设类型;所述预计接收到的TCP报文的确认号等于所述本端设备待发送的TCP报文的序列号;所述预计接收到的TCP报文的序列号等于所述本端设备待接收的TCP报文的序列号。

所述第二特征包括以下至少之一:所述实际接收到的TCP报文的类型;所述实际接收到的TCP报文的确认号;所述实际接收到的TCP报文的序列号。

在本实施例中,当所述当前状态为被动连接初始状态时,预测所述下一状态为被动连接状态;其中,所述被动连接初始状态中的第一特征包括:所述本端设备接收到的TCP报文为SYN报文;以及,所述被动连接状态中的第一特征包括:所述本端设备接收到的TCP报文为针对SYN+ACK报文的ACK报文,且所述针对SYN+ACK报文的ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述针对SYN+ACK报文的ACK报文的序列号等于所述本端设备待接收的TCP报文的序列号;

当所述当前状态为主动连接初始状态时,预测所述下一状态为纯接收状态;其中,所述主动连接初始状态中的第一特征包括:所述本端设备接收到的TCP报文为SYN+ACK报文,且所述SYN+ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号;以及,所述纯接收状态中的第一特征包括:所述本端设备接收到的TCP报文为数据报文,且所述数据报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述数据报文的序列号等于所述本端设备待接收的TCP报文的序列号;其中,当所述本端设备在所述纯接收状态下时,所述本端设备仅接收数据报文;

当所述当前状态为被动连接状态时,预测所述下一状态为纯接收状态;

当所述当前状态为纯接收状态时,预测所述下一状态为纯接收状态;

当所述当前状态为纯发送状态,且所述本端设备已经发送完数据报文时,预测所述下一状态为纯接收状态;其中,所述纯发送状态中的第一特征包括:所述本端设备接收到的TCP报文为针对数据报文的ACK报文,且所述针对数据报文的ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述针对数据报文的ACK报文的序列号等于所述本端设备待接收的TCP报文的序列号;其中,当所述本端设备在所述纯发送状态下时,所述本端设备仅发送数据报文;

当所述当前状态为纯发送状态,且所述本端设备未发送完数据报文时,预测所述下一状态为纯发送状态;

当所述本端设备在当前状态下发送了FIN报文时,预测所述下一状态为第一断开连接状态;

当所述当前状态为第一断开连接状态时,预测所述下一状态为第二断开连接状态;其中,所述第一断开连接状态中的第一特征包括:所述本端设备接收到的TCP报文为针对FIN报文的第一ACK报文,且所述针对FIN报文的第一ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述针对FIN报文的第一ACK报文的序列号等于所述本端设备待接收的TCP报文的序列号;以及,所述第二断开连接状态中的第一特征包括:所述本端设备接收到的TCP报文为FIN报文,且所述FIN报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述FIN报文的序列号等于所述本端设备待接收的TCP报文的序列号;

当所述当前状态为第二断开连接状态,或者第三断开连接状态时,终止对所述下一状态进行预测;其中,所述第三断开连接状态中的第一特征包括:所述本端设备接收到的TCP报文为针对FIN报文的第二ACK报文,且所述针对FIN报文的第二ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述针对FIN报文的第二ACK报文的序列号等于所述本端设备待接收的TCP报文的序列号。

在本实施例中,当预测所述下一状态为纯接收状态,或者为纯发送状态时,若所述第一特征与所述第二特征不匹配,且所述本端设备发送的数据报文存在未被确认的情况,则预测所述下一状态的后一状态为纯发送状态;

当预测所述下一状态为纯接收状态,或者为纯发送状态时,若所述第一特征与所述第二特征不匹配,且所述本端设备接收到FIN报文,则预测所述下一状态的后一状态为第三断开连接状态。

步骤203,当所述第一特征与所述第二特征相匹配时,将所述实际接收到的TCP报文转入所述下一状态对应的快速处理流程。

在本实施例中,当所述第一特征与所述第二特征不匹配时,将所述实际接收到的TCP报文转入标准处理流程。

在本实施例中,所述快速处理流程省略了所述标准处理流程中与所述下一状态无关的处理步骤,包括以下情况:

当预测所述下一状态为主动连接初始状态,或者为被动连接状态时,所述快速处理流程省略了判断TCP连接状态,以及判断TCP报文合法性的步骤;

当预测所述下一状态为纯发送状态时,所述快速处理流程省略了判断TCP连接状态与判断TCP报文合法性的步骤,以及简化了TCP拥塞控制的过程;

当预测所述下一状态为纯接收状态时,所述快速处理流程省略了判断TCP连接状态、判断TCP报文合法性与TCP流量控制的步骤,以及简化了TCP拥塞控制的过程;

当预测所述下一状态为第一断开连接状态、第二断开连接状态、第三断开连接状态中任一状态时,所述快速处理流程省略了判断TCP连接状态、判断TCP报文合法性、TCP流量控制以及TCP拥塞控制的步骤。

由以上技术方案可见,本申请根据本端设备在TCP连接中所处的当前状态,对该本端设备所处的下一状态进行预测,然后,根据实际接收到的TCP报文的第二特征,与所述下一状态中包含的第一特征进行匹配,若所述第二特征与所述第一特征相匹配,则预测命中,将接收到的TCP报文转入相应的快速处理流程,该快速处理流程相比于标准处理流程,在保证对TCP报文进行正确处理的前提下,省略了没必要执行的步骤,或者为简化了相应的处理流程,从而加快了该本端设备对TCP报文的处理速度,减少了对该本端设备的处理资源的占用,进一步提升了该本端设备的性能。若所述第二特征与所述第一特征不匹配,则预测失败,将接收到的TCP报文转入标准处理流程,从而保证了该本端设备对TCP报文的正常处理。

为了便于理解,下面结合图3对本申请的技术方案进行详细说明。

图3是本申请另一示例性实施例的一种TCP报文的处理方法的流程图。如图3所示,该方法可以包括以下步骤:

步骤301,根据本端设备在TCP连接中所处的当前状态,以及预设置的预测规则,预测该本端设备在TCP连接中所处的下一状态。

在本实施例中,该下一状态包含该本端设备预计接收到的TCP报文的第一特征,该第一特征包括以下特征中至少之一:该本端设备预计接收到的TCP报文的类型为预设类型;该预计接收到的TCP报文的确认号等于该本端设备待发送的TCP报文的序列号;该预计接收到的TCP报文的序列号等于该本端设备待接收的TCP报文的序列号。

步骤302,本端设备接收对端设备发送的TCP报文。

步骤303,根据实际接收到的TCP报文的第二特征,判断预测是否命中,若预测命中,则转入步骤304A,否则转入步骤304B。

在本实施例中,实际接收到的TCP报文的第二特征,包括以下特征中至少之一:该实际接收到的TCP报文的类型;该实际接收到的TCP报文的确认号;该实际接收到的TCP报文的序列号。

将实际接收到的TCP报文的第二特征,与预计接收到的TCP报文的第一特征进行匹配;若该第一特征与该第二特征相匹配,则判断预测命中,否则预测失败。

步骤304A,将接收到的TCP报文转入对应的快速处理流程,待处理完毕后,转入步骤301。

步骤304B,将接收到的TCP报文转入标准处理流程,待处理完毕后,转入步骤301。

在本实施例中,标准处理流程即为上述相关技术中的标准处理流程。若预测失败,将接收到的TCP报文转入标准处理流程,保证了该本端设备对接收到的TCP报文的正常处理。

在本实施例中,当预测本端设备所处的下一状态为纯接收状态或者为纯发送状态,且预测失败时,在将接收到的TCP报文转入标准处理流程处理完毕后,将转入步骤301,而预测本端设备所处的下一状态为其他状态时,若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

下面针对在TCP连接过程中的多种状态,分别对每一状态下的报文处理过程进行描述:

1、建立TCP连接

在本实施例中,在本端设备与对端设备建立TCP连接时,分为本端设备被动建立TCP连接与主动建立TCP连接两种情况:

1)被动连接

当本端设备为被动建立TCP连接时,该本端设备处于被动连接初始状态,在TCP连接正常的情况下,该本端设备会接收到对端设备发送的SYN报文,且该SYN报文的序列号为对端设备的初始序号,所以,当该本端设备为被动建立TCP连接时,预测该本端设备将处于被动连接初始状态,其中,该被动连接初始状态中的第一特征包括:该本端设备接收到的TCP报文为SYN报文,由于SYN报文不含有确认号,且该SYN报文的序列号为对端设备的初始序号,所以不需要预测接收到的TCP报文的确认号与序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文(即SYN报文)转入与被动连接初始状态对应的快速处理流程,由于该本端设备在处于被动连接初始状态时,只接收到对端设备发送的SYN报文,而还没有向对端设备发送过TCP报文,即该本端设备没有与对端设备进行TCP报文交互,因此,为了保证该本端设备对接收到的TCP报文进行正确处理,该对应的快速处理流程与标准处理流程相比,不省略标准处理流程中的步骤,即与标准处理流程相同。若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

当本端设备处于被动连接初始状态时,该本端设备接收到对端设备发送的SYN报文后,会向对端设备返回一SYN+ACK报文,紧接着进入被动连接状态,在TCP连接正常的情况下,该本端设备将接收到对端设备发送的针对SYN+ACK报文的ACK报文,且该针对SYN+ACK报文的ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该针对SYN+ACK报文的ACK报文的序列号等于该本端设备待接收的TCP报文的序列号。所以,当该本端设备的当前状态为被动连接初始状态时,预测下一状态为被动连接状态;其中,该被动连接状态中的第一特征包括:该本端设备接收到的TCP报文为针对SYN+ACK报文的ACK报文,且该针对SYN+ACK报文的ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该针对SYN+ACK报文的ACK报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文(针对SYN+ACK报文的ACK报文)转入与被动连接状态对应的快速处理流程。由于该本端设备实际所处的状态即为预测的状态(被动连接状态),该本端设备实际接收到的TCP报文即为预计接收到的TCP报文(针对SYN+ACK报文的ACK报文),所以在与被动连接状态对应的快速处理流程中,可以省略判断TCP连接状态与判断TCP报文合法性的步骤。若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

在本端设备处于被动连接状态,且接收到对端设备发送的针对SYN+ACK报文的ACK报文后,该本端设备与该对端设备完成了TCP连接的建立过程。由于该本端设备为被动建立连接,所以当该本端设备的当前状态为被动连接状态时,预测下一状态为纯接收状态,其中,该纯接收状态中的第一特征包括:该本端设备接收到的TCP报文为数据报文,且该数据报文的确认号等于该本端设备待发送的TCP报文的序列号,该数据报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文(数据报文)转入与纯接收状态对应的快速处理流程。由于该本端设备实际所处的状态即为预测的状态(纯接收状态),该本端设备实际接收到的TCP报文即为预计接收到的TCP报文(数据报文),所以在与纯接收状态对应的快速处理流程中,可以省略判断TCP连接状态与判断TCP报文合法性的步骤;由于TCP流量控制针对的是发送数据报文的设备,所以在与纯接收状态对应的快速处理流程中,可以省略TCP流量控制的步骤;同时,可以简化TCP拥塞控制的过程。由于该本端设备在纯接收状态下,接收到的数据报文的确认号等于该本端设备待发送的TCP报文的序列号,该接收到的数据报文的序列号等于该本端设备待接收的TCP报文的序列号,所以网络中不存在报文乱序的情况,因此,在TCP拥塞控制的过程中,可以省略乱序保序处理流程,而只需要根据接收到的数据报文进行更新计算拥塞窗口、发送窗口等拥塞控制参数即可。若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

2)主动连接

当本端设备为主动建立TCP连接时,该本端设备会向对端设备发送SYN报文,紧接着,该本端设备进入主动连接初始状态,在TCP连接正常的情况下,对端设备会向本端设备返回SYN+ACK报文,且该SYN+ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该SYN+ACK报文的序列号为对端设备的初始序号,所以,当该本端设备为主动建立TCP连接时,预测该本端设备将处于主动连接初始状态,其中,该主动连接初始状态中的第一特征包括:该本端设备接收到的TCP报文为SYN+ACK报文,且该SYN+ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,由于该SYN+ACK报文的序列号为对端设备的初始序号,所以不需要预测接收到的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文(即SYN+ACK报文)转入与主动连接初始状态对应的快速处理流程;由于该本端设备实际所处的状态即为预测的状态(主动连接初始状态),该本端设备实际接收到的TCP报文即为预计接收到的TCP报文(SYN+ACK报文),所以在与主动连接初始状态对应的快速处理流程中,可以省略判断TCP连接状态与判断TCP报文合法性的步骤。若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

当本端设备处于主动连接初始状态,且接收到对端设备返回的SYN+ACK报文时,该本端设备会向对端设备发送针对SYN+ACK报文的ACK报文,至此,该本端设备与该对端设备完成TCP连接的建立过程。由于本申请针对HTTP协议(Hyper Text Transfer Protocol,超文本传输协议)中请求小,响应大的情况,所以,当该本端设备的当前状态为主动连接初始状态时,预测下一状态为纯接收状态(本端设备在该纯接收状态下,仅接收对端设备发送的数据报文,而不向对端设备发送数据报文),其中,该纯接收状态中的第一特征包括:该本端设备接收到的TCP报文为数据报文,且该数据报文的确认号等于该本端设备待发送的TCP报文的序列号,该数据报文的序列号等于该本端设备待接收的TCP报文的序列号(在TCP连接正常的情况下,即不出现丢包、重传与乱序的情况)。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文(数据报文)转入与纯接收状态对应的快速处理流程;若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

2、传输TCP报文

当本端设备处于纯接收状态时,由于该本端设备仅接收对端设备发送的数据报文,而不向对端设备发送数据报文,所以,当该本端设备的当前状态为纯接收状态时,预测下一状态为纯接收状态,其中,该纯接收状态中的第一特征包括:该本端设备接收到的TCP报文为数据报文,且该数据报文的确认号等于该本端设备待发送的TCP报文的序列号,该数据报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文(数据报文)转入与纯接收状态对应的快速处理流程;若预测失败,则将接收到的TCP报文转入标准处理流程。由于预测失败,即该本端设备不处于纯接收状态,存在该本端设备已经接收完对端设备发送的数据报文,而本端设备需要向对端设备发送数据报文的情况,所以,在该本端设备的当前状态为纯接收状态,且预测下一状态是纯接收状态为错误的情况下,当该本端设备发送的数据报文未被确认时,预测该本端设备接下来所处的状态为纯发送状态(本端设备在该纯发送状态下,仅向对端设备发送数据报文,而不接收对端设备发送的数据报文)。其中,该纯发送状态中的第一特征包括:该本端设备接收到的TCP报文为针对数据报文的ACK报文,且该针对数据报文的ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该针对数据报文的ACK报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文(针对数据报文的ACK报文)转入与纯发送状态对应的快速处理流程。由于该本端设备实际所处的状态即为预测的状态(纯发送状态),该本端设备实际接收到的TCP报文即为预计接收到的TCP报文(针对数据报文的ACK报文),所以在与纯发送状态对应的快速处理流程中,可以省略判断TCP连接状态与判断TCP报文合法性的步骤;同时,还可以简化TCP拥塞控制的过程,由于该本端设备在纯发送状态下,接收到的针对数据报文的ACK报文是对已经发送的数据报文的确认,所以网络中不存在丢失报文的情况,同时,由于该ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该ACK报文的序列号等于该本端设备待接收的TCP报文的序列号,所以网络中也不存在报文乱序的情况,因此,在TCP拥塞控制的过程中,可以省略主动重传处理流程,针对ACK报文中TCP选项的SACK部分的处理流程,以及由于丢失报文、报文乱序而导致的拥塞避免、快速恢复等流程,而只需要根据接收到的ACK报文进行更新计算拥塞窗口、发送窗口等拥塞控制参数即可。若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

当本端设备处于纯发送状态,且该本端设备已经发送完数据报文时,由于该本端设备已经发送完数据报文,接下来只需要接收对端设备发送的数据报文即可,所以,当该本端设备的当前状态为纯发送状态,且已经发送完数据报文时,预测下一状态为纯接收状态,其中,该纯接收状态中的第一特征包括:该本端设备接收到的TCP报文为数据报文,且该数据报文的确认号等于该本端设备待发送的TCP报文的序列号,该数据报文的序列号等于该本端设备待接收的TCP报文的序列号。而当本端设备处于纯发送状态,且该本端设备未发送完数据报文时,由于该本端设备未发送完数据报文,接下来需要继续发送数据报文。所以,当该本端设备的当前状态为纯发送状态,且该本端设备未发送完数据报文时,预测下一状态为纯发送状态,其中,该纯发送状态中的第一特征包括:该本端设备接收到的TCP报文为针对数据报文的ACK报文,且该针对数据报文的ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该针对数据报文的ACK报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中(包括该本端设备是否发送完数据报文两种情况),则将接收到的TCP报文转入与当前状态对应的快速处理流程;若预测失败(包括该本端设备是否发送完数据报文两种情况),则将接收到的TCP报文转入标准处理流程。

当预测的下一状态为纯接收状态,或者为纯发送状态时,若预测失败(即实际接收的TCP报文的第二特征,与预计接收的TCP报文的第一特征不匹配),则将接收到的TCP报文转入标准处理流程。当在该标准处理流程中,本端设备发送的数据报文未被确认时,需要该本端设备重新发送该未被确认的数据报文,因此,预测接下来该本端设备所处的状态为纯发送状态。其中,该纯发送状态中的第一特征包括:该本端设备接收到的TCP报文为针对数据报文的ACK报文,且该针对数据报文的ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该针对数据报文的ACK报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文转入与纯发送状态对应的快速处理流程;若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

3、断开TCP连接

当预测的下一状态为纯接收状态,或者为纯发送状态时,若预测失败,则将接收到的TCP报文转入标准处理流程。当在该标准处理流程中,本端设备接收到了FIN报文时,即说明对端设备要求断开TCP连接,在TCP连接正常的情况下,该本端设备会向对端设备发送一FIN报文,待该本端设备发送完FIN报文后,该本端设备处于第三断开连接状态,此时,该本端设备将收到对端设备返回的针对该FIN报文的ACK报文。因此,预测接下来该本端设备所处的状态为第三断开连接状态。其中,该第三断开连接状态中的第一特征包括:该本端设备接收到的TCP报文为针对FIN报文的ACK报文,且该针对FIN报文的ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该针对FIN报文的ACK报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文转入与第三断开连接状态对应的快速处理流程;由于该本端设备实际所处的状态即为预测的状态(第三断开连接状态),该本端设备实际接收到的TCP报文即为预计接收到的TCP报文(针对FIN报文的ACK报文),所以在与第三断开连接状态对应的快速处理流程中,可以省略判断TCP连接状态与判断TCP报文合法性的步骤;同时,由于TCP流量控制与TCP拥塞控制针对的是本端设备与对端设备之间传输数据报文的情况,而在第三断开连接状态下,本端设备与对端设备之间传输的TCP报文皆为非数据报文,所以可以省略TCP流量控制与TCP拥塞控制的步骤。若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

当本端设备在当前状态下发送了FIN报文时,说明本端设备请求断开TCP连接,此时该本端设备处于第一断开连接状态。在TCP连接正常的情况下,对端设备将返回一针对该FIN报文的ACK报文。因此,当本端设备发送了FIN报文时,预测下一状态为第一断开连接状态。其中,该第一断开连接状态中的第一特征包括:该本端设备接收到的TCP报文为针对FIN报文的ACK报文,且该针对FIN报文的ACK报文的确认号等于该本端设备待发送的TCP报文的序列号,该针对FIN报文的ACK报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文转入与第一断开连接状态对应的快速处理流程;由于该本端设备实际所处的状态即为预测的状态(第一断开连接状态),该本端设备实际接收到的TCP报文即为预计接收到的TCP报文(针对FIN报文的ACK报文),所以在与第一断开连接状态对应的快速处理流程中,可以省略判断TCP连接状态与判断TCP报文合法性的步骤;同时,由于TCP流量控制与TCP拥塞控制针对的是本端设备与对端设备之间传输数据报文的情况,而在第一断开连接状态下,本端设备与对端设备之间传输的TCP报文皆为非数据报文,所以可以省略TCP流量控制与TCP拥塞控制的步骤。若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

当本端设备处于第一断开连接状态,且接收到对端设备返回的针对FIN报文的ACK报文时,该本端设备进入第二断开连接状态,在TCP连接正常的情况下,该本端设备将接收到对端设备发送的FIN报文。因此,当本端设备的当前状态为第一断开连接状态时,预测下一状态为第二断开连接状态。其中,该第二断开连接状态中的第一特征包括:该本端设备接收到的TCP报文为FIN报文,且该FIN报文的确认号等于该本端设备待发送的TCP报文的序列号,该FIN报文的序列号等于该本端设备待接收的TCP报文的序列号。然后,根据实际接收到的TCP报文的第二特征,与该第一特征进行匹配,判断是否预测命中。若预测命中,则将接收到的TCP报文转入与第二断开连接状态对应的快速处理流程;由于该本端设备实际所处的状态即为预测的状态(第二断开连接状态),该本端设备实际接收到的TCP报文即为预计接收到的TCP报文(FIN报文),所以在与第二断开连接状态对应的快速处理流程中,可以省略判断TCP连接状态与判断TCP报文合法性的步骤;同时,由于TCP流量控制与TCP拥塞控制针对的是本端设备与对端设备之间传输数据报文的情况,而在第二断开连接状态下,本端设备与对端设备之间传输的TCP报文皆为非数据报文,所以可以省略TCP流量控制与TCP拥塞控制的步骤。若预测失败,则接下来终止对该本端设备的状态进行预测,后续接收到的TCP报文皆转入标准处理流程。

当本端设备处于第二断开连接状态,并接收到对端设备发送的FIN报文时,在TCP连接正常的情况下,将向对端设备返回针对该FIN报文的ACK报文,至此,本端设备与对端设备完成了断开TCP连接的过程。当本端设备处于第三断开连接状态,并接收到对端设备返回的针对FIN报文的ACK报文时,本端设备与对端设备完成断开TCP连接的过程。因此,当本端设备的当前状态为第二断开连接状态,或者为第三断开连接状态时,接下来终止对该本端设备的状态进行预测。

由以上技术方案可见,本申请根据本端设备在TCP连接中所处的当前状态,对该本端设备所处的下一状态进行预测,然后,根据实际接收到的TCP报文的第二特征,与下一状态中包含的第一特征进行匹配,若该第二特征与该第一特征相匹配,则预测命中,将接收到的TCP报文转入相应的快速处理流程,该快速处理流程相比于标准处理流程,在保证对TCP报文进行正确处理的前提下,省略了没必要执行的步骤,或者为简化了相应的处理流程,从而加快了该本端设备对TCP报文的处理速度,减少了对该本端设备的处理资源的占用,进一步提升了该本端设备的性能。若该第二特征与该第一特征不匹配,则预测失败,将接收到的TCP报文转入标准处理流程,从而保证了该本端设备对TCP报文的正常处理。

图4示出了根据本申请的一示例性实施例的电子设备的示意结构图。请参考图4,在硬件层面,该电子设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。处理器402从非易失性存储器410中读取对应的计算机程序到内存402中然后运行,在逻辑层面上形成TCP报文的处理装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图5,在软件实施方式中,该TCP报文的处理装置可以包括预测单元501、匹配单元502、第一转入单元503和第二转入单元504。其中:

预测单元501,根据所述本端设备在TCP连接中所处的当前状态,以及预设置的预测规则,预测所述本端设备在TCP连接中所处的下一状态,所述下一状态包含所述本端设备预计接收到的TCP报文的第一特征;

匹配单元502,根据所述本端设备实际接收到的TCP报文的第二特征,将所述第一特征与所述第二特征进行匹配;

第一转入单元503,当所述第一特征与所述第二特征相匹配时,将所述实际接收到的TCP报文转入所述下一状态对应的快速处理流程。

可选的,还包括:

第二转入单元504,当所述第一特征与所述第二特征不匹配时,将所述实际接收到的TCP报文转入标准处理流程。

可选的,所述快速处理流程省略了所述标准处理流程中与所述下一状态无关的处理步骤。

可选的,所述第一特征包括以下至少之一:所述预计接收到的TCP报文的类型为预设类型;所述预计接收到的TCP报文的确认号等于所述本端设备待发送的TCP报文的序列号;所述预计接收到的TCP报文的序列号等于所述本端设备待接收的TCP报文的序列号;

所述第二特征包括以下至少之一:所述实际接收到的TCP报文的类型;所述实际接收到的TCP报文的确认号;所述实际接收到的TCP报文的序列号。

可选的,所述根据所述本端设备在TCP连接中所处的当前状态,以及预设置的预测规则,预测所述本端设备在TCP连接中所处的下一状态,包括:

当所述当前状态为被动连接初始状态时,预测所述下一状态为被动连接状态;其中,所述被动连接初始状态中的第一特征包括:所述本端设备接收到的TCP报文为SYN报文;以及,所述被动连接状态中的第一特征包括:所述本端设备接收到的TCP报文为针对SYN+ACK报文的ACK报文,且所述针对SYN+ACK报文的ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述针对SYN+ACK报文的ACK报文的序列号等于所述本端设备待接收的TCP报文的序列号;

当所述当前状态为主动连接初始状态时,预测所述下一状态为纯接收状态;其中,所述主动连接初始状态中的第一特征包括:所述本端设备接收到的TCP报文为SYN+ACK报文,且所述SYN+ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号;以及,所述纯接收状态中的第一特征包括:所述本端设备接收到的TCP报文为数据报文,且所述数据报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述数据报文的序列号等于所述本端设备待接收的TCP报文的序列号;其中,当所述本端设备在所述纯接收状态下时,所述本端设备仅接收数据报文;

当所述当前状态为被动连接状态时,预测所述下一状态为纯接收状态;

当所述当前状态为纯接收状态时,预测所述下一状态为纯接收状态;

当所述当前状态为纯发送状态,且所述本端设备已经发送完数据报文时,预测所述下一状态为纯接收状态;其中,所述纯发送状态中的第一特征包括:所述本端设备接收到的TCP报文为针对数据报文的ACK报文,且所述针对数据报文的ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述针对数据报文的ACK报文的序列号等于所述本端设备待接收的TCP报文的序列号;其中,当所述本端设备在所述纯发送状态下时,所述本端设备仅发送数据报文;

当所述当前状态为纯发送状态,且所述本端设备未发送完数据报文时,预测所述下一状态为纯发送状态;

当所述本端设备在当前状态下发送了FIN报文时,预测所述下一状态为第一断开连接状态;

当所述当前状态为第一断开连接状态时,预测所述下一状态为第二断开连接状态;其中,所述第一断开连接状态中的第一特征包括:所述本端设备接收到的TCP报文为针对FIN报文的第一ACK报文,且所述针对FIN报文的第一ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述针对FIN报文的第一ACK报文的序列号等于所述本端设备待接收的TCP报文的序列号;以及,所述第二断开连接状态中的第一特征包括:所述本端设备接收到的TCP报文为FIN报文,且所述FIN报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述FIN报文的序列号等于所述本端设备待接收的TCP报文的序列号;

当所述当前状态为第二断开连接状态,或者第三断开连接状态时,终止对所述下一状态进行预测;其中,所述第三断开连接状态中的第一特征包括:所述本端设备接收到的TCP报文为针对FIN报文的第二ACK报文,且所述针对FIN报文的第二ACK报文的确认号等于所述本端设备待发送的TCP报文的序列号,所述针对FIN报文的第二ACK报文的序列号等于所述本端设备待接收的TCP报文的序列号。

可选的,还包括:

当预测所述下一状态为纯接收状态,或者为纯发送状态时,若所述第一特征与所述第二特征不匹配,且所述本端设备发送的数据报文存在未被确认的情况,则预测所述下一状态的后一状态为纯发送状态;

当预测所述下一状态为纯接收状态,或者为纯发送状态时,若所述第一特征与所述第二特征不匹配,且所述本端设备接收到FIN报文,则预测所述下一状态的后一状态为第三断开连接状态。

可选的,所述快速处理流程包括:

当预测所述下一状态为主动连接初始状态,或者为被动连接状态时,所述快速处理流程省略了判断TCP连接状态,以及判断TCP报文合法性的步骤;

当预测所述下一状态为纯发送状态时,所述快速处理流程省略了判断TCP连接状态与判断TCP报文合法性的步骤,以及简化了TCP拥塞控制的过程;

当预测所述下一状态为纯接收状态时,所述快速处理流程省略了判断TCP连接状态、判断TCP报文合法性与TCP流量控制的步骤,以及简化了TCP拥塞控制的过程;

当预测所述下一状态为第一断开连接状态、第二断开连接状态、第三断开连接状态中任一状态时,所述快速处理流程省略了判断TCP连接状态、判断TCP报文合法性、TCP流量控制以及TCP拥塞控制的步骤。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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