Warum verwendet ADB das Netzwerk?

568
Revetahw

Ich habe ADB unter Windows 10 verwendet, um die Firmware über ein USB-Kabel auf ein Android-Gerät zu flashen. Während des Vorgangs habe ich den Ressourcenmonitor durchgesehen und bemerkte, dass ADB scheinbar 3,5 Megabyte pro Sekunde über das Netzwerk erhielt.

Warum verwendet ADB das Netzwerk?

Nun liegt meine Internetverbindung normalerweise bei etwa 200 Kilobyte pro Sekunde und geht niemals über ein Megabyte pro Sekunde. Es handelt sich also offensichtlich nicht um Internetverkehr.

Das erinnert mich tatsächlich daran, was passiert, wenn ich Apps wie Airdroid, Shareit, VLC-Dateiübertragung usw. verwende. Ähnliche Zahlen werden in Resource Monitor angezeigt, da die Daten über das lokale Netzwerk übertragen werden. In diesem Fall wird ADB jedoch als Senden und Empfangen der Daten auf demselben Gerät aufgeführt.

Was mich hier verwirrt, ist:

  1. Die Daten wurden über ein USB-Kabel an das Android-Gerät übertragen, nicht über das Netzwerk. Warum wird dies unter Netzwerkverkehr angezeigt?
  2. Warum wird ADB unter Windows als Senden und Empfangen der Daten aufgeführt?

Ich gehe davon aus, dass ADB einfach so gemacht wird. Aber ich bin neugierig, was ADB genau macht. Ich habe damit keine technischen Probleme, ich frage nur aus Neugier und mehr über ADB.

1

1 Antwort auf die Frage

1
A. Loiseau

adbverwendet eine Client-Server-Architektur, um auf Ihr Gerät zuzugreifen. Nehmen wir an, Sie möchten adb shellin ein Gerät. Sie müssen Instanzen von adb.

  • Ein ADB-Server ( adb start-server), der eine Verbindung zum USB herstellt und nach Clients in einer Netzwerkverbindung sucht
  • Ein ADB-Client ( adb shell), der über das Loopback-Netzwerk eine Verbindung zum Server herstellt, um Shell-Zugriff bereitzustellen.

Diese Architektur bietet mehrere Möglichkeiten:

  1. Nur ein Programm verwendet die USB-Verbindung. Es kann die Kommunikation mit einem Gerät selbst dann regeln, wenn mehrere Clients es verwenden möchten (z. B. gleichzeitige Shell und Push).
  2. Für den Zugriff auf die USB-Verbindung sind möglicherweise bestimmte Berechtigungen erforderlich. Sie können den Server als Root für den Server starten, um die USB-Verbindung, auf der der Client ausgeführt wird, ohne erhöhte Berechtigungen erfolgreich zu verbinden.
  3. Sie können sogar über den Remote-Zugriff auf ein Gerät nachdenken, indem Sie den Server von einem anderen Computer in Ihrem lokalen Netzwerk verbinden.