Loading AI tools
Из Википедии, свободной энциклопедии
Mosh (от англ. mobile shell) — программа для удалённого подключения с клиентского компьютера к серверу через Интернет. Предоставляет доступ к текстовому терминалу[3]. Mosh аналогичен[4] приложению SSH, но имеет дополнительные функции, предназначенные для повышения удобства работы мобильных пользователей. Основными функциями являются:
Mosh | |
---|---|
| |
Тип | Удалённый доступ |
Автор | Keith Winstein |
Разработчик | Keith Winstein[вд] |
Написана на | C++ |
Операционная система | Unix-подобные системы |
Первый выпуск | 12 марта 2012 |
Последняя версия | 1.4.0 (27 октября 2022[1]) |
Репозиторий | github.com/mobile-shell/… |
Лицензия | GNU GPLv3[2] с исключениями OpenSSL и iOS |
Сайт | mosh.org |
Основными недостатками mosh являются дополнительные требования к серверу, и отсутствие ряда особенностей SSH (например, переадресация подключений).
Mosh работает на ином уровне по сравнению с SSH. Классические системы удалённого доступа к терминалам просто передают поток байтов в каждом направлении (от сервера к клиенту и от клиента к серверу), используя протокол TCP (в случае SSH), тогда как mosh запускает эмулятор терминала на сервере для получения информации о тексте, отображаемом на экране. Затем mosh-сервер передает этот текст клиентской части приложения, используя протокол UDP, при этом частота обновлений экрана и пересылок изменяется в зависимости от скорости сети[9]. Это позволяет Mosh снижать объём пересылаемых данных при использовании медленных или неустойчивых подключений к сети Интернет.
Mosh доступен для большинства дистрибутивов Linux, macOS, FreeBSD, NetBSD, OpenBSD, Android, Solaris, Cygwin, и в виде приложения для Chrome. Программа Termius для iOS (мобильные устройства корпорации Apple) включает независимую реализацию протокола Mosh[10].
Mosh построен на схеме протокола синхронизации состояния (State-Syncronization Protocol, SSP)[11], который поддерживает роуминг с отправкой одного пакета[12]. После изменения IP-адреса клиента он должен послать пакет серверу. Доставки единственного пакета достаточно, чтобы сервер продолжил работу с данным клиентом. Более того, клиенту не нужно знать об изменении своего адреса.
В статье разработчиков mosh оценивалась работа протокола SSP через линию уровнем потерь пакетов в 29 %. По сравнению с SSH и протоколом TCP, они получили 50-кратное снижение среднего времени ответа (0.33 секунды с mosh, вместо 16,8 секунд). Другое исследование студентов Стэнфордского университета показало, что SSP уменьшает среднее время ответа в 30 раз (с 5,9 секунд до 0,19 секунд)[13].
По данным разработчиков mosh, их приложение способно верно предсказывать контекст в 70 % случаев и немедленно отображать введённые пользователем символы, уменьшая медиану времени ответа на нажатие клавиши до уровня менее 5 мс (маскируя задержки сети). Другое исследование показало, что mosh способен быстро отобразить около 55 % нажатий клавиш пользователем[14].
По сравнению с более популярным SSH, mosh имеет следующие недостатки:
Основным недостатком mosh является необходимость использования собственного сервера. Для работы mosh требуется прямое udp-подключение к серверу[15]. Сервера, защищённые межсетевым экраном с ограничением допустимых портов, не могут использовать mosh (например, если экран допускает лишь входящее TCP SSH соединение к серверу). Также проблемными являются сервера, имеющие непрямое подключение к сети. SSH в некоторых случаях позволяет работать с ними при помощи опции 'ProxyCommand', но такой вариант не поддерживается в mosh[16].
По умолчанию, сервер пытается выделить первый свободный UDP порт в диапазоне 60001–60999, по одному порту на каждое подключение. Такое динамическое выделение портов является дополнительной нагрузкой для управления брандмауэром[17][18].
Mosh 1.2.5 поддерживает только фиксированные IPv6 соединения, но не роуминг в IPv6[19]. Для этого необходимо использование параметра командной строки «-6». Существует экспериментальный вариант mosh с поддержкой многопутного IPv6 и динамического переключения между IPv4 и IPv6[20][21].
Mosh не поддерживает возможности прокрутки истории в терминале. Работы по реализации были запланированы на релиз 1.3[22]. Одним из способов борьбы с этим является использование mosh в комбинации с терминальным мультиплексором screen или tmux, которые самостоятельно реализуют функцию прокрутки истории в терминале[23].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.