1. 程式人生 > >FAT檔案系統協議

FAT檔案系統協議

FAT(File Allocation Table)

FAT,檔案配置表。主要分FAT12/FAT16/FAT32,這三者可支配的大小越往後越大,不過協議大體相同。

FAT的整體結構圖:
這裡寫圖片描述

MBR

MBR是整個硬碟的起始引導處,不過對於U盤來說,MBR主要用來對整個U盤的空間進行分割槽,如圖所示,可以分成4個大區

這裡寫圖片描述

MBR每個欄位所代表的含義:
這裡寫圖片描述
我們只關心,第一個分割槽所在的位置,從1C6開始的4位元組表示第一分割槽所在的扇區處(每個扇區512位元組),沿著這條資訊我們能找到DBR

DBR

DBR用來記錄FAT所需的各項引數,包括扇區的大小,簇的大小,FAT1/FAT2的所在位置及大小

這裡寫圖片描述

DBR各個欄位所代表的含義

這裡寫圖片描述

我們關心的欄位如圖中標示,根據這個資訊我們就能找到FAT1/FAT2/DATA這三個分割槽

FAT1/FAT2

FAT2是對FAT1的備份,以防資料破壞不能修復。
FAT通過一整個FAT1來對整個DATA分割槽的資料進行標示與管理:
這裡寫圖片描述
對於fat32來說,每4個位元組表示一個簇,一個簇就管理著一段記憶體(n個扇區,在DBR有記錄),每四個位元組所代表的含義:
這裡寫圖片描述

DATA

DATA區主要包含兩部分,一個是目錄和檔案(統稱目錄項),另一個是資料;對於目錄項的含義如下:
這裡寫圖片描述

一個目錄項由32個位元組組成,通過目錄項我們可以找到此項對應的簇號,然後在通過簇號鏈我們就能得到此項對應的資料,FAT就是通過這個原理來運作資料的。

那麼整個資料的根目錄在哪呢?對於FAT32來說,根目錄存在簇號2代表的地方,由於簇號0和1另有所用,它們不佔用實際的簇空間,所以一般來說根目錄就在DATA區域的起始位置。

工具

如果想要檢視FAT的具體協議,可以通過winhex或者DiskDenius工具來檢視,如下圖是通過DiskDenius開啟一個U盤所得到的資訊:

DBR每個欄位的含義:

這裡寫圖片描述

每個地址的資料:

這裡寫圖片描述