Концертная программа
- 1 year ago
- 0
- 0
Mosh (от англ. mobile shell ) — программа для удалённого подключения с клиентского компьютера к серверу через Интернет. Предоставляет доступ к текстовому . Mosh аналогичен приложению SSH , но имеет дополнительные функции, предназначенные для повышения удобства работы мобильных пользователей. Основными функциями являются:
Основными недостатками mosh являются дополнительные требования к серверу, и отсутствие ряда особенностей SSH (например, переадресация подключений).
Mosh работает на ином уровне по сравнению с SSH. Классические системы удалённого доступа к терминалам просто передают поток байтов в каждом направлении (от сервера к клиенту и от клиента к серверу), используя протокол TCP (в случае SSH), тогда как mosh запускает эмулятор терминала на сервере для получения информации о тексте, отображаемом на экране. Затем mosh-сервер передает этот текст клиентской части приложения, используя протокол UDP, при этом частота обновлений экрана и пересылок изменяется в зависимости от скорости сети . Это позволяет Mosh снижать объём пересылаемых данных при использовании медленных или неустойчивых подключений к сети Интернет.
Mosh доступен для большинства дистрибутивов Linux , macOS , FreeBSD , NetBSD , OpenBSD , Android , Solaris , Cygwin , и в виде . Программа Termius для iOS (мобильные устройства корпорации Apple) включает независимую реализацию протокола Mosh .
Mosh построен на схеме протокола синхронизации состояния (State-Syncronization Protocol, SSP) , который поддерживает роуминг с отправкой одного пакета . После изменения IP-адреса клиента он должен послать пакет серверу. Доставки единственного пакета достаточно, чтобы сервер продолжил работу с данным клиентом. Более того, клиенту не нужно знать об изменении своего адреса.
В статье разработчиков mosh оценивалась работа протокола SSP через линию уровнем потерь пакетов в 29 %. По сравнению с SSH и протоколом TCP , они получили 50-кратное снижение среднего времени ответа (0.33 секунды с mosh, вместо 16,8 секунд). Другое исследование студентов Стэнфордского университета показало, что SSP уменьшает среднее время ответа в 30 раз (с 5,9 секунд до 0,19 секунд) .
По данным разработчиков mosh, их приложение способно верно предсказывать контекст в 70 % случаев и немедленно отображать введённые пользователем символы, уменьшая медиану времени ответа на нажатие клавиши до уровня менее 5 мс (маскируя сети). Другое исследование показало, что mosh способен быстро отобразить около 55 % нажатий клавиш пользователем .
По сравнению с более популярным SSH , mosh имеет следующие недостатки:
Основным недостатком mosh является необходимость использования собственного сервера. Для работы mosh требуется прямое udp-подключение к серверу . Сервера, защищённые межсетевым экраном с ограничением допустимых портов, не могут использовать mosh (например, если экран допускает лишь входящее TCP SSH соединение к серверу). Также проблемными являются сервера, имеющие непрямое подключение к сети. SSH в некоторых случаях позволяет работать с ними при помощи опции 'ProxyCommand', но такой вариант не поддерживается в mosh .
По умолчанию, сервер пытается выделить первый свободный UDP порт в диапазоне 60001–60999, по одному порту на каждое подключение. Такое динамическое выделение портов является дополнительной нагрузкой для управления брандмауэром .
Mosh 1.2.5 поддерживает только фиксированные IPv6 соединения, но не роуминг в IPv6 . Для этого необходимо использование параметра командной строки «-6». Существует экспериментальный вариант mosh с поддержкой многопутного IPv6 и динамического переключения между IPv4 и IPv6 .
Mosh не поддерживает возможности прокрутки истории в терминале. Работы по реализации были запланированы на релиз 1.3 . Одним из способов борьбы с этим является использование mosh в комбинации с терминальным мультиплексором screen или tmux , которые самостоятельно реализуют функцию прокрутки истории в терминале .