[发明专利]一种处理传输控制协议粘包方法及装置在审

专利信息
申请号: 201410664108.0 申请日: 2014-11-20
公开(公告)号: CN104410613A 公开(公告)日: 2015-03-11
发明(设计)人: 严毅;邓焕根;龙邹 申请(专利权)人: 广西大学
主分类号: H04L29/06 分类号: H04L29/06
代理公司: 暂无信息 代理人: 暂无信息
地址: 530004 广西*** 国省代码: 广西;45
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 处理 传输 控制 协议 方法 装置
【说明书】:

技术领域

本申请涉及通信领域。尤其涉及一种处理传输控制协议粘包方法及装置。 

背景技术

传输控制协议(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消息中获取消息头,并读取所述消息头记录的数据长度; 

提取单元,用于根据所述获取单元读取的消息头记录的数据长度从接收缓冲区中提取完整数据。 

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广西大学,未经广西大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410664108.0/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top