Лучшие вопросы
Таймлайн
Чат
Перспективы

Mosh (программа)

Из Википедии, свободной энциклопедии

Mosh (программа)
Remove ads

Mosh (от англ. mobile shell) — программа для удалённого подключения с клиентского компьютера к серверу через Интернет. Предоставляет доступ к текстовому терминалу[3]. Mosh аналогичен[4] приложению SSH, но имеет дополнительные функции, предназначенные для повышения удобства работы мобильных пользователей. Основными функциями являются:

  • Сохранение сессий, даже когда клиент меняет свой адрес, например при переходе на другую беспроводную сеть или при переключении между Wi-Fi и мобильным интернетом 3G[5].
  • Поддержание терминальных сессий в активном состоянии даже при потере пользователем своего интернет-подключения или при переводе клиентского компьютера в режим ожидания. Традиционный SSH из-за применения протокола TCP в таких случаях завершает сессию по тайм-ауту протокола[6].
  • Клиент mosh пытается реагировать на события клавиатуры (набор текста, удаление символов), не дожидаясь ответа от сервера, что скрывает сетевую задержку. Используется адаптивная система прогнозирования того, будет ли приложение, работающее на сервере, отображать введённые пользователем символы[7][8].
Краткие факты Тип, Автор ...

Основными недостатками mosh являются дополнительные требования к серверу, и отсутствие ряда особенностей SSH (например, переадресация подключений).

Remove ads

Реализация

Mosh работает на ином уровне по сравнению с SSH. Классические системы удалённого доступа к терминалам просто передают поток байтов в каждом направлении (от сервера к клиенту и от клиента к серверу), используя протокол TCP (в случае SSH), тогда как mosh запускает эмулятор терминала на сервере для получения информации о тексте, отображаемом на экране. Затем mosh-сервер передает этот текст клиентской части приложения, используя протокол UDP, при этом частота обновлений экрана и пересылок изменяется в зависимости от скорости сети[9]. Это позволяет Mosh снижать объём пересылаемых данных при использовании медленных или неустойчивых подключений к сети Интернет.

Remove ads

Поддерживаемые платформы

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].

Нет поддержки роуминга IPv6

Mosh 1.2.5 поддерживает только фиксированные IPv6 соединения, но не роуминг в IPv6[19]. Для этого необходимо использование параметра командной строки «-6». Существует экспериментальный вариант mosh с поддержкой многопутного IPv6 и динамического переключения между IPv4 и IPv6[20][21].

Пропуски и прокрутка терминала

Mosh не поддерживает возможности прокрутки истории в терминале. Работы по реализации были запланированы на релиз 1.3[22]. Одним из способов борьбы с этим является использование mosh в комбинации с терминальным мультиплексором screen или tmux, которые самостоятельно реализуют функцию прокрутки истории в терминале[23].

Remove ads

См. также

Примечания

Ссылки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads