Mosh | |
---|---|
Mosh, în linia de sus informații despre o întrerupere a conexiunii, în terminal sunt subliniate caracterele prezise și afișate local. | |
Tip de | Acces de la distanță |
Autor | Keith Winstein |
Dezvoltator | Keith Winstein |
Scris in | C++ |
Sistem de operare | Sisteme asemănătoare Unix |
Prima editie | 12 martie 2012 |
ultima versiune | 1.3.2 (22 iulie 2017 [1] ) |
Licență | GNU GPLv3 [2] cu excepții OpenSSL și iOS |
Site-ul web | mosh.org |
Mosh (din engleză mobile shell ) este un program de conectare la distanță de la un computer client la un server prin Internet. Oferă acces la un terminal text [3] . Mosh este similar [4] cu aplicația SSH , dar are caracteristici suplimentare concepute pentru a îmbunătăți experiența utilizatorului mobil. Principalele funcții sunt:
Principalele dezavantaje ale mosh sunt cerințele suplimentare de server și lipsa unor caracteristici SSH (cum ar fi redirecționarea conexiunii).
Mosh funcționează la un alt nivel decât SSH. Sistemele clasice de acces la terminale la distanță trimit pur și simplu un flux de octeți în fiecare direcție (server la client și client la server) folosind protocolul TCP (în cazul SSH), în timp ce mosh rulează un emulator de terminal pe server pentru a obține informații despre text afișate pe ecran. Serverul mosh transmite apoi acest text către partea client a aplicației folosind protocolul UDP, în timp ce frecvența actualizărilor și transferurilor ecranului variază în funcție de viteza rețelei [9] . Acest lucru îi permite lui Mosh să reducă cantitatea de date pe care o trimite atunci când utilizează conexiuni la Internet lente sau instabile.
Mosh este disponibil pentru majoritatea distribuțiilor Linux , macOS , FreeBSD , NetBSD , OpenBSD , Android , Solaris , Cygwin și ca aplicație Chrome . Termius pentru iOS (dispozitive mobile Apple) include o implementare independentă a protocolului Mosh [10] .
Mosh este construit pe o schemă State-Syncronization Protocol (SSP) [11] care acceptă roaming cu un singur pachet [12] . După schimbarea adresei IP a clientului, acesta trebuie să trimită un pachet către server. Livrarea unui singur pachet este suficientă pentru ca serverul să continue să lucreze cu acest client. Mai mult, clientul nu trebuie să știe despre schimbarea adresei sale.
Într-un articol pentru dezvoltatori mosh, SSP over the line a fost evaluat cu o rată de pierdere a pachetelor de 29%. În comparație cu SSH și protocolul TCP , au obținut o reducere de 50 ori a timpului mediu de răspuns (0,33 secunde cu mosh, în loc de 16,8 secunde). Un alt studiu al studenților de la Universitatea Stanford a arătat că SSP a redus timpul mediu de răspuns cu un factor de 30 (de la 5,9 secunde la 0,19 secunde) [13] .
Potrivit dezvoltatorilor mosh, aplicația lor este capabilă să prezică corect contextul în 70% din timp și să afișeze imediat caracterele introduse de utilizator, reducând timpul mediu de răspuns la apăsarea tastei la mai puțin de 5 ms (mascarea întârzierilor de rețea ). Un alt studiu a arătat că mosh a fost capabil să afișeze rapid aproximativ 55% din tastele utilizatorului [14] .
În comparație cu SSH mai popular , mosh are următoarele dezavantaje:
Principalul dezavantaj al mosh este necesitatea de a folosi propriul server. mosh necesită o conexiune udp directă la server [15] . Serverele protejate de un firewall cu restricții de port nu pot folosi mosh (de exemplu, dacă firewall-ul permite doar o conexiune TCP SSH de intrare la server). Probleme sunt și serverele care au o conexiune indirectă la rețea. SSH în unele cazuri vă permite să lucrați cu ei folosind opțiunea „ProxyCommand”, dar această opțiune nu este acceptată în mosh [16] .
În mod implicit, serverul încearcă să aloce primul port UDP liber din intervalul 60001-60999, câte un port pe conexiune. Această alocare dinamică de porturi este o suprasarcină suplimentară pentru managementul firewall -ului [17] [18] .
Mosh 1.2.5 acceptă numai conexiuni IPv6 fixe, nu roaming IPv6 [19] . Acest lucru necesită utilizarea opțiunii de linie de comandă „-6”. Există o versiune experimentală de mosh cu suport pentru multipath IPv6 și comutare dinamică între IPv4 și IPv6 [20] [21] .
Mosh nu acceptă istoricul defilării în terminal. Lucrările de implementare au fost programate pentru versiunea 1.3 [22] . O modalitate de a combate acest lucru este utilizarea mosh în combinație cu ecranul multiplexor terminalului sau tmux , care implementează funcționalitatea de defilare a istoricului proprie a terminalului [23] .