Почему SSH отправляет 100 пакетов при одном нажатии клавиши

Почему SSH отправляет 100 пакетов при одном нажатии клавиши
Почему SSH отправляет 100 пакетов при одном нажатии клавиши (image source)

Проблема с SSH и производительностью

При разработке высокопроизводительной игры, работающей по SSH, была обнаружена странная проблема. Оказалось, что при нажатии клавиши SSH отправляет не один пакет, а около 100 пакетов. Это приводило к значительным задержкам и снижению производительности игры.

Анализ проблемы

Для анализа проблемы был использован tcpdump и tshark для захвата и анализа сетевого трафика. Оказалось, что пакеты, отправляемые SSH, имеют размер 36 байт и отправляются с интервалом около 20 мс.

Обфускация нажатий клавиш

После анализа проблемы было обнаружено, что SSH использует обфускацию нажатий клавиш для защиты от атак, направленных на определение нажатых клавиш. Эта функция была добавлена в SSH в 2023 году.

Solution to the problem

Одним из решений проблемы является отключение обфускации нажатий клавиш на стороне клиента или сервера. Однако это требует изменения конфигурации SSH и может быть неприменимо в некоторых случаях.

Отказ от обфускации

Другим решением является отказ от обфускации нажатий клавиш в SSH. Это можно сделать, изменив код SSH-библиотеки на Go. Оказалось, что это можно сделать, удалив поддержку обфускации нажатий клавиш.

Результаты

После отказа от обфускации нажатий клавиш производительность игры значительно увеличилась. Использование CPU снизилось на 50%, а задержка уменьшилась.

Conclusion

Проблема с SSH и производительностью была решена путем анализа сетевого трафика и изменения конфигурации SSH. Оказалось, что обфускация нажатий клавиш может быть отключена или удалена для повышения производительности.

News Express Team
News Express Team

News Express' team of experienced editors and journalists delivers timely and reliable reporting on Russian politics, economics, technology and world affairs from a unique regional perspective. Stay informed with our dedicated journalists.

en_USEN