後台智能傳輸服務

後台智能傳輸服務（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月）
- 添加支持：加入Windows伺服器域的電腦可以對等緩存（允許同一子網中的電腦從對等端下載內容，以及將內容提供給對等端）；在文件已下載時得到通知；在下載進行時訪問臨時文件；控制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在後台交付包到客戶端。

## 外部連結

- Background Intelligent Transfer Service in Windows Server 2003
- Background Intelligent Transfer Service in Windows Server 2008
- BITS version history