后台智能传输服务(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会将任务的控制转移到创建它的应用程序,并尽量提供错误的相关信息。
工具
[https://msdn.microsoft.com/en-us/library/aa362813.aspx BITSAdmin] - BITS管理工具,管理BITS任务的命令行工具。
它存在于[http://www.microsoft.com/downloads/details.aspx?familyid=49ae8576-9bb9-4126-9761-ba8011fabf38 Windows XP Service Pack 2 Support Tools] 或[http://www.microsoft.com/downloads/details.aspx?familyid=6ec50b78-8be1-4e81-b3be-4e7ac4f0912d 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的非微软应用程序
- :使用BITS在客户端安装软件包。
- [https://www.request-response.com/blog/PermaLink,guid,20f94f47-6ea2-46a8-97b0-bdfdea4fb4f8.aspx BITS Download Manager] :一个面向Windows的,它创建BITS任务。
- [https://web.archive.org/web/20090124233349/http://kli.dk/2008/01/19/bitsync/ BITSync]:开源工具,在SMB网络共享上执行使用BITS执行文件同步。
- Civilization V:使用BITS下载遊戲模組(mod)包。
- EVE Online:它使用BITS下载所有补丁。也在客户端修复工具中使用。
- 部分Google服务(包括Chrome、Gears, Pack和YouTube Uploader)使用BITS。
- :一个系统管理应用程序,可以使用BITS来交付文件到Windows系统。
- :使用BITS下载网络供稿中的附件。
- [https://web.archive.org/web/20100420013932/http://42mediagroup.com/Oxygen-Media-Platform.25.0.html?&lang=1&cHash=f2a8810ac3 Oxygen media platform]:使用BITS分发媒体内容和软件更新。
- [http://sharpbits.codeplex.com SharpBITS] :一个适用于Windows的开源,它处理BITS任务。
- [http://sourceforge.net/projects/winbits/ WinBITS] :一个适用于Windows的开源下载器,它创建BITS任务来下载文件。
- Novell ZENworks Desktop Management:一个系统管理软件,可以使用BITS来交付应用程序文件到工作站。
- [http://www.specopssoft.com Specops Deploy/App] :一个系统管理软件,在可用时使用BITS在后台交付包到客户端。
参见
- Windows 组件列表
*
参考资料
外部链接
- [http://www.microsoft.com/windowsserver2003/techinfo/overview/bits.mspx Background Intelligent Transfer Service in Windows Server 2003]
- [https://technet.microsoft.com/en-us/library/cc732428.aspx Background Intelligent Transfer Service in Windows Server 2008]
- [http://msdn2.microsoft.com/en-us/library/aa363167.aspx BITS version history]
评论 (0)