AFP檔案訪問模型 AFP檔案訪問模型如右圖所示。在AFP中,AFP客戶端和AFP伺服器之間交換的所有值均以網路位元組順序通過網路傳送。
在本地計算機中運行的程式通過使用該計算機的本地
檔案系統 命令來請求和操作檔案。這些命令可以操作物理連線到本地計算機的磁碟或其他記憶體資源上的檔案。通過AFP,程式可以使用相同的本地檔案系統命令來處理駐留在遠程計算機(例如
檔案伺服器 )上的共享資源上的檔案。
在本地計算機上運行的程式向本地檔案系統傳送命令。本地存儲器中的數據結構指示卷是由本機檔案系統還是由某些外部檔案系統管理。本地檔案系統通過查看此數據結構來發現請求的檔案是在本地還是
遠程訪問 。如果數據結構指示外部檔案系統,則本地檔案系統將該命令路由到AFP轉換器。
翻譯器,顧名思義,將本機命令轉換為AFP命令,並將其傳送到管理遠程資源的檔案伺服器。 AFP規範中沒有定義AFP翻譯器,應用程式員可以設計它。
在本地計算機上運行的程式也可能需要傳送在本地檔案系統中不存在等效命令的AFP命令。在這種情況下,AFP命令直接傳送到所需的外部檔案系統,如上圖所示。例如,用戶認證可能必須通過為此目的編寫的接口來處理。
AFP支持使用
Mac OS 和使用
MS-DOS 的個人電腦的電腦。可以擴展AFP以支持其他類型的電腦。AFP的任何實施必須考慮到聯網計算機的本地檔案系統的功能,並在共享環境中模擬其功能。換句話說,已分享檔案系統應該複製本地計算機檔案系統的特性。不同的計算機類型共享相同的檔案伺服器,模擬每個本地計算機的本機檔案系統的功能變得越來越複雜。因為每個計算機類型在處理檔案的方式上具有不同的特徵,所以已分享檔案系統需要擁有同一網路上所有計算機的組合能力。
AFP的組成 三個系統組件組成AFP:
檔案系統結構 ,其由可通過網路定址的資源(諸如
檔案伺服器 ,卷,目錄,檔案和分支)組成。這些資源稱為AFP檔案系統可見實體。AFP規定這些實體之間的關係。例如,一個目錄可以是另一個目錄的父目錄。
AFP命令 ,這是本地計算機用於操作AFP檔案
系統結構 的命令。如前所述,翻譯者以檔案伺服器的形式傳送檔案系統命令,或者在本地計算機上運行的應用程式可以直接進行AFP命令。
與命令關聯的算法 ,用於指定AFP命令執行的操作。
雖然區分了本地計算機和檔案伺服器,但是AFP可以在同一個節點內支持這兩個功能。但是,AFP並不能解決計算機既是AFP客戶端又是AFP伺服器時可能出現的並發問題。這些組合節點上的軟體必須仔細設計,以避免潛在的衝突。
AFP不提供支持檔案伺服器管理的命令。管理功能(如註冊用戶和更改密碼)必須由單獨的網路管理軟體來處理。還必須提供附加軟體來添加,刪除和查找網路中的伺服器。
AFP檔案系統結構 本節介紹AFP檔案系統結構及其與AFP檔案系統可見實體相關的參數。這些實體包括檔案伺服器,其卷,目錄(Mac OS術語中的“資料夾”),檔案,和檔案分支。本部分還描述了稱為卷目錄的樹結構,它是對目錄和檔案之間的關係的描述。
通過傳送AFP命令,AFP客戶端可以獲取有關檔案伺服器和檔案系統結構的其他部分的信息,修改從檔案伺服器獲得的信息,創建和刪除檔案和目錄,在單個檔案中檢索和存儲信息
檔案伺服器 檔案伺服器 是具有至少一個大容量磁碟的計算機,允許網路上的其他計算機共享存儲在其中的信息。AFP對共享磁碟數量沒有限制。連線到檔案伺服器的每個磁碟通常都包含一個卷,儘管磁碟可以細分為多個卷。每個卷顯示為AFP客戶端的單獨實體。
檔案伺服器具有唯一的名稱和其他標識參數。這些參數標識伺服器的機器類型和連線卷數,以及伺服器支持的AFP版本用戶身份驗證方法(
UAM )。一些更常見的AFP檔案伺服器參數如右圖所示。
卷 檔案伺服器可以使AFP客戶端可以看到一個或多個卷。每個卷都有與之相關聯的參數,如Volume Bitmap中所列。為了在卷級別提供安全性,伺服器可以為任何卷保留可選的密碼參數。
卷類型 AFP卷分層結構。有兩種類型的分層卷:固定和可變。固定的目錄ID卷包含多個目錄,每個目錄具有自己的永久目錄ID,該目錄ID在創建目錄時分配。目錄ID在卷的生存期內不用於任何其他目錄,即使其分配的目錄稍後被刪除。
變數目錄ID卷還維護其目錄ID的唯一性,但與固定的目錄ID卷不同,因為它不會將永久目錄ID與每個目錄相關聯。對於變數目錄ID卷,只要AFP客戶端傳送FPOpenDir命令,檔案伺服器將為目錄創建唯一的目錄ID。然後,檔案伺服器維護此目錄ID,直到客戶端傳送FPCloseDir命令或AFP會話終止。通過將FPOpenDir命令傳送到變數目錄ID卷獲得的目錄ID必須僅用於該會話。如果目錄ID被存儲並用於引用稍後會話中的目錄,則無法預測結果:命令可能會失敗,操作錯誤的目錄或意外操作正確的目錄。
卷類型具有以下支持功能和約束:使用
MS-DOS 的個人計算機可以訪問任何類型的伺服器卷,因為目錄ID的概念對其檔案系統是外來的。 但是,使用分層檔案系統(
HFS )的
Macintosh 計算機無法直接使用變數目錄ID卷。 Macintosh HFS卷是固定的目錄ID卷,檔案伺服器上的分層卷可以由HFS處理,只有當它們是固定的目錄ID卷時。
Mac OS 應用程式,如Finder,保存目錄ID,不要指望它們有所不同。
卷目錄 卷目錄是描述固定和可變目錄ID卷上的檔案和目錄的分支
樹 布置的結構。目錄不跨多個卷; AFP客戶端會看到AFP客戶端可見的每個伺服器卷的單獨卷目錄。右下圖顯示了一個卷目錄的示例,並說明了它的元素。
卷目錄包含從基本目錄(稱為根)分支的目錄和檔案。這些目錄和檔案被稱為目錄
節點 或CNode(不要與網路上的設備混淆,也稱為節點)。在樹結構中,CNodes可以通過兩種方式進行定位:
在主幹的末端,在這種情況下,CNode被稱為葉子;葉子CNode可以是檔案或空目錄
從上下連線到其他CNode,這種情況下,CNode稱為內部CNode。內部CNodes始終是目錄
節點具有父/子關係。給定的CNode是目錄樹中它上面的CNode的後代,較高的CNode被認為是其父目錄。後代包含在父目錄中。沒有父目錄的唯一的CNode是
根目錄 。
當AFP命令通過卷目錄時,只能從根到特定CNode的最短路徑。沿著該路徑的節點被稱為目的節點的祖先,後者又稱為其祖先的後代。
目錄節點名稱 CNode名稱標識卷目錄中的每個目錄和檔案。每個目錄和檔案都有一個長名稱,一個簡稱,也可能有一個AFPName。
長名稱和短名稱對應於AFP支持的兩個本地檔案系統:
Mac OS 通過Long Names引用檔案和目錄;
MS-DOS 計算機使用短名稱。
AFPNames編碼符合Unicode標準(
UTF-8 ),它使用16位編碼超過65,000個字元。為了保持字元編碼簡單高效,Unicode標準為每個字元分配唯一的數值和名稱。為了幫助從UTF-8轉換為其他腳本系統時,AFPNames以一個四位元組的文本編碼提示開頭,指定了最初用於組成名稱的腳本。文本編碼提示之後是一個兩位元組長度的欄位,指定以下UTF-8編碼名稱的長度。
為了允許不同的計算機共享資源,檔案伺服器以所有三種格式提供CNode名稱。當創建或重命名檔案和目錄時,用戶提供與本地檔案系統一致的名稱。伺服器然後使用一個算法生成另一個名稱(長或短)。
卷目錄的根目錄表示卷,根的長名與卷名稱相同。 卷也可能具有UTF-8編碼的名稱。 卷有一個短名稱,它是根目錄的短名稱,但是AFP不允許使用它。 通過AFP可以刪除或重新命名根和卷。
目錄和檔案 目錄和檔案存儲在卷中,構成AFP客戶端可見的
檔案系統 結構的下一級。目錄分支到檔案和其他目錄。每個目錄都有一個標識符,通過它可以對其及其後代進行
定址 。因此,目錄可以被認為是邏輯上包含他們的後代目錄和檔案,具有下面描述的參數。
目錄ID 卷目錄中的每個目錄由稱為其目錄ID的四位元組
長整型 標識。因為同一卷上的兩個目錄不能具有相同的目錄ID,所以目錄ID唯一標識卷內的目錄。
在卷目錄中,如前所述,目錄具有彼此之間的祖先,父類和子代關係。 CNode的父節點的目錄ID稱為CNode的父ID。
CNode只能有一個父節點,所以給定的CNode有一個唯一的父ID。但是,CNode可以有幾個祖先目錄標識符,每個祖先一個。父目錄被認為是祖先。
目錄ID從1到16被保留。根目錄ID始終為2.根目錄的父ID始終為1.(根目錄並不具有父目錄,只有當AFP命令要求根目錄的父ID時,才返回此值。)零(0)為不是有效的目錄ID。目錄參數
對於每個目錄,伺服器必須維護檔案和目錄點陣圖中列出的參數。通過調用FPGetFileDirParms獲取參數,並在DirBitMap參數中指定要獲取的目錄參數。某些目錄參數可以通過調用FPSetDirParms或FPSetFileDirParms來設定。
目錄的Attributes參數提供有關目錄的其他信息。檔案和目錄屬性點陣圖列出了目錄的Attributes參數的位定義。沒有特定的位存在禁止移動目錄,但是當目錄被移動或移動和重命名時,目錄移動受到RenameInhibit位的限制。
訪問許可權(四位元組數量)包含與目錄的所有者,組和Everyone對應的讀取,寫入和搜尋訪問
許可權 。 Access Rights參數的高位元組是用戶訪問許可權摘要位元組,表示AFP客戶端的當前用戶對該目錄的許可權。
如果檔案或目錄駐留在支持
UNIX 特權的卷上,則FPUnixPrivs結構用於返回UNIX特權。
檔案參數 對於每個檔案,伺服器必須維護檔案點陣圖中列出的參數。通過調用FPGetFileDirParms並在FileBitmap參數中指定要獲取的檔案參數,通過調用FPResolveID並指定檔案的檔案ID或通過調用FPGetForkParms來獲取參數。可以通過傳送FPSetFileParms,FPSetFileDirParms和FPSetForkParms命令來設定一些檔案參數。
檔案編號是與卷上的每個檔案相關聯的唯一編號。這個數字純粹是信息豐富的。AFP不允許通過其檔案編號規定檔案。
沒有特定的位存在來禁止移動檔案,但檔案移動受到RenameInhibit位的約束,只有當檔案被移動和重命名時,而不是簡單地移動檔案。