Intelligenter Hintergrundübertragungsdienst (BITS)
Was ist der intelligente Hintergrundübertragungsdienst von Microsoft Windows (BITS)?
Der intelligente Hintergrundübertragungsdienst (Microsoft Windows Background Intelligent Transfer Service, BITS) ist ein Dienst in Microsoft-Windows-Betriebssystemen, der das Herunter- und Hochladen von Dateien auf Hypertext-Transfer-Protocol-Webserver (HTTP) und Server-Message-Block-Dateiserver (SMB) ermöglicht.
BITS verwendet ungenutzte Netzwerkbandbreite, um Dateien im Hintergrund oder im Vordergrund zu übertragen, so dass die Arbeit des Benutzers im Vordergrund nur minimal beeinträchtigt wird. Die Deaktivierung des Dienstes verhindert, dass alle Anwendungen, die von BITS abhängig sind, automatisch Programme und andere wichtige Informationen herunterladen.
Die Dateiübertragungen – zum Beispiel zwischen einem Client-Rechner und einem Server – sind asynchron und finden im Vordergrund oder Hintergrund statt. Das bedeutet, dass eine Anwendung, die BITS für eine Dateiübertragung anfordert, jede andere Aufgabe frei ausführen kann.
BITS umfasst PowerShell-Cmdlets zum Erstellen und Verwalten von Übertragungen und das Befehlszeilenprogramm BITSAdmin zum Erstellen von Download- oder Upload-Aufträgen zum Überwachen ihres Fortschritts. Auch umfasst der Dienst eine Funktion zur Verwaltung von Warteschlangen, mit der Dateiübertragungsanforderungen von Anwendungen priorisiert werden können.
Bei einer Störung oder Unterbrechung im Netzwerk stellt BITS automatisch die Verbindung wieder her und setzt die Dateiübertragung fort, sobald das Netzwerk oder der Rechner wieder betriebsbereit ist. Auch nach einem Neustart kann BITS Übertragungen automatisch unterbrechen und fortsetzen. Es überträgt auch dann Dateien, wenn das Gerät an das Stromnetz angeschlossenen ist und sich im modernen Standby-Modus befindet, so dass die Leistungsaufnahme geringgehalten wird.
Lebenszyklus eines BITS-Auftrags
Ein BITS-Auftrag (Job) ist ein Container, der eine oder mehrere Dateien enthält, die zu oder von HTTP-Webservern und SMB-Dateiservern übertragen werden sollen. Ein Auftrag hat Eigenschaften, die festlegen, wie BITS die Dateien überträgt und mit den Anwendungen interagiert.
Der Lebenszyklus eines Auftrags beginnt mit seiner Erstellung. Hier legt der Benutzer die Priorität des Auftrags fest, ob es sich um einen Upload oder Download handelt und für welche Ereignisse er eine Benachrichtigung erhalten möchte. Sobald der Auftrag erstellt ist, können ihm Dateien hinzugefügt werden – bei Upload-Aufträgen maximal eine Datei. Die Auftragseigenschaften können auch je nach Anwendung geändert werden. Wenn Sie dem Auftrag eine oder mehrere Dateien hinzufügen, ist es wichtig, den lokalen (Client) und den entfernten (Server) Namen der Datei anzugeben.
BITS hält bei der Erstellung von Aufträgen die Aufträge automatisch an. Um den Auftrag in der Übertragungsschleife zu aktivieren, muss der Benutzer ihn wieder aufnehmen: das heißt, um ihn aus dem angehaltenen Zustand in den Zustand der Warteschlange zu versetzen. Er bleibt in der Warteschlange, bis der BITS-Scheduler feststellt, dass er an der Reihe ist, Dateien zu übertragen. Dann wechselt der Auftrag in den Verbindungsstatus und BITS stellt eine Verbindung zum Remote-Server her. Anschließend wechselt er in den Übertragungsstatus und bleibt dort, bis eine der folgenden vier Bedingungen eintritt:
1. Das Zeitfenster schließt sich.
2. Die Übertragung ist abgeschlossen.
3. Es liegt ein Fehler vor.
4. Die Anwendung unterbricht den Auftrag.
Der Auftrag geht in den Status Übertragen über, wenn BITS alle Dateien übertragen hat. Die übertragenen Dateien stehen dem Client erst dann zur Verfügung, wenn die Anwendung die Methode IBackgroundCopyJob::Complete aufruft und das Eigentum an den Dateien von BITS auf den Benutzer übertragen wird.
Wie BITS die Benutzererfahrung beeinflußt
Abhängig von der verfügbaren, freien Netzwerkbandbreite erhöht oder verringert BITS die Geschwindigkeit, mit der Dateien übertragen werden. Wenn eine Anwendung anfängt, mehr Bandbreite zu verbrauchen, verringert BITS automatisch die Dateiübertragungsrate, so dass die Benutzererfahrung insgesamt erhalten bleibt und sichergestellt wird, dass Hintergrundübertragungen optimal sind.
Solange der Benutzer, der die Dateiübertragung initiiert hat, im Netzwerk angemeldet bleibt und eine Netzwerkverbindung besteht, fährt BITS mit der Übertragung von Dateien fort, auch wenn die Anwendung selbst beendet wird. BITS erzwingt jedoch keine Netzwerkverbindung, wenn diese unterbrochen wird oder wenn sich ein Benutzer abmeldet. Stattdessen wird der Übertragungsauftrag zunächst unterbrochen und dann wieder aufgenommen, nachdem die verlorene Verbindung wiederhergestellt wurde oder nachdem sich ein abgemeldeter Benutzer wieder abgemeldet hat.
BITS berücksichtigt stehts die Kosten für die Dateiübertragung und die Netzwerknutzung sowie die Netzwerküberlastung. Außerdem verwendet es app-spezifische Übertragungsrichtlinien, um die Übertragung von Dateien über kostenpflichtige Netzwerkverbindungen zu verhindern. Diese Überlegungen sind besonders wichtig bei Roaming-Netzwerken, wo die Kosten schnell in die Höhe schießen können. BITS trägt auch dazu bei, die Auswirkungen auf die Arbeit des Benutzers im Vordergrund zu minimieren, so dass die Arbeit mit dem System für den Benutzer angenehmer wird.
Anwendungen von BITS
BITS ist besonders nützlich für Systemadministratoren, die Dateien von HTTP-Webservern und SMB-Dateifreigaben herunterladen oder auf diese hochladen möchten. Darüber hinaus bietet er eine Component-Object-Model-Schnittstelle, die für C-, C++- und .NET-Programmierer nützlich ist. Microsoft empfiehlt die BITS-API nicht für Programmierer der Universal Windows Platform. Sie sollten stattdessen die Windows-Networking-BackgroudTransfer-API verwenden.
Um Updates auf das lokale System eines Benutzers herunterzuladen, verwendet Windows BITS. Viele anderen Anwendungen verwenden ebenfalls BITS, einschließlich Anwendungen, die Dateien von einem HTTP- oder Representational-State-Transfer-Webserver oder SMB-Dateiserver herunterladen oder auf diesen hochladen müssen. Anwendungen, die Dateiübertragungen nach einer Netzwerktrennung oder einem Computerneustart automatisch wieder aufnehmen müssen, verwenden ebenfalls BITS. Schließlich wird BITS in Verbindung mit BranchCache, einer WAN-Optimierungstechnologie, die in einigen Editionen von Windows und Windows Server ist, zur Optimierung des Datenverkehrs in Weitverkehrsnetzen eingesetzt.
Arten von Übertragungsaufträgen und Auftragsstatus in BITS
BITS unterstützt drei Arten von Übertragungsaufträgen:
1. Download-Auftrag: Er lädt Dateien auf den Client herunter. Außerdem werden alle Dateien asynchron im Vorder- und Hintergrund übertragen.
2. Upload-Auftrag: Er lädt eine Datei vom Client auf den Server hoch.
3. Upload-Antwort-Auftrag: Er lädt zunächst eine Datei auf den Server hoch und erhält dann eine Antwortdatei von der Serveranwendung, dass der Upload abgeschlossen ist.
Ein BITS-Auftrag befindet sich in einem von vier Zuständen:
1. Starten: Standardmäßig ist der Startstatus SUSPENDED. In diesem Zustand kann ein Benutzer dem Auftrag Dateien hinzufügen und Auftrags- und Dateieigenschaften festlegen.
2. Aktion: Es sind mehrere Aktionsstatus möglich, die die aktuelle interne Aktivität des Auftrags anzeigen, zum Beispiel QUEUED, CONNECTING und TRANSFERRING. Ein weiterer Aktionsstatus ist TRANSIENT ERROR, der anzeigt, dass der Auftrag die Datei nicht übertragen konnte.
3. Übertragen: Dieser Zustand tritt ein, wenn die Übertragung erfolgreich war und keine weitere Übertragung erfolgreich war und keine weitere Übertragung mehr folgen muss.
4. Abgeschlossen: Der Auftrag ist ACKNOWLEDGED und alle fertig heruntergeladenen Dateien sind verfügbar.
Während ein BITS-Auftrag läuft, wechselt er zwischen den Zuständen der verschiedenen Zustandsklassen. Sobald er jedoch einen endgültigen Zustand erreicht hat, verlässt er diesen nicht mehr. Das heißt, es ist nicht möglich, Methoden zur Änderung des Zustands aufzurufen. Er wird auch nicht in einer Job-Aufzählung erscheinen. Tritt ein Fehler auf, wechselt der Auftrag in den fatalen Fehlerstatus (BITS erholt sich davon nicht) oder in den transienten Fehlerstatus (der Fehler behebt sich selbst und BITS versucht den Auftrag erneut, bis die Übertragung erfolgreich ist oder der Auftrag innerhalb der von der Anwendung festgelegten Zeitspanne abbricht). Wenn ein Auftrag im Zustand des transienten Fehlers ausfällt, geht BITS in den Zustand des fatalen Fehlers über.
Prioritätsstufen des BITS
Auf intelligente Weise wählt BITS aus, welche Übertragungsaufträge wann ausgeführt werden sollen. Das liegt daran, dass die Anwendung verschiedene Prioritätsstufen verwendet: eine für den Vordergrund und drei für den Hintergrund. Die Prioritätsstufe bestimmt, wann ein Übertragungsauftrag im Verhältnis zu anderen Aufträgen in der Übertragungsauftrag im Verhältnis zu anderen Aufträgen in der Übertragungswarteschlange bearbeitet wird. Das heißt:
- Ein Auftrag mit höherer Priorität hat Vorrang vor einem Auftrag mit niedrigerer Priorität.
- Aufträge mit niedrigerer Priorität erhalten erst dann Übertragungszeit, wenn alle Aufträge mit höherer Priorität übertragen wurden oder sich in einem Fehlerzustand befinden.
- Aufträge der gleichen Prioritätsstufe teilen sich die Übertragungszeit, so dass kein großer Auftrag die Übertragungswarteschlangen blockieren und Verzögerungen verursachen kann.
Für die Planung von Aufträgen der gleichen Prioritätsstufe verwendet BITS ein Round-Robin-Verfahren, bei dem jeder Auftrag eine bestimmte Zeitspanne zur Verarbeitung seiner Dateien zugewiesen wird. Wenn ein bestimmter Auftrag nicht innerhalb der ihm zugewiesenen Zeitspanne abgeschlossen wird, geht er automatisch in die Warteschlange zurück, und der nächste Auftrag in der Warteschlange wird nach dem FIFO-Prinzip (First in – First out) aktiviert. An dieser Stelle sei darauf hingewiesen, dass BITS keine FIFO-Verarbeitung garantiert, obwohl es sein Bestes gibt.
In BITS 1.5 und früheren Versionen haben Aufträge im Vordergrund Vorrang vor Aufträgen im Hintergrund. Tatsächlich haben Vordergrundsaufträge die höchste Priorität und BITS verarbeitet immer nur einen Auftrag zur gleichen Zeit. In späteren BITS-Versionen können mehrere Übertragungen im Vordergrund gleichzeitig stattfinden, aber mehrere Dateien in einem Auftrag werden immer sequenziell oder seriell übertragen.
Die Geschichte des BITS
Microsoft hat BITS mehrmals aktualisiert:
- Microsoft führte Version 1.0 von BITS in Windows XP im Jahr 2001 ein.
- Version 1.2 wurde Mitte 2002 eingeführt, um den Dienst Automatische Updates in Windows 2000 zu integrieren.
- Ende 2003 wurde Version 1.5 zusammen mit Windows Server 2003 eingeführt und bot Befehlszeilenunterstützung, weitere Upload-Funktionen und Sicherheitsverbesserungen.
- Version 2.0, die Mitte 2004 als Update für Installationen mit mehreren Betriebssystemen veröffentlicht wurde, fügte weitere Download-Funktionen, Bandbreitendrosselung und Unterstützung für SMB hinzu.
- BITS 2.5 wurde Mitte 2007 veröffentlicht und bot Unterstützung für IPv6 und benutzerdefinierte HTTP-Header und verbesserte HTTP-Sicherheit.
- BITS 3.0 ist in Windows Vista und Windows Server 2008 enthalten und fügte Peer-Coaching, Benachrichtigungen, temporären Dateizugriff, HTTP-Redirect-Behandlung, zusätzliche Gruppenrichtlinienkontrollen und Ereignisprotokollierung hinzu.
- BITS 4.0, das Mitte 2009 mit Windows 7 und Windows Server 2008 R2 veröffentlicht wurde, brachte Token-basierte Sicherheit, eigenständige Dateiserver-Funktionen, verfeinerte Bandbreitendrosselung und überarbeitetes Peer-Coaching.
- BITS 5.0 wurde Mitte 2016 mit Windows 10 eingeführt und brachte Verbesserungen für Hintergrundkopieraufträge, Unterstützung für ältere Hintergrundkopieraufträge und die Möglichkeit, BITS über APIs und PowerShell-Cmdlets zu nutzen.
- Version 10.1 von BITS, Teil von Windows 10 Version 1703, auch bekannt als Windows 10 Creator Update, verfeinerte Download- und Benachrichtigungsfunktionen.
- Version 10.2 von BITS ist Teil des Windows 10 Oktober 2018 Updates und fügte Standard-Proxy-Bestellung hinzu, sowie Unterstützung für modernes Standby und Mobile-Device-Manager-Richtlinien und Gruppenrichtlinien.
- Version 10.3 von BITS aktivierte die Möglichkeit, HTTP-Header als schreibgeschützt zu markieren und den Serverzertifikat-Validierungsrückruf- Die Version ist Teil von Windows 10 Mai 2019 Updates.