PST文件格式解读--PST文件的逻辑结构


PST 文件是 OUTLOOK 个人文件夹文件,它是独立的、结构化的二进制文件,不需要任何的外部依赖。每一个PST文件代表一个消息存储器message store,包含有任意层次结构的文件对象Folder objects,下面又包含消息对象Message objects,消息对象下面又包含附件对象Attachment objects。文件对象、消息对象、附件对象都存储在属性中,包含有特定邮件项目的所有信息。

PST文件在逻辑上分为三层:the NDB (Node Database) layer, the LTP(Lists, Tables, and Properties) layer, and the Messaging layer.


1.  Node Database (NDB) Layer

NDB层代表数据库结点,是PST文件最低层的存储结构。NDB层包括头部(header)、文件分配信息(fileallocation information)、块(blocks)、结点(nodes)、两颗B:结点B树和块B(the Node BTree (NBT)and the Block BTree (BBT).)

NBT包含了指向PST文件中所有可访问结点的指针,B树的高效搜索方式能够快速的定位任意结点。每一个结点由四个属性集组成:NID,parent NID, data BID(指向与该结点关联的数据块), andsubnodeBID.

注:NID编号在整个PST文件里面是唯一的,可以查找NBT得到该结点。而Subnode NID只是在一个结点里面是唯一的,该节点不能从NBT查找得到。

BBT包含了指向PST文件中所有数据块的指针,每一个块也是由四个属性集组成:BID,IB, CB, and CREF

其中IB是该块在文件内的偏移量,CB是存储在该数据块内的字节数,CREF是该数据块的引用次数。

NBT and BBT树根的位置的都能从PST文件头部相关字段获得。如下图所示:


下图描述的结点(node)和块(block)之间的关系:


2. Lists, Tables, and Properties (LTP) Layer

LTP层是构建NDB结构顶部的一个高级概念,LTP层的核心元素是属性上下文theProperty Context (PC) and 表上下文TableContext (TC).每一个PC或TC也存放在一个单一的结点中,LTP层使用NIDS去标识PC和TC。

为了有效地实现PCs和TCs,LTP层在每个NDB节点顶层采用以下两种类型的数据结构。

Heap-on-Node(HN)

HN是在结点之上实现的一个堆数据结构,HN能够将一个结点的数据流细分为小的、大小可变的片段,它的主要用途是将各种字符串存储到数据块中。

BTree-on-Heap(BTH)

BTH是HN内部的一个数据结构。HN提供快速访问B-的方法,而BTH提供一种快速搜索数据的方法。PCs就被实现为BTHs

3.  Messaging Layer

The Messaginglayer包含有让LTB结构和NDB结构组合起来被解释为文件对象、消息对象、附件对象和属性的高级规则和业务逻辑。该层的规则使得修改后的PST文件能够被成功的读取。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值