Background Intelligent Transfer Service
| Background Intelligent Transfer Service | |
|---|---|
| Тип | Менеджер загрузок |
| Разработчик | Microsoft |
| Операционная система | Microsoft Windows |
| Первый выпуск | октябрь 2001 |
| Последняя версия | 10.3 (7 декабря 2019) |
| Лицензия | проприетарная, коммерческая |
| Сайт | learn.microsoft.com/en-u… |
Background Intelligent Transfer Service — компонент Microsoft Windows XP и более поздних версий операционной системы, предназначенный для асинхронной, приоритетной и ограничиваемой передачи файлов между машинами с использованием неиспользуемой пропускной способности сети. Чаще всего применяется современными версиями Windows Update, Microsoft Update, Windows Server Update Services и System Center Configuration Manager для доставки обновлений ПО клиентам, антивирусным сканером Microsoft Security Essentials (позднее — Windows Defender) для загрузки обновлений сигнатур, а также используется в продуктах мгновенного обмена сообщениями Microsoft для передачи файлов. Доступ к функционалу BITS осуществляется через COM и UWP API Windows.Networking.BackgroundTransfer.
Технологии
BITS использует неиспользуемую пропускную способность для передачи данных. Обычно сервис работает в фоновом режиме, то есть осуществляет передачу только тогда, когда пропускная способность не занята другими приложениями. Также поддерживается возобновление передачи после сбоев.
Первая версия BITS 1.0 поддерживает только загрузку данных. Начиная с версии 1.5, BITS может выполнять как загрузку, так и передачу данных. Для загрузки требуется IIS с расширением BITS на принимающей стороне.
Передачи
BITS асинхронно передаёт файлы от имени приложений, которые сделали соответствующий запрос — после этого приложение может выполнять другие задачи или вообще завершить работу. Передача продолжается в фоновом режиме при условии наличия сетевого соединения и если владелец задания вошёл в систему. Передачи BITS не выполняются при отсутствии пользователя.
Прогресс задания приостанавливается при потере сети или завершении работы ОС; после восстановления соединения передача продолжается с того же места. BITS поддерживает протоколы SMB, HTTP, HTTPS.
Пропускная способность
BITS старается использовать только свободную пропускную способность. Например, если приложения используют 80 % канала, BITS будет использовать оставшиеся 20 %. Служба постоянно мониторит сеть и регулирует (ограничивает) скорость передачи, чтобы другим приложениям (например, веб-браузеру) хватало ресурса.
При этом BITS не всегда измеряет фактическую пропускную способность. Версии 3.0 и выше используют счётчики Internet Gateway Device, если они доступны, для более точного расчёта доступного канала; иначе используется скорость, определяемая сетевым адаптером. Это может приводить к ошибкам расчёта, например, если высокоскоростной адаптер (10 Мбит/с) подключён через медленное соединение (56 кбит/с)[1].
Задания
BITS использует очередь для управления передачами. Сессия BITS создаётся приложением путём создания задания (Job). Задание — это контейнер, содержащий один или несколько файлов. Новое задание по умолчанию пустое. Для каждого файла указываются исходный и конечный URI. Задания на загрузку могут содержать несколько файлов, а задания на отправку — только один. Для файлов можно задавать индивидуальные параметры. Задания наследуют контекст безопасности приложения.
BITS предоставляет API для управления заданиями: их можно запускать, останавливать, ставить на паузу, возобновлять и запрашивать статус. Перед запуском задаётся приоритет — по умолчанию Normal, также возможны High, Low и Foreground. Фоновые передачи оптимизируются — скорость адаптируется к доступному каналу. Если приложения занимают больше пропускной способности, BITS уменьшает свою скорость, чтобы не мешать работе пользователя (кроме передач с приоритетом Foreground).
Планирование
BITS планирует задания так, чтобы каждое получало только ограниченный тайм-слот, в течение которого только оно выполняется, после чего временно приостанавливается для передачи прав другому заданию. Задания с более высоким приоритетом получают больше времени: используется круговой алгоритм для заданий с одинаковым приоритетом, чтобы большие передачи не «блокировали» мелкие.
После создания задание находится в состоянии «приостановлено» (paused). Его нужно явно «возобновить». После возобновления оно переходит в очередь и ждёт своей очереди на подключение и передачу. По окончании своего тайм-слота задание возвращается в очередь. После завершения передачи BITS отдаёт управление приложению, которое создало задание.
В BITS встроены механизмы обработки ошибок и восстановления: ошибка может быть фатальной или временной — от этого зависит дальнейшее состояние. В случае временных ошибок BITS ожидает и пробует снова; фатальные ошибки приводят к возврату управления приложению с подробной информацией для пользователя.
Команда BITSAdmin
| BITSAdmin | |
|---|---|
| Тип | Командная строка |
| Разработчик | Microsoft |
| Операционная система | Microsoft Windows |
| Последняя версия | 3.0 |
| Лицензия | проприетарная, коммерческая |
| Сайт | docs.microsoft.com/en-us… |
Microsoft предоставляет утилиту администрирования BITS (BITSAdmin) с интерфейсом командной строки для управления заданиями. Она входит в состав Windows Vista и более новых версий[2].[3] Также доступна как часть Windows XP Service Pack 2 Support Tools[4] и Windows Server 2003 Service Pack 1 Support Tools[5].
Пример использования:
C:\>bitsadmin /transfer myDownloadJob /download /priority normal https://example.com/file.zip C:\file.zip
PowerShell BitsTransfer
В Windows 7 утилита BITSAdmin признана устаревшей в пользу набора cmdlet Windows PowerShell[6]. Модуль PowerShell BitsTransfer содержит восемь cmdlet для управления заданиями[7].
Эквивалентный пример на PowerShell:
PS C:\> Start-BitsTransfer -Source "https://example.com/file.zip" -Destination "C:\file.zip" -DisplayName "myDownloadJob"
Список сторонних приложений, использующих BITS
- AppSense — использует BITS для установки пакетов на клиентских машинах.
- BITS Download Manager — менеджер загрузок для Windows, создающий задания BITS[8].
- BITSync — утилита с открытым исходным кодом, использующая BITS для синхронизации файлов по SMB[9].
- Civilization V — использует BITS для загрузки модификаций.
- Установщик Endless OS для Windows — использует BITS для скачивания образов ОС[10].
- Eve Online — применяет BITS для загрузки патчей после Apocrypha (10 марта 2009), а также в инструменте восстановления клиента.
- Некоторые сервисы Google, включая Chrome, Gears, Pack, обновление Flutter и YouTube Uploader ограниченно использовали BITS.
- Firefox (с версии 68) для обновлений[11].
- KBOX Systems Management Appliance — система управления, использующая BITS для доставки файлов на Windows-машины.
- RSS Bandit — использует BITS для загрузки вложений из RSS-лент.
- Oxygen media platform — платформа для распространения медиаконтента и обновлений через BITS[12].
- SharpBITS — открытый исходный код, менеджер загрузок для Windows, работающий с BITS[13].
- WinBITS — открытый исходный код, утилита загрузки для Windows, использующая BITS[14].
- Novell ZENworks Desktop Management — программное обеспечение для управления системами, использующее BITS[15].
- Specops Deploy/App — система управления, задействующая BITS для фоновой передачи пакетов[16].
- FTP Download — скачивание файлов через FTP, поддержка загрузки с серверов c истёкшим сертификатом (например, старые сайты). Программа написана на UWP и есть в магазине Microsoft.
Примечания
- ↑ MSDN BITS Network Bandwidth. Дата обращения: 1 мая 2015. Архивировано 19 апреля 2017 года.
- ↑ Satran, Michael; Smith, Peter BITSAdmin tool. Windows Dev Center. Microsoft (5 марта 2019). Дата обращения: 28 апреля 2020. Архивировано 18 апреля 2020 года.
- ↑ Ross, Elizabeth; White, Steven; Poggemeyer, Liza; Lee, Thomas; Plett, Corey bitsadmin. Windows IT Pro Center. Microsoft (16 октября 2017). Дата обращения: 9 июня 2019. Архивировано 30 апреля 2019 года.
- ↑ Windows XP Service Pack 2 Support Tools. Download Center. Microsoft (10 августа 2004). Дата обращения: 28 апреля 2020. Архивировано 29 апреля 2020 года.
- ↑ Windows Server 2003 Service Pack 1 32-bit Support Tools. Download Center. Microsoft (30 марта 2005). Дата обращения: 28 апреля 2020. Архивировано 21 июля 2020 года.
- ↑ Manage BITS (Background Intelligent Transfer Service) with Windows PowerShell. TechNet Magazine. Microsoft. Дата обращения: 25 сентября 2015. Архивировано 22 августа 2020 года.
- ↑ BitsTransfer. Windows IT Pro Center. Microsoft. Дата обращения: 28 апреля 2020. Архивировано 11 ноября 2020 года.
- ↑ BITS Download Manager. Дата обращения: 7 января 2010. Архивировано 15 августа 2020 года.
- ↑ BITSync. Дата обращения: 31 декабря 2008. Архивировано 24 января 2009 года.
- ↑ Endless Installer for Windows DownloadManager class
- ↑ Firefox 68.0, See All New Features, Updates and Fixes. Mozilla. Дата обращения: 9 июля 2019. Архивировано 11 июля 2019 года.
- ↑ Oxygen media platform
- ↑ SharpBITS. Дата обращения: 31 марта 2021. Архивировано 22 января 2018 года.
- ↑ WinBITS. Дата обращения: 19 ноября 2007. Архивировано 18 мая 2019 года.
- ↑ Zenworks 7. Дата обращения: 31 марта 2021. Архивировано 12 февраля 2009 года.
- ↑ Specops Deploy/App. Дата обращения: 31 марта 2021. Архивировано 20 декабря 2020 года.