Recent from talks
Nothing was collected or created yet.
Background Intelligent Transfer Service
View on Wikipedia| Background Intelligent Transfer Service (BITS) | |
|---|---|
| Developer | Microsoft |
| Initial release | October 2001 |
| Stable release | 10.3
/ December 7, 2019 |
| Operating system | Microsoft Windows |
| Type | Download manager |
| License | Proprietary commercial software |
| Website | learn |
Background Intelligent Transfer Service (BITS) is a component of Microsoft Windows XP and later iterations of the operating systems, which facilitates asynchronous, prioritized, and throttled 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 System Center Configuration Manager to deliver software updates to clients, Microsoft's anti-virus scanner Microsoft Security Essentials (a later version of Windows Defender) to fetch signature updates, and is also used by Microsoft's instant messaging products to transfer files. BITS is exposed through the Component Object Model (COM) and the UWP API Windows.Networking.BackgroundTransfer.
Technology
[edit]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. BITS also supports resuming transfers in case of disruptions.
BITS version 1.0 supports only downloads. BITS version 1.2 was included in Windows XP SP1 and Windows 2000 SP3. From version 1.5, BITS supports both downloads and uploads. Uploads require the IIS web server, with BITS server extension, on the receiving side.
Transfers
[edit]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 task, 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 SMB, HTTP and HTTPS.
Bandwidth
[edit]BITS attempts to use only spare bandwidth. 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. Note that BITS does not necessarily measure the actual bandwidth. BITS versions 3.0 and up will use Internet Gateway Device counters, if available, to more accurately calculate available bandwidth. Otherwise, BITS will use the speed as reported by the NIC to calculate bandwidth. This can lead to bandwidth calculation errors, for example when a fast network adapter (10 Mbit/s) is connected to the network via a slow link (56 kbit/s).[1]
Jobs
[edit]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 is empty. Files must be added, 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 jobs. 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. Jobs can optionally be set to High, Low, or Foreground priority. 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.
Scheduling
[edit]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 the queued state. On its turn to transfer data, it first connects to the remote server and then starts transferring. After the job's time slice expires, the transfer is temporarily paused, and the job is moved back to the queued state. When the job 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 a built-in mechanism for error handling and recovery attempts. Errors can be either fatal or transient; either moves a job to the respective state. A transient error is a temporary error that resolves itself after some time. For a transient error, BITS waits for some time and then retries. For fatal errors, BITS transfers control of the job to the creating application, with as much information regarding the error as it can provide.
Command-line interface tools
[edit]BITSAdmin command
[edit]Microsoft provides a BITS Administration Utility (BITSAdmin) command-line utility to manage BITS jobs. The utility is part of Windows Vista and later.[2][3] It is also available as a part of the Windows XP Service Pack 2 Support Tools[4] or Windows Server 2003 Service Pack 1 Support Tools.[5]
Usage example:
C:\>bitsadmin /transfer myDownloadJob /download /priority normal https://example.com/file.zip C:\file.zip
PowerShell BitsTransfer
[edit]In Windows 7, the BITSAdmin utility is deprecated in favor of Windows PowerShell cmdlets.[6] The BitsTransfer PowerShell module provides eight cmdlets with which to manage BITS jobs.[7]
The following example is the equivalent of the BITSAdmin example above:
PS C:\> Start-BitsTransfer -Source "https://example.com/file.zip" -Destination "C:\file.zip" -DisplayName "myDownloadJob"
List of non-Microsoft applications that use BITS
[edit]- AppSense – Uses BITS to install Packages on clients.
- BITS Download Manager – A download manager for Windows that creates BITS Jobs.[8]
- BITSync – An open source utility that uses BITS to perform file synchronization on Server Message Block network shares.[9]
- Civilization V – Uses BITS to download mod packages.
- Endless OS installer for Windows – Uses BITS to download OS images.[10]
- Eve Online – Uses BITS to download all the patches post-Apocrypha (March 10, 2009). It is also now used in the client repair tool.
- Some Google services including Chrome, Gears, Pack, Flutter updater and YouTube Uploader used BITS.[citation needed]
- Firefox (since version 68) for updates.[11]
- KBOX Systems Management Appliance – A systems management appliance that can use BITS to deliver files to Windows systems.
- RSS Bandit – Uses BITS to download attachments in web feeds.
- Oxygen media platform – Uses BITS to distribute Media Content and Software Updates.[12]
- SharpBITS – An open source download manager for Windows that handles BITS jobs.[13]
- WinBITS – An open source Downloader for Windows that downloads files by creating BITS Jobs.[14]
- Novell ZENworks Desktop Management – A systems management software that can use BITS to deliver application files to workstations.[15]
- Specops Deploy/App – A systems management software that (when available) uses BITS for delivering packages to the clients in the background.[16]
- FTP Download - Download files using the ftp protocol. Support downloads from servers with expired certificates (ex. old websites). Written in UWP and available on the official Microsoft Store.
See also
[edit]References
[edit]- ^ "MSDN BITS Network Bandwidth". Archived from the original on 2017-04-19. Retrieved 2015-05-01.
- ^ Satran, Michael; Smith, Peter (5 March 2019). "BITSAdmin tool". Windows Dev Center. Microsoft. Archived from the original on 18 April 2020. Retrieved 28 April 2020.
- ^ Ross, Elizabeth; White, Steven; Poggemeyer, Liza; Lee, Thomas; Plett, Corey (16 October 2017). "bitsadmin". Windows IT Pro Center. Microsoft. Archived from the original on 30 April 2019. Retrieved 9 June 2019.
- ^ "Windows XP Service Pack 2 Support Tools". Download Center. Microsoft. 10 August 2004. Archived from the original on 29 April 2020. Retrieved 28 April 2020.
- ^ "Windows Server 2003 Service Pack 1 32-bit Support Tools". Download Center. Microsoft. 30 March 2005. Archived from the original on 21 July 2020. Retrieved 28 April 2020.
- ^ "Manage BITS (Background Intelligent Transfer Service) with Windows PowerShell". TechNet Magazine. Microsoft. Archived from the original on 22 August 2020. Retrieved 25 September 2015.
- ^ "BitsTransfer". Windows IT Pro Center. Microsoft. Archived from the original on 11 November 2020. Retrieved 28 April 2020.
- ^ "BITS Download Manager". Archived from the original on 2020-08-15. Retrieved 2010-01-07.
- ^ "BITSync". Archived from the original on 2009-01-24. Retrieved 2008-12-31.
- ^ Endless Installer for Windows DownloadManager class
- ^ "Firefox 68.0, See All New Features, Updates and Fixes". Mozilla. Archived from the original on 2019-07-11. Retrieved 2019-07-09.
- ^ Oxygen media platform
- ^ "SharpBITS". Archived from the original on 2018-01-22. Retrieved 2021-03-31.
- ^ "WinBITS". Archived from the original on 2019-05-18. Retrieved 2007-11-19.
- ^ "Zenworks 7". Archived from the original on 2009-02-12. Retrieved 2021-03-31.
- ^ "Specops Deploy/App". Archived from the original on 2020-12-20. Retrieved 2021-03-31.
External links
[edit]Background Intelligent Transfer Service
View on GrokipediaOverview
Purpose
The Background Intelligent Transfer Service (BITS) is a Windows component designed to facilitate asynchronous and throttled file transfers between clients and HTTP web servers or SMB file servers, utilizing available idle network bandwidth to avoid interfering with foreground network activities.[6] Introduced with Windows XP in 2001, BITS enables low-priority background operations for downloading files to or uploading files from remote servers, allowing applications to initiate transfers that persist independently of the originating process.[3] The primary objectives of BITS include minimizing the impact on users' available bandwidth by dynamically adjusting transfer rates based on network conditions, ensuring that transfers do not compete with interactive or time-sensitive applications.[6] It supports both download and upload scenarios, with a core focus on reliability through the ability to resume interrupted transfers seamlessly after network disruptions, application closures, or system restarts.[6] Key benefits of BITS encompass its resilience to connectivity issues, which prevents data loss and reduces the need for manual retries, as well as its seamless integration with core Windows services such as Windows Update for efficient delivery of patches and updates without disrupting user workflows.[6] By prioritizing efficiency and resource conservation, BITS enhances overall system performance in managed environments, supporting features like bandwidth throttling to respect metered connections and power policies.[6]History
The Background Intelligent Transfer Service (BITS) was developed by Microsoft to overcome the limitations of synchronous file transfer mechanisms in earlier Windows operating systems, which often disrupted user activities and failed to resume after interruptions such as network disconnections or system restarts.[1] By enabling asynchronous, low-priority transfers that utilize idle bandwidth, BITS was designed primarily to support background tasks like Windows Update without interfering with foreground applications.[6] BITS was initially released as version 1.0 with Windows XP on October 25, 2001, introducing core features such as prioritized and throttled downloads that could resume automatically after restarts or network issues.[3] Subsequent minor updates, including version 1.2 in Windows XP Service Pack 1, provided internal improvements without altering core functionality.[3] Version 1.5, available starting with Windows Server 2003, added support for uploads and upload-reply operations, along with command-line tools and restrictions for non-administrative users.[3] Version 2.0, introduced in Windows XP SP2 and Windows Server 2003 SP1, added support for concurrent foreground downloads, SMB paths, file range downloads, and bandwidth limiting.[3] Key enhancements continued in later Windows versions. Version 2.5, introduced in Windows Vista (released January 30, 2007), Windows Server 2008, and Windows XP SP3, incorporated custom HTTP headers, IPv6 support, and certificate-based authentication, while version 3.0 in Windows Vista and Windows Server 2008 added peer caching for peer-to-peer optimization and User Account Control (UAC) compatibility.[3] Windows 7 (released October 22, 2009) brought version 4.0, which enhanced peer caching through integration with BranchCache, introduced more flexible security tokens, and enabled granular bandwidth throttling for better upload prioritization.[3] Further iterations, such as version 5.0 in Windows 8, Windows Server 2012, and Windows 10 (initially released July 29, 2015), added PowerShell support and non-administrative helper tokens (in Windows 10 version 1607).[3] Version 10.1 was included in Windows 10 Creators Update.[3] In Windows 10 and later, including Windows 11 (released October 5, 2021), BITS evolved with versions 10.2 and 10.3, integrating support for Modern Standby to maintain efficient transfers during low-power states and improving security through server certificate validation and policy-based configurations.[3] These updates emphasized power efficiency and security for modern devices.[3] No major version changes have occurred since Windows 11, with the service remaining stable at version 10.3 as of 2025.[3] BITS continues to be actively used in Windows 11 for background transfers, including updates for Microsoft Edge via Windows Update mechanisms.[7] It also supports Azure-related update processes in Microsoft ecosystems, ensuring reliable file handling for cloud-integrated tasks.[1]Technology
Transfers
The Background Intelligent Transfer Service (BITS) facilitates file transfers using a set of supported protocols tailored to different network resources. It primarily employs HTTP and HTTPS for transfers to and from web servers, enabling secure and standard web-based file movement. Additionally, BITS supports SMB for accessing file shares on local or remote networks, allowing seamless integration with Windows file systems. These protocols ensure compatibility with common infrastructure while maintaining transfer integrity over varied connections.[1][8][9] To handle large files efficiently, BITS employs chunked transfer mechanisms, breaking files into manageable segments for transmission. This approach, combined with HTTP Range headers, allows for precise resumption from the exact byte where a previous transfer interrupted. Resilience is a core feature, with automatic retries triggered on failures such as network timeouts or disconnections; BITS monitors connection health and reattempts transfers exponentially backing off to avoid overwhelming the network. Checkpointing persists transfer state in local storage, enabling resumption even after system reboots, logoffs, or prolonged interruptions without data loss or duplication. These mechanisms ensure high reliability for extended transfers in unstable environments. In recent versions (10.2 and later, Windows 10 October 2018 Update+), BITS supports transfers during Modern Standby on plugged-in devices and customizable HTTP methods for enhanced flexibility.[1][10][8][3] BITS provides symmetric support for both downloads and uploads, treating them similarly in terms of protocol usage and resilience. Downloads pull files from remote sources to the local machine, while uploads push local files to servers; however, in early versions like BITS 1.0 and 2.0 (introduced with Windows XP and Server 2003), uploads were restricted to HTTP POST methods via a custom BITS upload protocol layered on HTTP 1.1, limiting flexibility compared to modern multipart or ranged uploads. Later iterations expanded upload capabilities to full SMB support and more robust HTTP methods. A notable enhancement is peer-to-peer transfers through BITS Peercaching, introduced in Windows Server 2008, which allows clients to source content from nearby peers rather than the origin server, reducing wide-area network load; this feature evolved into integration with BranchCache in subsequent Windows versions for optimized content distribution.[9][1][11] The transfer process begins with job initiation, where an application or administrator creates a BITS job specifying the source, destination, and protocol. Once submitted, the transfer executes in the background, leveraging idle network resources to minimize impact on user activities. Upon completion—or if errors occur—BITS triggers notifications via events, allowing the owning application to respond; transfers persist across sessions as long as the user remains authenticated, ensuring continuity without manual intervention. This flow integrates low-level protocol handling with higher-level orchestration for efficient, unattended operations.[8][1]Jobs
In Background Intelligent Transfer Service (BITS), a job serves as the fundamental unit of work for managing file transfers, encapsulating one or more files to be downloaded from or uploaded to HTTP web servers or SMB file shares. Each job includes properties such as a user-defined display name for identification, a type specifying whether it is a download, upload, or upload-reply operation, a priority level (foreground, high, normal, or low) that influences scheduling relative to other jobs, and optional notifications for state changes or completion events.[12][6] Jobs are created programmatically through the BITS COM API, such as by callingIBackgroundCopyManager::CreateJob to generate a unique GUID and obtain an IBackgroundCopyJob interface, or via command-line tools like BitsAdmin or PowerShell cmdlets such as Start-BitsTransfer. Upon creation, the job starts in a suspended state, allowing files to be added and properties to be configured before resuming the transfer. Download jobs support multiple files (up to 200), while upload and upload-reply jobs are limited to one file; files are added using methods like AddFile or AddFileSet, enabling efficient batch operations with individual local and remote paths.[12][13][14]
Job states progress through a defined life cycle, beginning in the SUSPENDED state for setup, then transitioning to QUEUED (awaiting execution), CONNECTING (establishing server connection), and TRANSFERRING (active data movement) as the transfer proceeds. If interruptions occur, the job may enter TRANSIENT_ERROR for automatic retries, governed by configurable delays and timeouts; persistent issues lead to the ERROR state. Successful transfers reach TRANSFERRED, with upload-reply jobs additionally awaiting server acknowledgment before finalizing. Monitoring occurs via IBackgroundCopyJob::GetState for state queries, progress retrieval through GetProgress, and error details via GetError, which can identify context like HRESULT codes; events such as BG_NOTIFY_JOB_TRANSFERRED enable asynchronous notifications for state changes. For uploads, an additional ACKNOWLEDGED_UPLOAD_REPLY state confirms receipt of the server reply after transfer. Individual files within a job can encounter errors, queried separately via IBackgroundCopyError::GetFile to isolate issues without affecting the entire job.[15][16][17][15]
Upon reaching the TRANSFERRED state, a job completes by calling IBackgroundCopyJob::Complete, which finalizes the operation, renames temporary download files to their specified local paths (making them accessible), and transitions the job to ACKNOWLEDGED; incomplete jobs auto-cancel after 90 days, deleting temporary files but retaining uploaded data. Success or error conditions trigger notifications if registered, allowing applications to handle outcomes like logging or user alerts; transient errors retry automatically, while fatal ones require manual intervention, such as canceling the job with Cancel to remove all associated temporary files.[18][19][17]
Bandwidth Management
Background Intelligent Transfer Service (BITS) employs a throttling mechanism that dynamically adjusts transfer rates based on available network bandwidth to minimize interference with foreground activities. It monitors network traffic through the Internet Gateway Device (IGD) using UPnP or directly via the network interface card (NIC) to detect idle capacity.[20] When user applications increase bandwidth consumption, BITS reduces its transfer rate accordingly, ensuring that interactive experiences like browsing or streaming remain unaffected.[6] This adaptive approach allows BITS to utilize most of the available bandwidth during low-activity periods while scaling back during high usage.[20] BITS detects idle time by continuously observing patterns in network usage, such as outbound and inbound byte counts at the IGD or NIC level. If no other applications are active on the local network interface, BITS will consume nearly all available bandwidth, even if downstream network segments are congested.[20] During high-activity periods, such as video streaming or file downloads by foreground apps, BITS pauses or throttles transfers to preserve performance for those activities. Additionally, it incorporates Low Extra Delay Background Transport (LEDBAT) on HTTP connections to alleviate network congestion and enhance overall quality of service (QoS).[20][21] For uploads and downloads, BITS applies separate considerations in its throttling, with policies allowing distinct limits for background transfers in each direction. Upload jobs, for instance, can be constrained by session limits, defaulting to a maximum of 50 concurrent upload sessions per user on IIS-enabled servers.[22] Peer caching, integrated via Windows BranchCache, further optimizes bandwidth by enabling devices to share locally cached files with peers on the same network, thereby reducing reliance on external internet bandwidth for repeated transfers.[23][6] This feature limits the bandwidth used for serving content to peers at 1 Mbps by default, which helps prevent overload on local networks.[23] Configuration of bandwidth management in BITS is achieved through Group Policy settings and corresponding registry keys under HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\BITS. Administrators can set maximum bandwidth limits in kilobits per second (Kbps) for specific time windows, such as during business hours, with a minimum enforceable limit of 2 Kbps; a value of 0 effectively blocks transfers.[24] For example, the MaxInternetBandwidth policy (introduced in BITS 2.0) allows defining schedules like 10 Kbps from 8:00 A.M. to 5:00 P.M., while later versions add work-hour and maintenance-specific throttles.[24] These limits integrate with broader QoS policies via mechanisms like LEDBAT, and job priorities can influence bandwidth allocation among active transfers. Registry entries enable fine-tuning of parameters such as maximum bytes per second for transfers, ensuring enterprise-level control without impacting default idle-time behavior.[24][20]Scheduling
BITS manages file transfer jobs through a queuing system where new jobs are added to a transfer queue upon resumption from a suspended state.[15] Jobs are assigned one of four priority levels—foreground, high, normal, or low—which determine their execution order relative to others in the queue.[25] Higher-priority jobs preempt lower-priority ones, ensuring critical transfers proceed first, while jobs of the same priority are scheduled using a round-robin algorithm that allocates time slices to each.[6] Execution occurs only when system resources, such as idle network bandwidth, are available, preventing interference with foreground applications or active user tasks.[6] Several triggers influence when queued jobs are processed. BITS detects system idleness, particularly idle network capacity, to initiate or resume transfers without impacting user experience.[6] On battery-powered devices, transfers may pause during battery saver mode to conserve power, though they resume on AC power or when the mode ends. In versions 10.2 and later (Windows 10 October 2018 Update+), BITS supports scheduling during Modern Standby with MDM policies for enterprise management.[15][3] Administrators can configure time windows via Group Policy to restrict background transfers during specified periods, such as business hours, by setting bandwidth limits to zero, effectively queuing jobs until the window closes.[24] In cases of transient errors during transfers, BITS implements retry logic by automatically attempting resumption after a configurable minimum retry delay, defaulting to 600 seconds (10 minutes).[26] Jobs remain in a transient error state until successful or until the NoProgressTimeout expires, after which they enter an error state; the default inactivity timeout is 90 days before cancellation.[15] For custom timing beyond these defaults, BITS integrates with Windows Task Scheduler, allowing jobs to be programmatically resumed at scheduled intervals.[27] BITS supports multi-session handling by allowing all foreground-priority jobs to run concurrently alongside a single background-priority job, with files within each job processed serially.[15] Foreground jobs always take precedence over background ones, ensuring interactive transfers are not delayed.[19] The total number of queued jobs is capped at 300 per machine and 60 per user by default, configurable via Group Policy to manage system load.[24]Interfaces
Command-Line Tools
BITSAdmin is a legacy command-line tool provided by Microsoft for managing Background Intelligent Transfer Service (BITS) jobs, allowing users to create, monitor, and control file transfers without requiring programming knowledge.[28] It supports commands such as adding files to jobs (bitsadmin /addfile), resuming suspended transfers (bitsadmin /resume), completing jobs (bitsadmin /complete), and listing active jobs (bitsadmin /list).[28] A basic syntax example for creating and initiating a download job is bitsadmin /create /download MyJob http://example.com/file.exe C:\Downloads\file.exe, followed by bitsadmin /resume MyJob to start the transfer.[29] Although deprecated since Windows 7 and Windows Server 2008 R2, BITSAdmin remains functional on modern Windows versions for backward compatibility.[30]
For contemporary management of BITS jobs, Microsoft provides the BitsTransfer PowerShell module, which offers cmdlets like Add-BitsFile to append files to a job, Start-BitsTransfer to initiate transfers, and Complete-BitsTransfer to finalize and save downloaded files.[31] These cmdlets enable scripting for automated workflows, including error handling through constructs like try-catch blocks to manage interruptions or failures in transfers.[14] For instance, a simple script might use Start-BitsTransfer -Source "http://example.com/file.exe" -Destination "C:\Downloads\file.exe" to queue a synchronous download.[32]
Command-line tools like BITSAdmin and BitsTransfer cmdlets are commonly used for manual file transfers in administrative tasks, such as downloading updates or monitoring the BITS queue with commands like bitsadmin /list or Get-BitsTransfer.[33] However, they lack a graphical user interface, relying entirely on text-based input, and certain operations—such as modifying system-wide job priorities—require elevated administrator privileges.[34] As of 2019, Microsoft has recommended transitioning to PowerShell BitsTransfer cmdlets over the deprecated BITSAdmin for all new scripts and administrative routines to ensure long-term compatibility.[30]
Programming APIs
The Background Intelligent Transfer Service (BITS) exposes a Component Object Model (COM)-based application programming interface (API) that enables developers to create, manage, and monitor asynchronous file transfers within Windows applications. The central interface, IBackgroundCopyManager, facilitates job creation via the CreateJob method, which initializes a new transfer job and returns an IBackgroundCopyJob pointer for subsequent operations such as adding files or setting priorities. Job enumeration is handled through the EnumJobs method, allowing applications to retrieve and inspect active or completed transfers. This COM API has been available since Windows XP, providing a robust foundation for integrating BITS into custom software.[1][35] For .NET developers, BITS functionality is accessible through managed wrappers, primarily the BitsManager class in the Microsoft.BackgroundIntelligentTransfer namespace, which abstracts the underlying COM interfaces for easier integration. These wrappers support asynchronous operations, such as creating download jobs and handling completion events, and were first introduced with .NET Framework 4.0 to enable seamless use in managed code environments. Enhancements documented in 2019 extended compatibility to modern .NET runtimes, including support for .NET Core via sample implementations and updated DLL references like BITSReference1_5.dll. A representative C# example for initiating an asynchronous download involves instantiating the manager, creating a job, adding a remote file, and resuming the transfer:using [Microsoft](/page/Microsoft).BackgroundIntelligentTransfer;
var manager = new BackgroundCopyManager();
Guid jobGuid;
IBackgroundCopyJob job;
manager.CreateJob("Sample Download", BG_JOB_TYPE.BG_JOB_TYPE_DOWNLOAD, out jobGuid, out job);
job.AddFile("[https](/page/HTTPS)://example.com/file.exe", @"C:\local\file.exe");
job.Resume();
job.RegisterStateCallback(this, null); // For notifications
using [Microsoft](/page/Microsoft).BackgroundIntelligentTransfer;
var manager = new BackgroundCopyManager();
Guid jobGuid;
IBackgroundCopyJob job;
manager.CreateJob("Sample Download", BG_JOB_TYPE.BG_JOB_TYPE_DOWNLOAD, out jobGuid, out job);
job.AddFile("[https](/page/HTTPS)://example.com/file.exe", @"C:\local\file.exe");
job.Resume();
job.RegisterStateCallback(this, null); // For notifications
Applications
Microsoft Uses
Background Intelligent Transfer Service (BITS) has been a core component of Windows Update since its introduction in Windows XP, enabling the download of patches and updates by leveraging idle network bandwidth to minimize disruption to other activities.[3] Windows Update employs BITS jobs to handle these transfers, including support for delta updates that deliver only changed portions of files, thereby reducing data volume and transfer times.[1] This approach ensures reliable, resumable downloads even during network interruptions or power loss.[6] These implementations incorporate Delivery Optimization, which builds on BITS by enabling peer-to-peer caching to further optimize bandwidth usage across devices.[41] Windows Server Update Services (WSUS) relies on BITS to download updates from Microsoft Update servers to the WSUS server itself, facilitating efficient enterprise-wide patch distribution.[3] Microsoft System Center Configuration Manager also uses BITS for delivering updates and software in enterprise environments.[1] BITS performance in these contexts is configurable through Windows settings, such as Delivery Optimization options in Windows 11 under Settings > Windows Update > Delivery Optimization, where users can adjust bandwidth limits to balance transfer speeds with network priorities.[41]Third-Party Applications
Several third-party applications integrate the Background Intelligent Transfer Service (BITS) to manage file downloads and updates in the background, taking advantage of its capabilities for bandwidth throttling and resumability. This allows developers to offload transfer tasks to the operating system's native service, minimizing user interruption and optimizing network usage during idle periods. For instance, Google Chrome employs BITS for its automatic background updates on Windows systems, ensuring seamless installation without impacting foreground activities.[42] Similarly, Skype for Business uses BITS to download Address Book Services files, facilitating efficient synchronization of contact data.[43] These integrations highlight BITS's role in enhancing user experience for software maintenance. By leveraging the service's API, third-party developers can schedule transfers that resume after interruptions, such as network outages, and limit usage to avoid competing with user-initiated activities.[1] As of 2025, BITS remains a supported component in Windows, though some applications are transitioning to custom protocols for greater control over transfer behaviors.[1]| Application | Version Introduced | Primary Use Case |
|---|---|---|
| Google Chrome | 2008 | Automatic background updates |
| Skype for Business | 2010 | Downloading address book files |
