Chunked 数据块的重组

Chunked 数据块的重组

本文主要针对网页数据由 N chunked 数据块组成的情况进行分析。

一、 chunked 块的组成结构

每一个 Chunked 数据块包含两部分,两部分用字符串 ”/r/n” 区分开,主要内容是:

1.  数据块的长度 (16 进制 )

2.  数据部分

所以单独的 chunked 块结构如: A0/r/ndata…./r/n

A0 16 进制的数据长度; data… 为数据部分,长度是 A0;

 

多个 chunked 的组成形式如:

A0/r/n[dataof(chunked)]/r/nB0/r/n[dataof(chunked)]/r/n A1/r/n[dataof(chunked)]/r/n 0/r/n/r/n

 
 

在整个 chunked 的结束部分由字符“ 0/r/n/r/n ”来表示。

 


二、 chunked 的解码代码

Chunked 的解析工做主要是将 chunked 块中的数据部分根据给出的长度提取出来。

代码如下:

 

二、 chunked 网络包数据信息的提取方式

chunked 块中关键字的获取,总的来说可以用两种方法:

1.  每来一个数据包,都提取出 gzip 压缩包,然后解压

2.  等所有数据包重组完成,一次性提取 gzip 压缩包解压

 

当然两种方式都有存在优点与缺点:

 

使用第一种方法:

优点:如果包中包含关键字,可以很快检测,后面的包就不需要接收了。

缺点:如果检测的网页中不包含关键字,那么这个工作将一直持续下去,知道整个网页都发送结束。因为解压的时候需要依赖前面所有的包,

                   假设有 100 个数据包,那么第一个包就要解压 100 次,第二个 99 次,依次递减。

                   总共要解压的次数是 : 100+1 *100/2

 

使用第二种方法:

优点:不用每次数据包过来都重组、解析 chunked 、解压。操作次数减少很多

缺点:每次都要等数据全部收集完成重组才能解包。如果包中包含关键字信息,可能在前 10 个包中就有,这时候依然要等待所有的包都发送过来才能提取 chunked 和解压。

 

用统计方法决定:

根据被检测关键字与库中的比例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值