Материал из РУВИКИ — свободной энциклопедии

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.

Примечания

[править | править код]
  1. MSDN BITS Network Bandwidth. Дата обращения: 1 мая 2015. Архивировано 19 апреля 2017 года.
  2. Satran, Michael; Smith, Peter BITSAdmin tool. Windows Dev Center. Microsoft (5 марта 2019). Дата обращения: 28 апреля 2020. Архивировано 18 апреля 2020 года.
  3. Ross, Elizabeth; White, Steven; Poggemeyer, Liza; Lee, Thomas; Plett, Corey bitsadmin. Windows IT Pro Center. Microsoft (16 октября 2017). Дата обращения: 9 июня 2019. Архивировано 30 апреля 2019 года.
  4. Windows XP Service Pack 2 Support Tools. Download Center. Microsoft (10 августа 2004). Дата обращения: 28 апреля 2020. Архивировано 29 апреля 2020 года.
  5. Windows Server 2003 Service Pack 1 32-bit Support Tools. Download Center. Microsoft (30 марта 2005). Дата обращения: 28 апреля 2020. Архивировано 21 июля 2020 года.
  6. Manage BITS (Background Intelligent Transfer Service) with Windows PowerShell. TechNet Magazine. Microsoft. Дата обращения: 25 сентября 2015. Архивировано 22 августа 2020 года.
  7. BitsTransfer. Windows IT Pro Center. Microsoft. Дата обращения: 28 апреля 2020. Архивировано 11 ноября 2020 года.
  8. BITS Download Manager. Дата обращения: 7 января 2010. Архивировано 15 августа 2020 года.
  9. BITSync. Дата обращения: 31 декабря 2008. Архивировано 24 января 2009 года.
  10. Endless Installer for Windows DownloadManager class
  11. Firefox 68.0, See All New Features, Updates and Fixes. Mozilla. Дата обращения: 9 июля 2019. Архивировано 11 июля 2019 года.
  12. Oxygen media platform
  13. SharpBITS. Дата обращения: 31 марта 2021. Архивировано 22 января 2018 года.
  14. WinBITS. Дата обращения: 19 ноября 2007. Архивировано 18 мая 2019 года.
  15. Zenworks 7. Дата обращения: 31 марта 2021. Архивировано 12 февраля 2009 года.
  16. Specops Deploy/App. Дата обращения: 31 марта 2021. Архивировано 20 декабря 2020 года.