一种xml报文的获取方法和装置的制作方法

文档序号:7722794阅读:144来源:国知局
专利名称:一种xml报文的获取方法和装置的制作方法
技术领域
本发明涉及网络技术领域,尤其涉及一种XML报文的获取方法和装置。
背景技术
XML(Extensible Markup Language,可扩展标记语言)是一种用于Web页面数据交换的技术。用户在上网时,获取并显示页面的基本过程包括以下步骤Web服务器发送TCP (Transmission Control Protocol/Internet Protocol,传输控制协议)报文,在 TCP报文中承载 XML、HTML (Hypertext MarkupLanguage,超文本标记语言)、XSL (extensibleStylesheet Language,可扩展样式表语言)等报文的源代码,用户侧通过浏览器如IE在本地对TCP报文中的内容进行解析,根据解析结果显示出用户请求获取的Web页面。
报文,并将XML报文转发到特定的功能模块进行处理。例如可以将XML报文转发到应用加速功能或者负载均衡处理功能模块,进行XML报文的特殊处理以实现不同的目的。而现有技术中尚缺乏对XML报文进行深度分析的方法。

发明内容
本发明提供一种XML报文的获取方法和装置,用于获取传输的报文中包括的XML报文以进行相应的深度处理。
本发明提供了一种XML报文的获取方法,包括 对接收到的报文进行解封装; 在解封装后的内容中查找XML报文的特征码; 查找到特征码时,在所述解封装后的内容中查找结束标识符,根据所述特征码以及结束标识符确定XML报文。
其中,所述接收到的报文为分片报文时,所述对接收到的报文进行解封装前,还包括 根据接收到的报文的源地址、目的地址、顺序号Sequence Number以及下一顺序号Next Sequence Number,获取包含同一封装文件的所有分片报文; 所述对接收到的报文进行解封装后,还包括将从包含同一封装文件的所有分片报文中解封装得到的内容进行组合,作为解封装后的内容。
其中,所述对接收到的报文进行解封装包括 根据报文封装格式,从所述报文中依次去掉物理链路层封装内容、IP层封装内容以及TCP层封装内容,所述链路层封装内容、IP层封装内容以及TCP层封装内容的长度由报文封装格式确定。
其中,所述XML报文的特征码包括< xml version =",其同时满足以下匹配条件 xml、version 为小写字母; < X中间不能有任何其他字符; xml之间可以有空格、回车换行或tab键字符; version和=之间可以有空格、回车换行或tab键字符; =和"之间可以有空格、回车换行或tab键字符; < xml version =之间至少要有一个空格或tab键或回车换行字符; 如果I和V之间至少有一个空格或tab键或回车换行字符,则version中间不能任何其他字符; 如果I和V之间没有一个空格或tab键或回车换行字符,则version中间可以有空格、回车换行或tab键字符。
所述在解封装后的内容中查找XML报文的特征码,包括 在解封装后的内容中查找< X的位置; 查找到< X的位置时,获取所述< X的位置之后的字符,当所述< X的位置之后的字符与< X组合后满足上述匹配条件时,判断为在解封装后的内容中查找到了XML报文的特征码。
其中,所述在所述解封装后的内容中查找结束标识符,根据所述特征码以及结束标识符确定XML报文,包括 在所述解封装后的内容中查找< 或<!; 查找到< 或<!时,进一步在所述解封装后的内容中查找> ; 获取〈与〉之间的内容X,将</x>作为结束标识符; 在所述解封装后的内容中查找</x> ; 将所述特征码以及</x>之间的内容确定为XML报文。
本发明还提供了一种XML报文的获取装置,包括 解封装单元,用于对接收到的报文进行解封装; 特征码查找单元,用于在所述解封装单元解封装后的内容中查找XML报文的特征码; XML报文确定单元,用于在所述特征码查找单元查找到特征码时,在所述解封装单元解封装后的内容中查找结束标识符,根据所述特征码以及结束标识符确定XML报文。
其中,当接收到的报文为分片报文时,所述解封装单元,用于根据接收到的报文的源地址、目的地址、顺序号Sequence Number以及下一顺序号NextSequence Number,获取包含同一封装文件的所有分片报文;并将从包含同一封装文件的所有分片报文中解封装得到的内容进行组合,作为解封装后的内容。
其中,所述解封装单元具体用于 对于接收到的报文,根据报文封装格式,从所述报文中依次去掉物理链路层封装内容、IP层封装内容以及TCP层封装内容,得到解封装后的内容;所述链路层封装内容、IP层封装内容以及TCP层封装内容的长度由报文封装格式确定。
其中,所述XML报文的特征码包括< xml version =",其同时满足以下匹配条件 xml、version 为小写字母; < X中间不能有任何其他字符; xml之间可以有空格、回车换行或tab键字符; version和=之间可以有空格、回车换行或tab键字符; =和"之间可以有空格、回车换行或tab键字符; < xml version =之间至少要有一个空格或tab键或回车换行字符; 如果I和V之间至少有一个空格或tab键或回车换行字符,则version中间不能任何其他字符; 如果I和V之间没有一个空格或tab键或回车换行字符,则version中间可以有空格、回车换行或tab键字符。
所述特征码查找单元,具体用于在解封装后的内容中查找< X的位置;查找到< X的位置时,获取所述< X的位置之后的字符,当所述< X的位置之后的字符与 < X组合后满足上述匹配条件时,判断为在解封装后的内容中查找到了 XML报文的特征码。
其中,所述XML报文确定单元,具体用于 在所述解封装后的内容中查找< 或<!; 查找到< 或<!时,进一步在所述解封装后的内容中查找〉; 获取〈与〉之间的内容X,将</x>作为结束标识符; 在所述解封装后的内容中查找</x> ; 将所述特征码以及</x>之间的内容确定为XML报文。
与现有技术相比,本发明具有以下优点 本发明中通过在对报文解封装后的内容中查找XML报文的特征码以及结束标识符,从而确定XML文件的内容;使得可以从传输的报文中分析得到包括的XML报文,便于进行相应的后期深度处理。


图I是本发明中提供的XML报文的获取方法流程图; 图2是本发明中通过抓包处理软件抓包的结果示意图; 图3是本发明中使用的IP报文的格式示意图; 图4是本发明中使用的TCP报文的格式示意图; 图5是本发明中涉及的一个XML报文的内容示意图; 图6是本发明中查找文件序言中“< X”字符的处理流程图; 图7是本发明中查找“mlversion =" ”的处理流程图; 图8是本发明中获取结束标识符的流程图; 图9是本发明中通过抓包处理软件抓取的第一个TCP报文的内容示意图; 图10是本发明中通过抓包处理软件抓取的第二个TCP报文的内容示意图; 图11是本发明中通过抓包处理软件抓取的第三个TCP报文的内容示意图; 图12是本发明中通过抓包处理软件抓取的第四个TCP报文的内容示意图; 图13是本发明中使用的获取所有XML分片报文的流程图; 图14是本发明中使用的XML报文的获取装置的结构示意图。
具体实施例方式本发明提供了一种XML报文的获取方法,其核心思想在于在解封装后的报文中查找XML报文的特征码和结束标识符,根据XML报文的特征码和结束标识符确定网络传输的报文中包括的XML报文,以进行相应的后期深度处理。如图I所示,该XML报文的获取方法包括 步骤slOl、对接收到的报文进行解封装; 步骤sl02、在解封装后的内容中查找XML报文的特征码; 步骤sl03、查找到特征码时,在解封装后的内容中查找结束标识符,根据特征码以及结束标识符确定XML报文。
以下结合具体的实施方式,对本发明中XML报文的获取方法进行详细说明。
对于XML的报文,它封装方式一般为物理链路层-IP-TCP-XML报文。其中物理链路层一般包括Ethernet、WLAN(Wireless Local Area Network,虚拟局域网)等。通过抓包处理软件可以看到网络中传输的XML报文,图2是本发明中通过抓包处理软件抓包看到的一个XML报文的示意图。对于XML报文进行分析时,需要对封装的内容依次进行拆包处理。从网络侧传输的报文中依次去掉物理链路层封装内容、IP层封装内容以及TCP层封装内容以得到XML报文。其中,链路层封装内容、IP层封装内容以及TCP层封装内容的长度由报文封装格式确定。
以物理链路层为Ethernet为例,一个XML报文的封装格式如表I所示 表I. XML报文的封装格式
考虑到拆包时要计算报文各封装部分的长度,现分析封装后的报文的各部分长度如表2所示 表2. IEEE 802. 3中的报文结构
根据表2所示的结构,在去掉8字节(bytes)的前导码(Preamble)、6字节(bytes)的 DMAC(Destination Medium Access Control,目的媒体接入控制)地址、6 字节的SMAC(Source MAC,源媒体接入控制)地址、2字节的类型(Type)以及末尾4字节的FCS (Frame Check Sequence,巾贞校验序列)后,得到Data and Pad,即表3所示的以下内容: 表3对物理链路层内容解封装后的报文结构
IP报文的格式如图3所示,考虑到封装XML报文的IP包一般没有“选项”部分,因此去掉20字节的IP头部后,得到TCP+XML部分的内容。
TCP报文的格式如图4所示,封装XML报文的IP包一般同样没有“选项”部分,因此去掉20字节的TCP头部以后,得到XML报文。
以下结合一个抓取XML报文的实例,描述本发明中XML报文的获取方法的具体实施方式

以通过抓包处理软件得到的一个Ethernet II封装的XML报文为例,去掉Ethernet II头、IP头、TCP头以后,得到XML报文,如图5所示。根据得到的XML报文的ASCII码对XML报文进行还原,得到的XML报文与下面的XML源文件完全对应。其中,ASCII码的“0A”表示换行,“ 20 ”表示空格。
< xml version = " I. O" encoding = " ISO-8859-1" > < ! —Edited with XML Spy v2007 (http://www. altova. com)—> 〈CATALOG〉 〈CD〉 <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <C0UNTRY>USA</C0UNTRY> <C0MPANY>CoIumb i a</C0MPANY> <PRICE>10. 90〈/PRICE> <YEAR>1985</YEAR> 〈/CD〉 ...... 〈CD〉 <TITLE>Unchain my heart</TITLE> <ARTIST>Joe Cocker</ARTIST> <C0UNTRY>USA</C0UNTRY> <C0MPANY>EMI〈/COMPANY〉 <PRICE>8. 20</PRICE> <YEAR>1987</YEAR> 〈/CD〉 〈/CATALOG〉 根据现有的XML标准,XML源文件分为文件序言和文件主体两大部分。
第一行是文件序言,以上述XML源文件为例,文件序言为“< xmlversion="1.0" encoding=" IS0-8859-1;/ > ”。该行是一个XML报文必须要声明的东西,而且也必须位于XML报文的第一行,用于通知XML解析器如何工作。其中,version(版本号)用于指明该XML报文所用标准的版本号,必须携带。Encoding (编码)用于指明该XML报文中所使用的字符类型,可以省略。
XML报文中除第一行文件序言之外的其余部分都是属于文件主体,XML报文的内容信息均存放在文件主体中。
基于上述分析可以获知,在进行XML报文的匹配时,可以采用的特征码为〈? xmlversion=" XX" >,其中XX代表具体的版本号。在处理的时候,可以认为只要匹配到,就可以认为找到XML源文件。因此,本发明中将“< xmlversion=" ”作为特征码。当然,为了增加容错性,可以对第一行序言进行完整的解析。
对于< xml version=",其对应的 16 进制 ASCII 码是3c 3f 78 6d 6c 2076 6572 73 69 65 6e 3d 22。
现有的XML标准中存在以下规定 (I)XML报文的文件序言对于大小写敏感,“Xml”、“VerSion”必须用小写字母。
(2)对于version版本敏感,必须是支持的版本。
(3)版本号字符XX前后、中间不能有空格、回车换行、tab键字符。
(4) “< X”是关键字符,中间不能任何其他字符,包括空格、回车换行、tab键字符。
(5) “xml”之间可以有空格、回车换行、tab键字符。
(6) “version”和“=”之间可以有空格、回车换行、tab键字符。
(7) “ = ”和“"”之间可以有空格、回车换行、tab键字符。
(8) “< xml version = ”之间至少要有一个空格或tab键或回车换行字符。
(9)如果“I”和“V”之间至少有一个空格或tab键或回车换行字符,“version”是关键字符,中间不能任何其他字符,包括有空格、回车换行、tab键字符。
(10)如果“I”和“V”之间没有一个空格或tab键或回车换行字符,“version”中间可以有空格、回车换行、tab键字符。
在第一行文件序言中可以插入的ASCII字符以及对应的编码为
Tab键字符对应的16进制ASCII码值为09 ; 空格键字符对应的16进制ASCII码值为20 ; 回车换行字符对应的16进制ASCII码值为Odoa。
基于上述特征,本发明提供了对文件序言进行匹配查找的方法。其原理为由于< X”中间不能任何其他字符,因此匹配特征码的处理流程可以分为对“< X”的匹配查找以及对“mlversion =" ”的匹配查找两部分进行处理,在查找到“< x”之后,再进一步进行“mlversion =" ”的查找处理。
查找文件序言中“< X”字符的处理流程如图6所示,包括 步骤s601、读取目标一个字节。
步骤s602、判断读取的字节是否是0x3c,如果是,执行步骤603,否则,返回步骤601。
步骤s603、读取目标下一个字节。
步骤s604、判断读取的字节是否是0x3f,如果是,执行步骤605,否则,返回步骤601。
步骤s605、读取目标下一个字节。
步骤s606、判断读取的字节是否是0x78,如果是,执行步骤607,否则,返回步骤601。
步骤s607、判断找到< X’即找到了文件序言起始位置。
查找“mlversion =" ”的处理流程如图7所示,包括 步骤s701、读取特征码一个字符;其中将“mlversion =" ”作为特征码; 步骤s702、读取目标一个字符;其中,将“< X”之后的字符作为目标字符。
步骤s703、判断特征码字符与目标字符是否匹配,如果是,执行步骤s705,否则,执行步骤s704。
步骤s704、判断是否包含分隔符,如果是,执行步骤s710,否则结束流程。
步骤s705、读取特征码下一个字符。
步骤s706、读取目标下一个字符 步骤s707、判断特征码下一个字符与目标下一个字符是否匹配,如果是,执行步骤s708,否则,执行步骤s704。
步骤s708、判断特征码是否结束,如果是,执行步骤s709,否则,返回步骤s705。
步骤s709、判断标识位是否为1,如果是,匹配成功,判断查找到了所需的特征码;否则匹配失败。
步骤s710、将标志位置为I ;该标志位的意义在于判断查找到了分隔符,该分隔符可以为空格、回车换行、tab键字符等字符。其原因在于“< xmlversion =”之间至少要有一个空格或tab键或回车换行字符。
步骤s711、判断特征码是否为0x6c,如果是,执行步骤s712,否则,返回步骤s706。
步骤s712、从特征码中读取version。
步骤s713、从目标读取6个字符。
步骤s714、判断读取的特征码version与目标字符是否匹配,如果是,返回步骤s705,否则结束流程。
匹配失败时,继续对报文中存在的其他“< X”之后的内容执行上述流程。若对报文中包括的“ < X”之后的内容均匹配失败,则结束该报文的查找,继续对下一报文进行处理。
查找到特征码“< xml version =" ”后,即认为找到了 XML文件的头部,为了获得整个XML文件,还需要对XML文件的尾部即结束标识符进行定位。以下介绍结束标识符的定位方法。
根据XML的语法 < xml version = " xxxxxx > (文件序言) 〈name〉(定义元素起始位置,用户可以自定义name。这是一个用户自定义的字符串,称为标识符) ...... 〈/name〉(定义元素结束位置) 因为文件序言全部是〈? xxxxxx >或〈! 一xxxxxx— ! >开头结尾,所以不会与起始结束标识符</χχχχχ>混淆。
获取结束标识符的流程如图8所示,包括 步骤S801、获取一个TCP报文。
步骤s802、匹配XML特征码,匹配成功时,执行步骤803,否则返回步骤s801。
步骤s803、查找“<”字符 。
步骤s804、判断第二个字符是否为“? ”或“ ! ”,如果是,返回执行步骤s803,否则,执行步骤s805。
步骤s805、查找“>”字符。
步骤s806、取出“ < ”和“ > ”之间的字符XXX。
步骤s807、构造起始标识符〈XXX〉。
步骤s808、构造结束标识符〈/XXX〉。
根据XML报文的特征码即文件序言的位置、以及结束标识符的位置,即可确定整个XML报文,XML报文匹配成功以后即可进行后续的深度转发处理,本发明不涉及该后续处理流程的具体实现,这里不再赘述。
另外,当XML文件内容较长、因无法封装携带在一个报文而携带在多个分片报文中时,还涉及对于分片报文的处理流程。
IP报文可以分片。但是XML报文的处理,强制设置为不允许IP层报文分片。所以对于XML报文的处理不需要考虑IP报文分片重组。只要处理TCP报文就可以处理XML分片报文。TCP协议中的数据包默认长度是1460字节,如果一次传输的数据大于这个长度,会把分割成几个长度都不大于1460字节的TCP报文,每个报文都会被赋予一个SequenceNumbeH相当于每个数据包的顺序号,根据该顺序号接收端可以知道接收到的多个TCP报文的前后顺序) 对于TCP报文,可以根据Sequence Number和源地址、目的地址来处理。
例如有一个服务器(IP地址为10. 153. 137. 6)向客户端(IP地址为10. 153. 137. I)发送的XML报文,由于数据长度较大在发送时分为四个TCP报文发送。
通过抓包处理软件抓取的第一个TCP报文的内容如图9所示,第一个TCP报文的长度为1514字节,源地址为10. 153. 137. 6 (服务器),目的地址10. 153. 137. I (客户端);Sequence Number 为 I, next Sequence Number 为 1461。该报文包含 XML 报文的头部。
通过抓包处理软件抓取的第二个TCP报文的内容如图10所示,第二个TCP报文的长度为1514字节,源地址为10. 153. 137. 6(服务器),目的地址为10. 153. 137. I (客户端);Sequence Number 为 1461, next Sequence Number 为 2921。该报文包含 XML 报文的第二部分。
通过抓包处理软件抓取的第三个TCP报文的内容如图11所示,第三个TCP报文的长度为1514字节,源地址为10. 153. 137. 6(服务器),目的地址为10. 153. 137. I (客户端);Sequence Number 为 2921, next Sequence Number 为 4381。该报文包含 XML 报文的第三部分。
如图11所示,在第三个TCP报文之前,还抓取到一个客户端向服务器发送的TCP报文,长度为54字节,源地址为10. 153. 137. I (客户端),目的地址为10. 153. 137. 6 (服务器),该报文为ACK报文。通过对报文的源地址和目的地址进行判断,可以排除这个ACK报文,其不是所需要关心的报文。
通过抓包处理软件抓取的第四个TCP报文的内容如图12所示,第四个TCP报文的长度为582字节,源地址为10. 153. 137. 6 (服务器),目的地址为10. 153. 137. I (客户端);Sequence Number 为 4381, next Sequence Number 为 4909。该报文包含 XML 报文的第四部分,也只最后部分。从该报文中可以看到XML报文的〈/CATALOG〉结束标志。
所以通过目的地址、源地址和Sequence Number>next Sequence Number可以找到分片的XML报文,一个都不会漏掉,也不会重复。
获取所有XML分片报文的流程如图13所示,包括 步骤S1301、获取一个TCP报文。
步骤S1302、匹配源地址和目的地址,当匹配成功时,执行步骤1303,否则返回步骤 sl301。
步骤sl303、取出 Sequence Number 和 Next Sequence Number。
步骤sl304、获取下一个TCP报文。
步骤sl305、匹配源地址和目的地址,当匹配成功时,执行步骤1306,否则返回步骤 sl304。
步骤sl306、取出 Sequence Number 和 Next Sequence Number。
步骤sl307、匹配上一个报文的Next Sequence Number和下一个报文的SequenceNumber,匹配成功时,执行步骤sl308,否则,执行步骤sl304。
步骤S1308、判断是否结束标识符,如果是,执行步骤S1309,否则,执行步骤sl304。
步骤S1309、找到所有XML分片报文。
该过程中需要说明的是,如果出现TCP报文乱序,即在XML的分片报文队列中插入了其他的报文。由于其他报文的5元组(源地址、目的地址、源端口、目的端口、协议)不同,再加上Sequence Number, Next SequenceNumber,仍可以找到连续的分片报文。如果发生丢包,考虑到TCP协议中有发生报文时的报文重传机制,只要重传成功,也能找出连续的分片报文。如果丢包并且重传失败,则XML报文也会传输失败,对于此情况本发明不做考虑。
本发明提供的方法中,通过在对报文解封装后的内容中查找XML报文的特征码以及结束标识符,从而确定XML文件的内容;使得可以从传输的报文中分析得到包括的XML报文,便于进行相应的后期深度处理。
本发明的实施例还提供了一种XML报文的获取装置,如图14所示,包括 解封装单元10,用于对接收到的报文进行解封装;当接收到的报文为分片报文时,解封装单元10,还用于根据接收到的报文的源地址、目的地址、顺序号Sequence Number以及下一顺序号Next Sequence Number,获取包含同一封装文件的所有分片报文;并将从包含同一封装文件的所有分片报文中解封装得到的内容进行组合,作为解封装后的内容。
具体的,解封装单元10在对接收到的报文进行解封装对于接收到的报文时,根据报文封装格式,从所述报文中依次去掉物理链路层封装内容、IP层封装内容以及TCP层封装内容,得到解封装后的内容;其中链路层封装内容、IP层封装内容以及TCP层封装内容的长度由报文封装格式确定。
特征码查找单元20,用于在解封装单元10解封装后的内容中查找XML报文的特征码;XML报文的特征码包括< xml version=",其同时满足以下匹配条件 (I) xml、version 为小写字母; (2) < X中间不能有任何其他字符; (3)xml之间可以有空格、回车换行或tab键字符; (4) version和=之间可以有空格、回车换行或tab键字符; (5)=和"之间可以有空格、回车换行或tab键字符; (6) < xml version =之间至少要有一个空格或tab键或回车换行字符; (7)如果I和V之间至少有一个空格或tab键或回车换行字符,则version中间不能任何其他字符; (8)如果I和V之间没有一个空格或tab键或回车换行字符,则version中间可以有空格、回车换行或tab键字符。
特征码查找单元20,具体用于在解封装后的内容中查找< X的位置;查找到< X的位置时,获取所述< X的位置之后的字符,当< X的位置之后的字符与< X组合后满足上述匹配条件时,判断为在解封装后的内容中查找到了 XML报文的特征码。
XML报文确定单元30,用于在特征码查找单元20查找到特征码时,在解封装单元10解封装后的内容中查找结束标识符,根据查找到的特征码以及结束标识符确定XML报文。具体的确定方法为 在所述解封装后的内容中查找< 或<!; 查找到< 或<!时,进一步在所述解封装后的内容中查找> ; 获取〈与〉之间的内容X,将</x>作为结束标识符; 在所述解封装后的内容中查找</x> ; 将所述特征码以及</x>之间的内容确定为XML报文。
本发明提供的装置中,通过在对报文解封装后的内容中查找XML报文的特征码以及结束标识符,从而确定XML文件的内容;使得可以从传输的报文中分析得到包括的XML报文,便于进行相应的后期深度处理。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的单元或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的单元可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的单元可以合并为一个单元,也可以进一步拆分成多个子单元。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
权利要求
1.一种可扩展标记语言XML报文的获取方法,其特征在于,包括对接收到的报文进行解封装;在解封装后的内容中查找XML报文的特征码;查找到特征码时,在所述解封装后的内容中查找结束标识符,根据所述特征码以及结束标识符确定XML报文。
2.如权利要求I所述的方法,其特征在于,所述接收到的报文为分片报文时,所述对接收到的报文进行解封装前,还包括根据接收到的报文的源地址、目的地址、顺序号Sequence Number以及下一顺序号Next Sequence Number,获取包含同一封装文件的所有分片报文;所述对接收到的报文进行解封装后,还包括将从包含同一封装文件的所有分片报文中解封装得到的内容进行组合,作为解封装后的内容。
3.如权利要求I或2所述的方法,其特征在于,所述对接收到的报文进行解封装包括 根据报文封装格式,从所述报文中依次去掉物理链路层封装内容、IP层封装内容以及TCP层封装内容,所述链路层封装内容、IP层封装内容以及TCP层封装内容的长度由报文封装格式确定。
4.如权利要求I所述的方法,其特征在于,所述XML报文的特征码包括〈?xml version=",其同时满足以下匹配条件xml、version为小写字母;< X中间不能有任何其他字符;xml之间可以有空格、回车换行或tab键字符; version和=之间可以有空格、回车换行或tab键字符;=和"之间可以有空格、回车换行或tab键字符;< xml version =之间至少要有一个空格或tab键或回车换行字符;如果I和V之间至少有一个空格或tab键或回车换行字符,则version中间不能任何其他字符;如果I和V之间没有一个空格或tab键或回车换行字符,则version中间可以有空格、 回车换行或tab键字符。所述在解封装后的内容中查找XML报文的特征码,包括在解封装后的内容中查找〈? X的位置;查找到〈? X的位置时,获取所述〈? X的位置之后的字符,当所述〈? X的位置之后的字符与〈? X组合后满足上述匹配条件时,判断为在解封装后的内容中查找到了 XML报文的特征码。
5.如权利要求I或4所述的方法,其特征在于,所述在所述解封装后的内容中查找结束标识符,根据所述特征码以及结束标识符确定XML报文,包括在所述解封装后的内容中查找〈?或〈!;查找到〈?或〈!时,进一步在所述解封装后的内容中查找> ;获取〈与〉之间的内容X,将</x>作为结束标识符;在所述解封装后的内各中查找〈/χ> ;将所述特征码以及</X>之间的内容确定为XML报文。
6.一种XML报文的获取装置,其特征在于,包括解封装单元,用于对接收到的报文进行解封装;特征码查找单元,用于在所述解封装单元解封装后的内容中查找XML报文的特征码; XML报文确定单元,用于在所述特征码查找单元查找到特征码时,在所述解封装单元解封装后的内容中查找结束标识符,根据所述特征码以及结束标识符确定XML报文。
7.如权利要求6所述的装置,其特征在于,当接收到的报文为分片报文时,所述解封装单元,用于根据接收到的报文的源地址、目的地址、顺序号Sequence Number以及下一顺序号Next Sequence Number,获取包含同一封装文件的所有分片报文;并将从包含同一封装文件的所有分片报文中解封装得到的内容进行组合,作为解封装后的内容。
8.如权利要求6或7所述的装置,其特征在于,所述解封装单元具体用于对于接收到的报文,根据报文封装格式,从所述报文中依次去掉物理链路层封装内容、 IP层封装内容以及TCP层封装内容,得到解封装后的内容;所述链路层封装内容、IP层封装内容以及TCP层封装内容的长度由报文封装格式确定。
9.如权利要求6所述的装置,其特征在于,所述XML报文的特征码包括〈?xml version=",其同时满足以下匹配条件xml、version为小写字母;< X中间不能有任何其他字符;xml之间可以有空格、回车换行或tab键字符; version和=之间可以有空格、回车换行或tab键字符;=和"之间可以有空格、回车换行或tab键字符;< xml version =之间至少要有一个空格或tab键或回车换行字符;如果I和V之间至少有一个空格或tab键或回车换行字符,则version中间不能任何其他字符;如果I和V之间没有一个空格或tab键或回车换行字符,则version中间可以有空格、 回车换行或tab键字符。所述特征码查找单元,具体用于在解封装后的内容中查找〈? X的位置;查找到〈? X的位置时,获取所述〈? X的位置之后的字符,当所述〈? X的位置之后的字符与〈? X 组合后满足上述匹配条件时,判断为在解封装后的内容中查找到了 XML报文的特征码。
10.如权利要求6或9所述的装置,其特征在于,所述XML报文确定单元,具体用于 在所述解封装后的内容中查找〈?或〈!;查找到〈?或〈!时,进一步在所述解封装后的内容中查找> ;获取〈与〉之间的内容X,将</x>作为结束标识符;在所述解封装后的内各中查找〈/χ> ;将所述特征码以及</X>之间的内容确定为XML报文。
全文摘要
本发明公开了一种可扩展标记语言XML报文的获取方法和装置。该方法包括对接收到的报文进行解封装;在解封装后的内容中查找XML报文的特征码;查找到特征码时,在所述解封装后的内容中查找结束标识符,根据所述特征码以及结束标识符确定XML报文。通过使用本发明,可以从传输的报文中分析得到所包括的XML报文以进行相应的深度处理。
文档编号H04L29/06GK101764815SQ20091026003
公开日2010年6月30日 申请日期2009年12月23日 优先权日2009年12月23日
发明者文晋阳, 尹建华 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1