苹果文件协议

**蘋果歸檔協定**（英語：**Apple Filing Protocol**，縮寫 **AFP**）也稱 **Apple 檔案協定**、**Apple 歸檔協定**，以前稱為 AppleTalk Filing Protocol，它是一個專有網路協定，並且是 **Apple File Service**（蘋果檔案服務，縮寫 **AFS**）的一部分，為 macOS 和經典 Mac OS 提供檔案服務。在 macOS 中，AFP 是受支援的數種檔案服務之一，其他包括伺服器訊息區塊（SMB）、網路檔案系統（NFS）、檔案傳輸協定（FTP）和 WebDAV。AFP 目前支援 Unicode 檔名、POSIX 和存取控制串列權限、資源分支、擴充屬性名稱、進階檔案鎖定。在 Mac OS 9 及更早版本中，AFP 是檔案服務的主要協定。

## 相容性

AFP 3.0 及更高版本完全依賴 TCP/IP（埠 548 或 427）來建立通信，僅支援 AppleTalk 作為一項服務發現協定。AFP 2.x 家族支援 TCP/IP（使用資料流介面）和 AppleTalk 用於通信和服務發現。許多第三方 AFP 實現使用 AFP 2.x，因此支援 AppleTalk 作為一種連接方法。早期版本完全依賴於 AppleTalk。因此，一些舊版文獻將 AFP 稱為「AppleTalk Filing Protocol」。其他文獻可能將 AFP 稱為「AppleShare」，這是 Mac OS 9（及更早版本）中 AFP 客戶端的名稱。

當前的相容性主要為：

1. Mac OS X v10.4 及之後版本取消了依賴 AppleTalk 進行通信的 AFP 服務。
2. 使用經典 Mac OS 的電腦可以連接到 AFP 3.x 服務，但有一些限制，例如：Mac OS 8 中的最大檔案大小為 2 吉位元組。通常來說，Mac OS 9.1 或更高版本建議連接到 AFP 3.x 服務；對 9.1 版之前的原始 Mac OS 版本，需要安裝 AppleShare 客戶端 3.8.8 版。
3. 網路主目錄需要 AFP 3.0 及更高版本，從 Mac OS X 需要使用者主目錄上的 POSIX 權限開始。使用 Kerberos 的單一登入需要 AFP 3.1。
4. APFS：AFP 目前在蘋果檔案系統（APFS）中已棄用。

## 歷史

AFP 伺服器軟體的早期實現在 Mac OS 中自 System 6 起在 AppleShare 和 AppleShare IP 以及 Mac OS X Server 的早期「1.x」版本中可用。在客戶作業系統中，AFP 被稱為「個人檔案分享」，並支援最多十個並行連接。這些 AFP 實現依賴於該協定的 1.x 或 2.x 版本。AppleShare IP 5.x、6.x 以及 Mac OS X Server 中的「1.x」版本引入了 AFP 2.2 版本。這是第一個使用 TCP/IP 以及 AppleTalk 提供傳輸連接的版本。它還將最大共享點大小從 4GB 提升至 2TB，儘管可以儲存的最大檔案大小仍受到原 Mac OS 中 2 吉位元的限制。

從 3.0 版開始的 AFP 變更主要是協定方面的重大改進，包括專為 Mac OS X 客戶端設計的功能。

但是，猶如原 Mac OS 中的 AppleShare，Mac OS X 中的 AFP 客戶端繼續支援類型和建立者代碼以及副檔名。

AFP 3.0 在 Mac OS X Server 的 10.0.3 版中引入，並在 Mac OS X Server 10.1.5 中使用。它是首個使用 UNIX 風格 POSIX 權限模型和 Unicode UTF-8 檔名編碼的版本。3.0 版本支援最大 2 千百萬位元組的共享點和檔案大小，該最大檔案大小和卷大小對 Mac OS X 截至 10.2 版本。（注意，最大檔案大小自 2.2 版更改，見上文所述。）在 AFP 3.0 以前，通過 AFP 傳送的檔名最大長度為 31 位元組。

AFP 3.1 在 Mac OS X Server 的 10.2 版中引入。值得注意的更改包括支援 Kerberos 身分驗證、自動客戶端重新連接、NFS 重新共享，以及通過 Secure Shell（SSH）安全的 AFP 連接。最大共享點和檔案大小隨 Mac OS X Server 10.2 增加到 8TB，並隨著 Mac OS X Server 10.3 增加到 16 千百萬位元組。

AFP 3.2 添加 Mac OS X Server 10.4 中的存取控制列表和擴充檔案屬性支援。最大共享點大小為至少 16TB，儘管蘋果公司沒有對 Mac OS X Server 10.4 的限制發布文件。

AFP 3.2 + 在 Mac OS X Leopard 中引入，並添加大小寫敏感支援和改善對 Time Machine 的支援（同步、被盜鎖定，以及睡眠通知）。

AFP 3.3 強制支援重放快取（Replay Cache）功能（需要 Time Machine）。

AFP 3.4 在 OS X Mountain Lion 中引入，包含將 POSIX 錯誤對映到 AFP 錯誤的一個小更改。

參閱蘋果公司的開發文件了解 AFP 的版本差異。

## Mac OS X 客戶端

在 Mac OS X Tiger 中，使用者可以在網路介面瀏覽或者輸入一個 AFP 的統一資源定位符（URL）到「連接到伺服器」對話方塊來連接到 AFP 伺服器。在 OS X Leopard 中，AFP 共享顯示在 Finder 側欄中。AFP URL 格式為：_afp://<伺服器>/<共享>_，其中 <伺服器> 是伺服器的 IP 位址、域名系統（DNS）名稱或 Bonjour 名稱，<共享> 是共享點的名稱。在 Snow Leopard 中，URL 形式 _afp://<伺服器>/<共享>/<路徑>_可用於在一個共享點下掛載一個子目錄。

Mac OS X 也提供個人檔案分享，AFP 目前版本的一個輕量級實現。在 Mac OS X 10.4 客戶端中，使用者可以點擊系統偏好設定 - 共享中的「個人檔案分享」共享他的「公共」資料夾的內容。

用於 AppleTalk 伺服器的 AFP URL 格式為：afp://at/ （頁面存檔備份，存於網際網路檔案館）<AppleTalk 名稱>:<AppleTalk 區域>。對於無 AppleTalk 區域的網路，一個星號（\*）將代替區域名稱。

## AFP 的安全性

Apple Filing Protocol 並非為在網際網路公開提供檔案分享服務而設計，該協定目前預設採用 DHX2 加密演算法進行使用者鑑定，但傳輸時並未進行加密，使得該協定不適合直接接入網際網路提供服務。為了更安全的進行檔案傳輸，當必須在網際網路提供服務或需要更高安全性時，建議採用 AFP through SSH 的方式進行部署，藉由 SSH 通道加密以提升安全性。

## 第三方實現

許多公司有 AFP 的第三方伺服器實現：

* 一個開放原始碼的 AFP 伺服器名為 Netatalk（AFP 3.3），可以在類 Unix 系統作業系統中使用。Netatalk v3.1 發布於 2013-10-28，增添了 Spotlight 支援。
* Novell Open Enterprise Server 支援 AFP。
* 微軟在部分 Windows （NT、2000 和 2003）版本中以一個選項包含 AFP 2.2 伺服器支援。Windows NT Server（3 和 4）只支援 AppleTalk，2000 添加了基於 IP 的 AppleShare；適用於 Macintosh（SFM）的服務自 Windows Server 2008 已移除。
* Novell 的 NetWare 支援 AFP。
* HELIOS UB+ （頁面存檔備份，存於網際網路檔案館）在不同的基於 Unix 的平台的整個陣列上支援 AFP。
* 開放原始碼的 FUSE（FUSE （頁面存檔備份，存於網際網路檔案館））及命令列客戶端 實現了 afpfs-ng （頁面存檔備份，存於網際網路檔案館）面向 Linux 和 Unix-like 作業系統
* GroupLogic ExtremeZ-IP（AFP 3.3）和 MacServerIP （頁面存檔備份，存於網際網路檔案館）面向 Windows 提供 AFP 3.x 支援 - 現為 Acronis Access Connect （頁面存檔備份，存於網際網路檔案館）.
* 多種 NAS 解決方案支援 AFP，大多數是通過 Netatalk：LaCie EtherNet Disk & 12big (AFP 3.3) （頁面存檔備份，存於網際網路檔案館）、NETGEAR's ReadyNAS （頁面存檔備份，存於網際網路檔案館）（AFP 3.2）、QNAP（AFP 3.x）、Synology's Disk Stations（AFP 3.1）、Thecus （頁面存檔備份，存於網際網路檔案館）（AFP 3.x）、Adaptec's Snap Server （頁面存檔備份，存於網際網路檔案館）（AFP 3.1）、Exanet 的 ExaStore（AFP 3.1）、Iomega 的 Home Media Network Hard Drive 和蘋果公司的 Time Capsule（AFP 3.2） （頁面存檔備份，存於網際網路檔案館）是商業軟體的例子，FreeNAS 和 napp-it （頁面存檔備份，存於網際網路檔案館）（其使用 Netatalk）是自由軟體的例子。
* Jaffer （頁面存檔備份，存於網際網路檔案館）是 Appletalk 檔案協定 v3.1 的一個 Java 實現。
* Xinet （頁面存檔備份，存於網際網路檔案館）出自 North Plains Systems，它提供了一個可以執行在大多數 \*nix 主機上的 AFP 平台。他們的產品之一 ka-share 在過去十年裡一直是 Solaris（僅限 Sparc）和 Irix 平台的主要產品。
* Columbia AppleTalk Protocol（哥倫比亞 AppleTalk 協定，縮寫 CAP）是一個來自哥倫比亞大學的 AFP 和 AppleTalk 的開源實現，現已停止使用。
* GVfs 通過 gfvs-afp-volume-monitor 支援

## 參見

* 網路協定列表
* 檔案系統列表

## 參考資料

## 外部連結

* File Services Manual for Mac OS X Server 10.4
* Apple Filing Protocol Programming Guide （頁面存檔備份，存於網際網路檔案館）
* Apple Filing Protocol Reference （頁面存檔備份，存於網際網路檔案館）
* Mac OS X: Some Mac OS X Applications and Services Require AFP 3.0 or Later
* Inside AppleTalk - original specification for the AppleTalk protocol stack including AFP
* Glossary of Networking Terms （頁面存檔備份，存於網際網路檔案館）
* NewsFactor Network article, A
* Macintosh: File System Specifications and Terms
* Apple Technical Note TN1150 on the HFS Plus Volume Format （頁面存檔備份，存於網際網路檔案館）
* Apple shifts from AFP to SMB2 （頁面存檔備份，存於網際網路檔案館）