基于DFA的HTTP分块传输编码的传输载荷提取方法.pdf

上传人:1*** 文档编号:470161 上传时间:2018-02-18 格式:PDF 页数:6 大小:316.29KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410001517.2

申请日:

2014.01.02

公开号:

CN104767710A

公开日:

2015.07.08

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):H04L 29/06申请日:20140102|||公开

IPC分类号:

H04L29/06

主分类号:

H04L29/06

申请人:

中国科学院声学研究所; 北京中科智网科技有限公司

发明人:

陈君; 李明哲; 樊皓; 陈晓; 郭秀岩

地址:

100190北京市海淀区北四环西路21号

优先权:

专利代理机构:

北京法思腾知识产权代理有限公司11318

代理人:

杨小蓉; 杨林

PDF下载: PDF下载
内容摘要

本发明涉及一种基于DFA的HTTP分块传输编码的传输载荷提取方法,包括:在HTTP报文流中,利用用于实现正则表达式匹配的DFA引擎逐个匹配分块传输编码模式串,以定位所有分块传输编码模式串的起止位置;其中,所述分块传输编码模式串为正则表达式,包含IETF RFC2616中所描述的chunk-size字段及其之前与之后的回车换行符;提取全部的相邻两个分块传输编码模式串之间的数据,获得HTTP有效载荷数据。

权利要求书

1.  一种基于DFA的HTTP分块传输编码的传输载荷提取方法,包括:
在HTTP报文流中,利用用于实现正则表达式匹配的DFA引擎逐个匹配分块传输编码模式串,以定位所有分块传输编码模式串的起止位置;其中,所述分块传输编码模式串为正则表达式,包含IETF RFC2616中所描述的chunk-size字段及其之前与之后的回车换行符;
提取全部的相邻两个分块传输编码模式串之间的数据,获得HTTP有效载荷数据。

2.
  根据权利要求1所述的基于DFA的HTTP分块传输编码的传输载荷提取方法,其特征在于,所述分块传输编码模式串用正则表达式表达为:“\r\n[0-9A-Fa-f]+\r\n”。

3.
  根据权利要求2所述的基于DFA的HTTP分块传输编码的传输载荷提取方法,其特征在于,该方法进一步包括:
步骤1)、输入HTTP报文流后,将当前位置设置为该输入HTTP报文流的第一个字节,或第一个chunk-size字段位置之前的某个位置;
步骤2)、在所输入的HTTP报文流中匹配当前位置之后的下一个符合正则表达式“\r\n[0-9A-Fa-f]+\r\n”的字段,将匹配字段记作“当前分块传输编码模式串字段”,获得该字段的结束位置的下一个字节的位置,将当前位置设置为该位置,同时将载荷起始位置也设置为该位置;
步骤3)、匹配当前位置之后的下一个符合正则表达式“\r\n[0-9A-Fa-f]+r\n”的字段,记作“下一个分块传输编码模式串字段”;如果匹配到了下一个分块传输编码模式串字段,则获得该字段起始位置的前一个字节所在位置,将载荷结束位置设置为该位置,并获得该字段结束位置之后的下一个字节所在位置,将当前位置设置为这一位置;若整个报文不存在下一个分块传输编码模式串字段,说明已经完成全部匹配,结束本次解析;
步骤4)、将载荷起始位置到载荷结束位置之间所包含的所有字节为chunk-data,为本分块的有效载荷,然后重新执行从步骤3)开始执行。

4.
  根据权利要求1所述的基于DFA的HTTP分块传输编码的传输载荷提取方法,其特征在于,所述DFA引擎为提供正则表达式匹配功能的硬件模块或模块集, 或者是实现正则表达式匹配的软件模块或模块集,或者是实现正则表达式匹配的软件模块和硬件模块的结合。

说明书

基于DFA的HTTP分块传输编码的传输载荷提取方法
技术领域
本发明涉及网络传输领域,特别涉及一种基于DFA的HTTP分块传输编码的传输载荷提取方法。
背景技术
协议用于描述各种计算机应用中及应用间的通信方式。在通讯过程中,通讯的两方将通信内容封装在协议中,再将协议字符串传递给对方,对方收到该协议字符串后,需要从协议字符串中解析出通信内容。从协议字符串解析出通信内容的过程被称为协议解析,协议解析已经成为网络应用中的一种不可或缺的技术。如何快速地实现协议解析,将会直接影响计算机系统的性能。
协议解析的本质为字符串中协议字段的查找。现有技术中实现协议解析的方法包括:纯软件的协议解析、基于字符串匹配算法的协议解析和基于硬件的协议解析。纯软件的协议解析方法使用操作系统中的字符串查找和比较函数来实现协议解析,其性能非常有限。基于字符串匹配算法的协议解析方法虽然比使用操作系统的字符串函数快很多,但还是受服务器芯片性能限制而越来越无法满足高并发、大数据量的网络应用需求。随着网络应用的快速发展,出现了基于硬件的协议解析方法,这种方法虽然性能很高但扩展性很差,只能适用于一些预设的固定场景。
HTTP协议的消息格式包含消息首部和消息体。在消息首部中定义了一些属性字段,这些字段向报文接收者提供了重要的信息。其中,Content-Length属性字段表示消息体的长度,该字段有利于数据接收过程的编程实现。然而,对于某些动态生成的数据,消息生成者可能无法立即知悉消息体的总长度,从而不能及时计算Content-Length字段值。使用分块传输编码(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,进而发送给终端用户。由于流媒体具有数据量大、传输时间长的特点,流服务器将会对大量数据进行分块传输编码解析操作,该操作的效率对于流服务器的整体性能至关重要。现有技术中的协议解析方法效率不高,不太适合于数据量大、传输时间长的流媒体应用环境。
发明内容
本发明的目的在于克服现有技术中的协议解析方法效率不高的缺陷,从而提供一种高效的协议解析方法。
为了实现上述目的,本发明提供了一种基于DFA的HTTP分块传输编码的传输载荷提取方法,包括:
在HTTP报文流中,利用用于实现正则表达式匹配的DFA引擎逐个匹配分块传输编码模式串,以定位所有分块传输编码模式串的起止位置;其中,所述分块传输编码模式串为正则表达式,包含IETF RFC2616中所描述的chunk-size字段及其之前与之后的回车换行符;
提取全部的相邻两个分块传输编码模式串之间的数据,获得HTTP有效载荷数据。
上述技术方案中,所述分块传输编码模式串用正则表达式表达为:“\r\n[0-9A-Fa-f]+\r\n”。
上述技术方案中,该方法进一步包括:
步骤1)、输入HTTP报文流后,将当前位置设置为该输入HTTP报文流的第一个字节,或第一个chunk-size字段位置之前的某个位置;
步骤2)、在所输入的HTTP报文流中匹配当前位置之后的下一个符合正则表达式“\r\n[0-9A-Fa-f]+\r\n”的字段,将匹配字段记作“当前分块传输编码模式串字段”,获得该字段的结束位置的下一个字节的位置,将当前位置设置为该位置,同时将载荷起始位置也设置为该位置;
步骤3)、匹配当前位置之后的下一个符合正则表达式“\r\n[0-9A-Fa-f]+r\n”的字 段,记作“下一个分块传输编码模式串字段”;如果匹配到了下一个分块传输编码模式串字段,则获得该字段起始位置的前一个字节所在位置,将载荷结束位置设置为该位置,并获得该字段结束位置之后的下一个字节所在位置,将当前位置设置为这一位置;若整个报文不存在下一个分块传输编码模式串字段,说明已经完成全部匹配,结束本次解析;
步骤4)、将载荷起始位置到载荷结束位置之间所包含的所有字节为chunk-data,为本分块的有效载荷,然后重新执行从步骤3)开始执行。
上述技术方案中,所述DFA引擎为提供正则表达式匹配功能的硬件模块或模块集,或者是实现正则表达式匹配的软件模块或模块集,或者是实现正则表达式匹配的软件模块和硬件模块的结合。
本发明的优点在于:
本发明的方法能够快速地从HTTP分块传输编码中提取出传输载荷,具有效率高、耗时少、可移植性好等优点。
附图说明
图1是本发明方法的流程图。
具体实施方式
在对本发明做详细说明之前,对本发明中所涉及的相关概念做统一描述。
分块传输编码模式串:与RFC2616中所描述的chunk-size字段相同,还包括该字段之前与之后的回车换行符(即CRLF)。如果忽略RFC2616中的chunk-extension字段,则分块传输编码模式串用正则表达式表达为:“\r\n[0-9A-Fa-f]+\r\n”。
chunk-data字段:与RFC2616中所描述的chunk-data字段相同,为HTTP报文流的有效载荷,在协议解析时需要对其进行提取。
DFA引擎:包括提供正则表达式匹配功能的硬件模块或模块集,或者是实现正则表达式匹配的软件模块或模块集,或者软件和硬件模块的结合。DFA引擎不仅要给出指定正则表达式是否存在于指定文本的信息,同时在发现匹配的情况下,给出该正则表达式在该文本中出现的起止位置。
现结合附图对本发明作进一步的描述。
本发明的方法能够实现对HTTP分块传输编码数据的快速解析,参考图1,本发明的方法包括以下步骤:
步骤1)、输入HTTP报文流后,将当前位置设置为该输入HTTP报文流的第一 个字节,或第一个chunk-size字段位置之前的某个位置;
步骤2)、在所输入的HTTP报文流中匹配当前位置之后的下一个符合正则表达式“\r\n[0-9A-Fa-f]+\r\n”的字段,将匹配字段记作“当前分块传输编码模式串字段”,获得该字段的结束位置的下一个字节的位置,将当前位置设置为该位置,同时将载荷起始位置也设置为该位置;
步骤3)、匹配当前位置之后的下一个符合正则表达式“\r\n[0-9A-Fa-f]+\r\n”的字段,记作“下一个分块传输编码模式串字段”;如果匹配到了下一个分块传输编码模式串字段,则获得该字段起始位置的前一个字节所在位置,将载荷结束位置设置为该位置,并获得该字段结束位置之后的下一个字节所在位置,将当前位置设置为这一位置;若整个报文不存在下一个分块传输编码模式串字段,说明已经完成全部匹配,可结束本次解析过程。
步骤4)、将载荷起始位置到载荷结束位置之间所包含的所有字节为chunk-data,为本分块有效载荷,依具体应用所需做出适当处理,然后重新执行从步骤3)开始执行。
在上述实施例中,用于表示分块传输编码模式串的正则表达式为“\r\n[0-9A-Fa-f]+\r\n”,在其他实施例中,也可以用其他形式的正则表达式表示分块传输编码模式串,如“\r\n\h+\r\n”。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

基于DFA的HTTP分块传输编码的传输载荷提取方法.pdf_第1页
第1页 / 共6页
基于DFA的HTTP分块传输编码的传输载荷提取方法.pdf_第2页
第2页 / 共6页
基于DFA的HTTP分块传输编码的传输载荷提取方法.pdf_第3页
第3页 / 共6页
点击查看更多>>
资源描述

《基于DFA的HTTP分块传输编码的传输载荷提取方法.pdf》由会员分享,可在线阅读,更多相关《基于DFA的HTTP分块传输编码的传输载荷提取方法.pdf(6页珍藏版)》请在专利查询网上搜索。

本发明涉及一种基于DFA的HTTP分块传输编码的传输载荷提取方法,包括:在HTTP报文流中,利用用于实现正则表达式匹配的DFA引擎逐个匹配分块传输编码模式串,以定位所有分块传输编码模式串的起止位置;其中,所述分块传输编码模式串为正则表达式,包含IETF RFC2616中所描述的chunk-size字段及其之前与之后的回车换行符;提取全部的相邻两个分块传输编码模式串之间的数据,获得HTTP有效载荷数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1