[发明专利]一种解析HTTPchunked编码数据的方法有效

专利信息
申请号: 201310011892.0 申请日: 2013-01-11
公开(公告)号: CN103929404B 公开(公告)日: 2017-02-15
发明(设计)人: 陈君;李明哲;李军;陈晓 申请(专利权)人: 中国科学院声学研究所;北京中科智网科技有限公司
主分类号: H04L29/06 分类号: H04L29/06;H04L1/00
代理公司: 北京法思腾知识产权代理有限公司11318 代理人: 杨小蓉,杨青
地址: 100190 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 解析 httpchunked 编码 数据 方法
【说明书】:

技术领域

发明涉及网络通信领域,特别涉及一种解析HTTP chunked编码数据的方法。

背景技术

HTTP协议的消息格式包含消息首部和消息体。消息首部部分定义了一些属性字段,这些字段向报文接收者提供了重要的信息。其中,Content-Length属性字段表示消息体的长度,该字段有利于数据接收过程的编程实现。然而,对于某些动态生成的数据,消息生成者可能无法立即知悉消息体的总长度,从而不能及时计算Content-Length字段值。使用chunked编码可以回避这一问题。Chunked是HTTP/1.1协议的一种传输编码方式,该传输编码方式将待传输数据切割为多个部分,报文只需提供每个部分的长度。编码后的消息体是一组连续的编码块(chunk),每个编码块包含了传输数据块(chunk-data)及其长度(chunk-size),其格式定义如下:

chunk=chunk-size[chunk-extension]CRLF chunk-data CRLF

其中,chunk-size是chunk-data的长度,为十六进制字符串。CRLF为双字节换行符,其ASCII码值为0x0d0x0a。可选的chunk-extension格式用一组“name=value”字段组成,但RFC2616未对这些字段进行定义,并规定接收者忽略不能识别的字段。

流媒体业务的分发和传输过程使用了HTTP协议,对节目内容进行chunked编码。流服务器通过TCP协议接收报文,解码后,以UDP方式推送给IPQAM,进而发送给终端用户。由于流媒体具有数据量大、传输时间长的特点,流服务器将会对大量数据进行chunked解码操作,因此,chunked解码过程的效率对于流服务器的整体性能至关重要。选择不同的chunked编码解析方式,能够给系统的开发效率、运行性能都能带来相当大的影响。

作为对chunked解析的一种最简单的实现,离线解析方法先将一个完整的HTTP报文通过网络编程技术复制到本地一个连续、单一的应用层缓冲区,再基于这个连续缓冲区根据chunked编码规则提取有效数据,将解析出的数据拷贝到有效内容缓冲区。HTTP chunked编码离线解析法导致解码过程中会产生两次内存拷贝,造成内存占用多、处理延迟高的问题。且离线解析法适合于原型系统开发,并不适合产品开发环境。

发明内容

本发明的目的在于克服现有的HTTP chunked编码离线解析法内存占用多、处理延迟高的缺陷,从而提供一种能够快速解析HTTP chunked编码的方法。

为了实现上述目的,本发明提供了一种解析HTTP chunked编码数据的方法,包括:

步骤1)、定位到所接收的HTTP报文中任一chunk的起始位置;

步骤2)、根据当前的解析状态对chunk中的chunk-size字段的长度进行预测;其中,所述解析状态指一个chunk的读取过程的完成程度;

步骤3)、根据前一步骤所得到的预测长度读取相应长度的chunk-size数据并缓存,对当前缓存的全部chunk-size数据加以分析,根据分析结果判断是否已经完成对整个chunk-size字段的读取,若已完成,执行下一步,否则,基于当前缓存的全部chunk-size数据分析解析状态,并重新执行步骤2);

步骤4)、根据整个chunk-size字段值,读取chunk-data中的数据。

上述技术方案中,在所述的步骤2)中,将当前解析状态下chunk-size字段尚未被读取的字节数可能的最小值作为预测的长度值;包括:

若当前解析状态为“空串”,则chunk-size字段尚未被读取的字节数可能的最小值为5;

若当前解析状态为“已读取1字节”,则chunk-size字段尚未被读取的字节数可能的最小值为4;

若当前解析状态为“已读取2字节”,则chunk-size字段尚未被读取的字节数可能的最小值为3;

若当前解析状态为“已读取3字节且未遭遇字段末尾的CR”,则chunk-size字段尚未被读取的字节数可能的最小值为2;

若当前解析状态为“读到了字段末尾的CR”,则chunk-size字段尚未被读取的字节数可能的最小值为1;

若当前解析状态为“读到了字段末尾的LF”,则chunk-size字段尚未被读取的字节数可能的最小值为0。

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

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院声学研究所;北京中科智网科技有限公司,未经中国科学院声学研究所;北京中科智网科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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