Background Intelligent Transfer Service (BITS) is a component of Microsoft Windows XP and later operating systems that facilitates prioritized, throttled, and asynchronous transfer of files between machines using idle network bandwidth. It is most commonly used by recent versions of Windows Update, Microsoft Update, Windows Server Update Services, and Systems Management Server to deliver software updates to clients, Microsoft's anti-virus scanner Microsoft Security Essentials to fetch signature updates, and is also used by Microsoft's instant messaging products to transfer files. BITS is exposed through Component Object Model (COM), making it possible to use with virtually any programming language.
|
Contents
|
BITS uses idle bandwidth to transfer data. Normally, BITS transfers data in the background, i.e., BITS will only transfer data whenever there is bandwidth which is not being used by other applications, for example, when applications use 80% of the available bandwidth, BITS will use only the remaining 20%. BITS constantly monitors network traffic for any increase or decrease in network traffic and throttles its own transfers to ensure that other foreground applications (such as a web browser) get the bandwidth they need. BITS also supports resuming transfers in case of disruptions.
BITS version 1.0 supports only downloads. From version 1.5, BITS supports both downloads and uploads. Uploads require the IIS web server, with BITS server extension, on the receiving side.
BITS transfers files on behalf of requesting applications asynchronously, i.e., once an application requests the BITS service for a transfer, it will be free to do any other job, or even terminate. The transfer will continue in the background as long as the network connection is there and the job owner is logged in. BITS jobs do not transfer when the job owner is not signed in.
BITS suspends any ongoing transfer when the network connection is lost or the operating system is shut down. It resumes the transfer from where it left off when (the computer is turned on later and) the network connection is restored. BITS supports transfers over both HTTP and HTTPS.
BITS uses a queue to manage file transfers. A BITS session has to be started from an application by creating a Job. A job is a container, which has one or more files to transfer. A newly created job doesn't have any files, which must be added to it specifying both the source and destination URIs. While a download job can have any number of files, upload jobs can have only one. Properties can be set for individual files. Jobs inherit the security context of the application that creates them. BITS provides API access to control a job. A job can be programmatically started, stopped, paused, resumed, and queried for status. Before starting a job, a priority has to be set for it, to specify when the job is processed, relative to other jobs in the transfer queue. By default, all jobs are of Normal priority, which can be optionally set to High, Low, or Foreground. Background transfers are optimized by BITS, which increases and decreases (or throttles) the rate of transfer based on the amount of idle network bandwidth that is available. If a network application begins to consume more bandwidth, BITS decreases its transfer rate to preserve the user's interactive experience, except for Foreground priority downloads.
BITS schedules each job to receive only a finite time slice, for which only that job is allowed to transfer, before it is temporarily paused to give another job a chance to transfer. Higher priority jobs get a higher chunk of time slice. BITS uses round-robin scheduling to process jobs in the same priority, and to prevent a large transfer job from blocking smaller jobs.
When a job is newly created, it is automatically suspended (or paused). It has to be explicitly resumed to be activated. Resuming moves the job to queued state. When it is its turn to transfer data, it first connects to the remote server and then starts transferring. After the time slice expires, the transfer is temporarily paused and the job is moved to queued state. When it gets another time slice, it has to connect again before it can transfer. When the job is complete, BITS transfers ownership of the job to the application that created it.
BITS includes built-in mechanism for error handling and recovery attempts. Errors can be either fatal or transient, either moves a job to its respective state. A transient error is a temporary error that resolves itself after some time. For a transient error, BITS waits for sometime and then retries. For fatal errors, transfers the control of the job to its creating application, with as much information regarding the error as it can provide.
BITSAdmin - BITS Administration Utility, command line tool to manage BITS jobs.
It is available as a part of Windows XP Service Pack 2 Support Tools or Windows Server 2003 Service Pack 1 Support Tools and later versions of both, as well as a standard command-line tool in Windows Vista. It is declared deprecated as of Windows 7.
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)