一种TCP粘包处理方法、服务器及系统与流程

文档序号:11590281阅读:395来源:国知局
一种TCP粘包处理方法、服务器及系统与流程

本发明属于数据处理领域,尤其涉及一种tcp粘包处理方法、服务器及系统。



背景技术:

tcp(transmissioncontrolprotocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。虽然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粘包处理服务器的结构示意图。

具体实施方式

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

图1是本发明的一种tcp粘包处理方法的流程示意图。

如图1所示,本发明的一种tcp粘包处理方法,该方法适用于网络通信接收方,包括:

s101:接收网络通信发送方按照预定义的tcp传输的数据帧结构打包传输来的数据;

其中,所述预定义的tcp传输的数据帧结构包括帧头、帧长度和帧校验。

所谓数据帧(dataframe),指应用层的数据包,它包括三部分:帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据包。

s102:每接收到一帧数据的同时,解析当前帧数据的数据帧结构。

具体地,当接收当一帧数据后,其解析方法是利用现有的方法,来分析当前帧的结构包括帧头、帧长度和帧校验,分别得到当前帧的这些信息。

s103:判断接收到的每帧数据的开头字节是否为帧头,若是,则根据预定义的数据帧结构来判定当前帧数据的完整性;否则,保存数据并标记为断包数据段;

若当前帧数据的帧长度等于预定义的数据帧结构长度,则当前帧数据为一个完整帧数据;

若当前帧数据的帧长度大于预定义的数据帧结构长度,则对当前帧数据进行拆解处理,并继续判断拆解处理后最后一段数据的完整性,若不完整,则保存数据并与断包数据段做拼包处理形成一个完整帧的数据。

具体地,对当前帧数据进行拆解处理的过程为:

按预定义的数据帧结构长将当前帧数据拆分成若干段数据;

解析分成的最后一段数据的帧长度,并与预定义的数据帧结构长度比较,若前者等于后者,则当前帧数据进行拆解处理后均拆解成若干个完整帧数据;若前者小于后者,则最后一段数据不完整,则为保存该段数据。

本发明将接收到的网络通信发送方按照预定义的tcp传输的数据帧结构打包传输来的数据进行解析,得到当前帧数据的数据帧结构;再判断接收到的每帧数据的开头字节是否为帧头,并根据预定义的数据帧结构来判定当前帧数据的完整性,若当前帧数据的帧长度大于预定义的数据帧结构长度,则对当前帧数据进行拆解处理,并继续判断拆解处理后最后一段数据的完整性,若不完整,则保存数据并与断包数据段做拼包处理形成一个完整帧的数据。该方法按定义协议采用递归算法逐层拆、拼处理可以解决tcp传输过程中存在的任意数量、形式的粘包问题,确保传输过程中能及时准确地处理接收到的数据。

图2是本发明的一种tcp粘包处理服务器的结构示意图。

如图2所示,本发明的tcp粘包处理服务器,该服务器为网络通信接收方服务器,包括:

(1)数据接收模块,其用于接收网络通信发送方按照预定义的tcp传输的数据帧结构打包传输来的数据;

所述预定义的tcp传输的数据帧结构包括帧头、帧长度和帧校验。

所谓数据帧(dataframe),指应用层的数据包,它包括三部分:帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据包。

(2)数据解析模块,其用于每接收到一帧数据的同时,解析当前帧数据的数据帧结构。

(3)数据帧头及完整性判断模块,其用于判断接收到的每帧数据的开头字节是否为帧头,若是,则根据预定义的数据帧结构来判定当前帧数据的完整性;否则,保存数据并标记为断包数据段;

若当前帧数据的帧长度等于预定义的数据帧结构长度,则当前帧数据为一个完整帧数据;

若当前帧数据的帧长度大于预定义的数据帧结构长度,则对当前帧数据进行拆解处理,并继续判断拆解处理后最后一段数据的完整性,若不完整,则保存数据并与断包数据段做拼包处理形成一个完整帧的数据。

其中,所述数据帧头及完整性判断模块还包括:

数据拆解模块,其用于按预定义的数据帧结构长将当前帧数据拆分成若干段数据;

完整性判断模块,其用于解析分成的最后一段数据的帧长度,并与预定义的数据帧结构长度比较,若前者等于后者,则当前帧数据进行拆解处理后均拆解成若干个完整帧数据;若前者小于后者,则最后一段数据不完整,则为保存该段数据。

本发明将接收到的网络通信发送方按照预定义的tcp传输的数据帧结构打包传输来的数据进行解析,得到当前帧数据的数据帧结构;再判断接收到的每帧数据的开头字节是否为帧头,并根据预定义的数据帧结构来判定当前帧数据的完整性,若当前帧数据的帧长度大于预定义的数据帧结构长度,则对当前帧数据进行拆解处理,并继续判断拆解处理后最后一段数据的完整性,若不完整,则保存数据并与断包数据段做拼包处理形成一个完整帧的数据。该方法按定义协议采用递归算法逐层拆、拼处理可以解决tcp传输过程中存在的任意数量、形式的粘包问题,确保传输过程中能及时准确地处理接收到的数据。

本发明的tcp粘包处理系统,该系统包括tcp粘包处理服务器;

所述tcp粘包处理服务器,被配置为:

接收网络通信发送方按照预定义的tcp传输的数据帧结构打包传输来的数据;

每接收到一帧数据的同时,解析当前帧数据的数据帧结构;

判断接收到的每帧数据的开头字节是否为帧头,若是,则根据预定义的数据帧结构来判定当前帧数据的完整性;否则,保存数据并标记为断包数据段;

若当前帧数据的帧长度等于预定义的数据帧结构长度,则当前帧数据为一个完整帧数据;

若当前帧数据的帧长度大于预定义的数据帧结构长度,则对当前帧数据进行拆解处理,并继续判断拆解处理后最后一段数据的完整性,若不完整,则保存数据并与断包数据段做拼包处理形成一个完整帧的数据。

所述tcp粘包处理服务器与网络通信接收方服务器相连,网络通信接收方服务器将接收到的数据发送至tcp粘包处理器进行处理。

其中,预定义的tcp传输的数据帧结构包括帧头、帧长度和帧校验。所谓数据帧(dataframe),指应用层的数据包,它包括三部分:帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据包。

本发明的tcp粘包处理服务器还被配置为:

按预定义的数据帧结构长将当前帧数据拆分成若干段数据;

解析分成的最后一段数据的帧长度,并与预定义的数据帧结构长度比较,若前者等于后者,则当前帧数据进行拆解处理后均拆解成若干个完整帧数据;若前者小于后者,则最后一段数据不完整,则为保存该段数据。

本发明将接收到的网络通信发送方按照预定义的tcp传输的数据帧结构打包传输来的数据进行解析,得到当前帧数据的数据帧结构;再判断接收到的每帧数据的开头字节是否为帧头,并根据预定义的数据帧结构来判定当前帧数据的完整性,若当前帧数据的帧长度大于预定义的数据帧结构长度,则对当前帧数据进行拆解处理,并继续判断拆解处理后最后一段数据的完整性,若不完整,则保存数据并与断包数据段做拼包处理形成一个完整帧的数据。该方法按定义协议采用递归算法逐层拆、拼处理可以解决tcp传输过程中存在的任意数量、形式的粘包问题,确保传输过程中能及时准确地处理接收到的数据。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

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