基本介紹
後台智慧型傳送服務 (BITS) 可幫助傳輸大量數據而不會降低網路性能。它通過在小區塊中傳輸數據、充分利用可用的但未使用的頻寬和在目的地重組數據的方式來實現此操作。在 Microsoft® Windows Server 2003 家族作業系統上和 Microsoft® Windows 2000 上都支持 BITS。
BITS 下載和上傳檔案名稱(即統一資源定位器 (URL))和數據。任何由網路斷開或計算機關閉和重新啟動所中斷的傳輸將在網路連線重新建立時恢復。
BITS 伺服器擴展是 Internet 信息服務 (IIS) 的一部分,並且具有下列組件:
•BITS 管理控制台管理單元,它通過使用 Microsoft 管理控制台 (MMC) 來配置和管理 BITS。
•BITS 伺服器擴展 ISAPI,它用於 BITS 數據傳輸。
如果希望客戶端計算機可以使用 BITS 將檔案上載到伺服器,則必須配置帶已安裝並已激活的 BITS 伺服器擴展的 IIS 伺服器。
概念
使用 BITS 通知
BITS 伺服器擴展提供了一種方法來通知 Web 應用程式從客戶端計算機傳到伺服器的數據已經到達,並且該伺服器將對客戶端計算機生成答覆。可以通過使用“BITS 伺服器擴展”選項卡的“允許通知”部分中的控制項來為伺服器上的各個虛擬目錄配置這種機制。
當選中 允許通知時,有兩個控制項變為可用於進行配置:“通知類型”和“通知 URL”。
“通知類型”要求您選擇“傳送檔案名稱”或“傳送數據”。
•“傳送檔案名稱”只傳送檔案的名稱並告知伺服器上載檔案的位置以及記錄答覆的位置。您的應用程式將負責打開請求的(上載的)數據檔案並負責創建所有回響數據。
•“傳送數據”傳送所有數據並直接在伺服器和應用程式之間進行答覆,然後指定數據和答覆的位置。
當 BITS 伺服器擴展接收到客戶端計算機上的應用程式上載的所有數據時,客戶端計算機就會在您指定的“通知 URL”中生成通知答覆。對於“傳送檔案名稱”,BITS 會將回響寫入 URL。對於“傳送數據”,BITS 將數據和回響寫入客戶端計算機的臨時檔案以供下載。
BITS 使用 IIS 安全機制。BITS 通知僅在為客戶系統指定的安全上下文中生成。該上下文在“身份驗證方法”中進行設定,可以通過虛擬目錄的“屬性”頁面的“目錄安全”選項卡來訪問“身份驗證方法”。
保護虛擬目錄
對於虛擬目錄而言,IIS 允許用戶分別設定“運行腳本並執行”許可權和“寫入”許可權。通常,管理員會禁止寫入虛擬目錄來阻止客戶端將可執行腳本或程式上載到目錄並執行它們。
但是,當已經為 BITS 上載啟用了虛擬目錄時,即使已經禁止了虛擬目錄上的寫入許可權,客戶端仍可以通過 BITS 上載寫入到該目錄。要保護伺服器,BITS 伺服器擴展在已經為 BITS 啟用了上載的虛擬目錄上禁用所有腳本和執行許可權。為了保證虛擬目錄的安全,BITS 伺服器擴展將不回響任何上載數據的客戶端請求,直至許可權被禁用。只要這些許可權被啟用,BITS 伺服器擴展將拒絕所有上載請求,直至這些許可權再次被禁用。每當 BITS 伺服器擴展拒絕一個請求,它都會寫一條 IIS 日誌項。
技術
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會將任務的控制轉移到創建它的應用程式,並儘量提供錯誤的相關信息。