后台智能传输服务

**背景智慧型傳輸服務**（**Background Intelligent Transfer Service**，縮寫 **BITS**）是微軟在 Windows 2000 及後續版本中包含的一個組件。它有助於利用空閒網路頻寬在電腦之間非同步、有優先級及自我限制地傳輸檔案，並主要在較新版本的 Windows Update、Microsoft Update、Windows Server 更新服務和系統管理伺服器用於交付修補程式到客戶端。反病毒軟體 Microsoft Security Essentials（及之後的 Windows Defender）也使用它取得簽章更新，並且微軟的即時通訊產品會使用它來傳輸檔案。BITS 通過組件物件模型（COM）介面供外部呼叫。

## 技術

BITS 只採用空閒的頻寬傳輸資料。通常來說，BITS 在背景傳輸資料，即 BITS 僅在其他應用程式沒有使用頻寬時傳輸資料。BITS 支援在中斷後繼續傳輸。

BITS 的 1.0 版只支援下載。自 1.5 版開始，BITS 支援下載與上傳。上傳需要接收方使用網際網路資訊服務及 BITS 伺服器擴充。

### 傳輸

BITS 會代表請求的應用程式非同步完成傳輸，即應用程式請求 BITS 服務進行傳輸後，可以自由地去執行其他任務，乃至終止。只要網路已連接並且任務所有者已登入，則傳輸就會在背景進行。當任務所有者未登入時，BITS 任務不會進行。

BITS 將在網路連接斷開或作業系統關閉時暫停所有正在進行的傳輸。在電腦重新開啟並恢復網路連接時，它將從之前的位置繼續重新開始傳輸。BITS 支援通過 SMB、HTTP 和 HTTPS 進行傳輸。

### 頻寬

BITS 只會嘗試利用空閒頻寬。例如，當應用程式使用 80% 的可用頻寬時，BITS 將只使用剩下的 20%。 BITS 會不斷監視網路流量以增加或減少流量，並遏制自己的傳輸以確保其他前台應用程式（如網頁瀏覽器）獲得所需的頻寬。注意，BITS 不需要測量實際頻寬。BITS 3.0 及更高版本將嘗試使用網際網路閘道器裝置計數器，從而更準確地計算可用頻寬。如果其不可用，BITS 將使用網卡（NIC）報告的速度來計算頻寬。這可能導致頻寬的計算錯誤，例如當快速的網路配接器（如 10 Mbit/s）通過慢速鏈路（56 kbit/s）接入網路。

### 任務

BITS 採用佇列管理檔案傳輸。一個 BITS 對談是由一個應用程式建立一個任務（Job）而開始。一個任務就是一份容器，它有一個或多個要傳輸的檔案。新建立的任務是空的，需要指定來源與目標 URI 來添加檔案。下載任務可以包含任意多的檔案，而上傳任務中只能有一個檔案。可以為各個檔案設定內容。任務將繼承建立它的應用程式的安全上下文。BITS 提供 API 介面來控制任務。通過編程可以來啟動、停止、暫停、繼續任務以及查詢狀態。在啟動一個任務前，必須先設定它相對於傳輸佇列中其他任務的優先級。預設情況下，所有任務均為正常優先級，而任務可以被設定為高、低或前台優先級。BITS 將最佳化背景傳輸被，根據可用的空閒網路頻寬來增加或減少（抑制）傳輸速率。如果一個網路應用程式開始耗用更多頻寬，BITS 將限制其傳輸速率以保證使用者的互動式體驗，但前台優先級的任務除外。

### 排程

BITS 的排程採用分配給每個任務有限時間片的機制，一個任務被暫停時，另一個任務才有機會獲得傳輸時機。較高優先級的任務將獲得較多的時間片。BITS 採用循環制處理相同優先級的任務，並防止大的傳輸任務阻塞小的傳輸任務。

在任務新建時，它被自動掛起（暫停），等待明確的繼續（啟用）。繼續會將任務轉移到排隊狀態。在它開始傳輸資料時，它首先需要連接到遠端伺服器，然後開始傳輸。在任務的時間片到期時，傳輸將被暫停，任務返回到排隊狀態。當作業獲得另一個時間片時，它必須重新連接才能傳輸。當任務完成時，BITS 將任務的所有權轉移到建立任務的應用程式。

BITS 內建有一個錯誤處理和嘗試恢復的機制。錯誤可以是致命（fatal）或暫時（transient）的，這分別移動錯誤到不同的狀態；暫時錯誤可以在一段時間後自我解決。對於暫時錯誤，BITS 會等待一段時間並重試。對於致命錯誤，BITS 會將任務的控制轉移到建立它的應用程式，並儘量提供錯誤的相關資訊。

### 工具

BITSAdmin （頁面存檔備份，存於網際網路檔案館） - BITS 管理工具，管理 BITS 任務的命令列工具。

它存在於 Windows XP Service Pack 2 Support Tools （頁面存檔備份，存於網際網路檔案館）或 Windows Server 2003 Service Pack 1 Support Tools （頁面存檔備份，存於網際網路檔案館）及兩者的更新版本中，以及是 Windows Vista 中的標準命令列工具。在 Windows 7，BITSAdmin.exe 已不推薦使用，建議改用 Windows PowerShell cmdlets。

## 版本歷史

* 版本 1.0（2001 年 10 月）
  * 初始版本。包含在 Windows XP RTM 中。
* 版本 1.2（2002 年 7 月）
  * 包含在 Windows XP Service Pack 1 和 Windows 2000 Service Pack 3 中。Windows 2000 的 BITS 將自動更新功能帶入了作業系統的核心。
  * 沒有其他外部變更。
* 版本 1.5（2003 年 9 月）
  * 包含在 Windows Server 2003，並提供適用於 Windows 2000 和 Windows XP 的單獨下載。
  * 添加上傳和上傳回覆能力，事件的命令列執行，顯式憑證，以及對 Windows 2000 的支援。
* 版本 2.0（2004 年 8 月）
  * 包含在 Windows XP Service Pack 2 和 Windows Server 2003 Service Pack 1 中，並可以為 Windows 2000 Service Packs 3、4 以及 Windows XP 和 Server 2003 的早期版本單獨下載。
  * 添加支援：並行執行前台下載，為遠端名稱使用 Server Message Block 路徑，下載檔案某部份，更改遠端名稱的字首或完整名稱，以及限制客戶端的頻寬使用。
  * BITS 2.0 是 Windows Server Update Services 必備設施。
* 版本 2.5（2007 年 6 月）
  * 添加對在安全 HTTP 傳輸和自訂 HTTP 檔頭時基於憑證的客戶端身分驗證的支援。
  * 支援 IPv6。
  * 可以為 Windows XP 和 Windows Server 2003 下載，並包含在 Windows XP Service Pack 3 中。
* 版本 3.0（2006 年 11 月）
  * 添加支援：加入域的電腦可以對等快取（允許同一子網路中的電腦從對等端下載內容，以及將內容提供給對等端）；在檔案已下載時得到通知；在下載進行時存取臨時檔案；控制 HTTP 重新導向。BITS 3.0 還使用網際網路閘道器裝置計數器來更準確地計算可用頻寬。
  * 添加群組原則來控制對等快取、下載時間和任務數量與檔案下載。BITS 3.0 還會將診斷和故障排除事件寫入系統紀錄檔，可以使用事件檢視器檢視。
  * BITS 3.0 隨 Windows Vista 引入，並包含在後續 Windows 版本中。BITS 2.5 功能也包含在 Windows Vista 和 Windows Server 2008 中。
* 版本 4.0（2009 年 7 月）
  * 隨 Windows 7 和 Windows Server 2008 R2 引入，並可用於 Windows Vista SP2 和 Windows Server 2008 RTM
  * 添加一個新的資源存取模型，允許應用程式使用 BITS 分配兩個不同權限的存取權杖進行 BITS 傳輸任務。
  * 對於 Windows Server，BITS 4.0 添加了一個基於 HTTP 的檔案伺服器，稱為 _BITS 緊湊型伺服器_，適用於同一個域內的電腦。
  * 更細粒度的頻寬限制群組原則。
  * 在 BITS 4.0 中，對等快取模型已不推薦使用，並被 BranchCache 子網路級對等快取取代。
* 版本 5.0（2012 年 8 月）
  * 隨 Windows 8 和 Windows Server 2012 引入。
  * 添加新的應用程式編程介面（API）
  * 可以允許或禁止 BITS 任務通過按流量計費 / 蜂窩鏈路傳輸。
  * BITS 5.0 也包含在 Windows 8.1 和 Windows 10 中。 Windows 10 中的 BITS 版本支援在 PowerShell 遠端對談中的傳輸任務。

## 使用 BITS 的非微軟應用程式

* AppSense：使用 BITS 在客戶端安裝軟體套件。
* BITS Download Manager （頁面存檔備份，存於網際網路檔案館）：一個面向 Windows 的下載管理器，它建立 BITS 任務。
* BITSync：開源工具，在 SMB 網路共享上執行使用 BITS 執行檔案同步。
* Civilization V：使用 BITS 下載遊戲模組（mod）包。
* EVE Online：它使用 BITS 下載所有修補程式。也在客戶端修復工具中使用。
* 部份 Google 服務（包括 Chrome、Gears, Pack 和 YouTube Uploader）使用 BITS。
* KBOX Systems Management Appliance：一個系統管理應用程式，可以使用 BITS 來交付檔案到 Windows 系統。
* RSS Bandit：使用 BITS 下載網路供稿中的附件。
* Oxygen media platform：使用 BITS 分發媒體內容和軟體更新。
* SharpBITS （頁面存檔備份，存於網際網路檔案館）：一個適用於 Windows 的開源下載管理器，它處理 BITS 任務。
* WinBITS （頁面存檔備份，存於網際網路檔案館）：一個適用於 Windows 的開源下載器，它建立 BITS 任務來下載檔案。
* Novell ZENworks Desktop Management：一個系統管理軟體，可以使用 BITS 來交付應用程式檔案到工作站。
* Specops Deploy/App （頁面存檔備份，存於網際網路檔案館）：一個系統管理軟體，在可用時使用 BITS 在背景交付包到客戶端。

## 參見

* Windows 組件列表
* 檔案傳輸協定列表

## 參考資料

## 外部連結

* Background Intelligent Transfer Service in Windows Server 2003 （頁面存檔備份，存於網際網路檔案館）
* Background Intelligent Transfer Service in Windows Server 2008 （頁面存檔備份，存於網際網路檔案館）
* BITS version history （頁面存檔備份，存於網際網路檔案館）