Почему АБР использует сеть?
Я использовал ADB в Windows 10 для прошивки прошивки на устройство Android через USB-кабель. Во время этого процесса я просматривал монитор ресурсов и заметил, что ADB, по-видимому, получает по сети 3,5 мегабайта в секунду.
Теперь мое интернет-соединение обычно составляет около 200 килобайт в секунду и никогда не превышает одного мегабайта в секунду. Итак, очевидно, что этот трафик не был фактическим интернет-трафиком.
На самом деле, это напоминает мне о том, что происходит, когда я использую такие приложения, как Airdroid, Shareit, передача файлов VLC и т. Д. Аналогичные цифры отображаются в Resource Monitor, поскольку данные передаются через локальную сеть. Однако в этом случае ADB указан как отправляющий и получающий данные на одном устройстве.
Что меня здесь озадачивает:
- Данные передавались на устройство Android через USB-кабель, а не по сети. Почему это появляется при сетевом трафике?
- Почему АБР указан как отправляющий и получающий данные в Windows?
Я предполагаю, что это просто, как АБР сделан. Но мне любопытно узнать, что именно делает АБР. У меня нет никаких технических проблем с этим, я просто прошу из любопытства и узнать больше об АБР.
1 ответ
adb
использует клиент-серверную архитектуру для доступа к вашему устройству. Допустим, вы хотите adb shell
в устройство. Вам нужно в случаях adb
,
- Сервер adb (
adb start-server
) которые подключаются к USB и слушают клиентов по сетевому каналу - Клиент adb (
adb shell
), которые подключаются к серверу через петлевую сеть для обеспечения доступа к оболочке.
Эта архитектура полезна несколькими способами:
- Только одна программа использует USB-соединение. Он может обмениваться данными с устройством даже тогда, когда его хотят использовать несколько клиентов (например, одновременная оболочка и push).
- Доступ к USB-каналу может потребовать определенных привилегий. Вы можете запустить сервер как root, чтобы сервер успешно подключался к USB-каналу, на котором все еще работает клиент без повышенных привилегий.
- Вы даже можете подумать об удаленном доступе к устройству, подключив сервер с другого компьютера в локальной сети.