Я провожу небольшой тест, в котором каждые 0,5 секунды я отправляю клиенту короткую строку (4-8 байт) с сервера Node.js, используя ws .Клиент использует iOS / Android или веб-браузер.Клиент ничего не отправляет обратно на сервер, кроме TCP-ACKS.Странно то, что когда я отлаживаю приложение в iOS с помощью сетевого отчета XCode, я вижу только то, что клиент отправляет несколько байтов (около 500) при установлении соединения, вероятно, во время HTTP-рукопожатия.Оставшееся время нулевые данные отправляются с устройства, поступают только данные. Те же результаты достигаются при получении данных в Chrome и отслеживании данных с помощью Nettop.
Смущает то, чтона Android почти тот же объем данных, который поступает на устройство, уходит при проверке использования сети с помощью профилировщика Android / Battery Historian / TrafficStats.Я пытался использовать разные библиотеки для реализации Websocket и разных Android-устройств.
Мне трудно поверить, что ACKS, отправленные андроидом, такие же большие, как и полученное сообщение, хотя это всего лишь небольшая строка из четырех символов.
Итак, мои вопросы:
Может ли случиться так, что сетевой отчет Nettop / XCode просто игнорирует все ACKS, поэтому в действительности столько данных отправляется вChrome / iOS как в Android?
Что-то не так с библиотеками, используемыми в Android, или что-то с операционной системой?
Может ли ACK быть таким же большим, как простой TCP-пакет с 4 символами в нем?
Результат ниже при использовании Websocket
Полученные / переданные данныепри использовании Android Battery Historian
Данные, полученные / переданные на iOS с использованием сетевого отчета