後臺智能傳輸服務

後臺智能傳輸服務（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 date=20140321144807  - BITS管理工具，管理BITS任務的命令行工具。
它存在於 Windows XP Service Pack 2 Support Tools date=20220117044312 或 Windows Server 2003 Service Pack 1 Support Tools date=20051217103848 及兩者的更新版本中，以及是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 date=20200815174921 ：一個面向Windows的下載管理器，它創建BITS任務。-  BITSync：開源工具，在SMB網絡共享上執行使用BITS執行文件同步。- Civilization V：使用BITS下載遊戲模組（mod）包。- EVE Online：它使用BITS下載所有補丁。也在客戶端修復工具中使用。- 部分Google服務（包括Chrome、Gears, Pack和YouTube Uploader）使用BITS。date=2013-04- KBOX Systems Management Appliance：一個系統管理應用程序，可以使用BITS來交付文件到Windows系統。- RSS Bandit：使用BITS下載網絡供稿中的附件。-  Oxygen media platform：使用BITS分發媒體內容和軟件更新。-  SharpBITS date=20180122034559 ：一個適用於Windows的開源下載管理器，它處理BITS任務。-  WinBITS date=20190518063307 ：一個適用於Windows的開源下載器，它創建BITS任務來下載文件。- Novell ZENworks Desktop Management：一個系統管理軟件，可以使用BITS來交付應用程序文件到工作站。-  Specops Deploy/App date=20201220233322 ：一個系統管理軟件，在可用時使用BITS在後臺交付包到客戶端。

**參見**
 Windows 組件列表- 文件傳輸協議列表

**參考資料**

**外部鏈接**
  Background Intelligent Transfer Service in Windows Server 2003 date=20100315050413 -  Background Intelligent Transfer Service in Windows Server 2008 date=20170826192541 -  BITS version history date=20071012032532