Mosh | |
---|---|
Mosh, a felső sorban a kapcsolat megszakadásával kapcsolatos információ, a terminálban a megjósolt és helyileg megjelenített karakterek aláhúzottak. | |
Típusú | Távoli hozzáférés |
Szerző | Keith Winstein |
Fejlesztő | Keith Winstein |
Beírva | C++ |
Operációs rendszer | Unix-szerű rendszerek |
Első kiadás | 2012. március 12 |
legújabb verzió | 1.3.2 (2017. július 22. [1] ) |
Engedély | GNU GPLv3 [2] OpenSSL és iOS kivételekkel |
Weboldal | mosh.org |
A Mosh (az angol mobil shell szóból ) egy program az ügyfélszámítógép és a szerver közötti távoli csatlakozásra az interneten keresztül. Hozzáférést biztosít egy szöveges terminálhoz [3] . A Mosh hasonló [4] az SSH - alkalmazáshoz , de további funkciókkal rendelkezik a mobil felhasználói élmény javítására. A fő funkciók a következők:
A mosh fő hátrányai a további szerverigények és néhány SSH funkció hiánya (például kapcsolat továbbítás).
A Mosh más szinten működik, mint az SSH. A klasszikus távoli terminálelérési rendszerek egyszerűen bájtfolyamot küldenek minden irányba (szervertől kliensig és klienstől szerverig) a TCP protokoll használatával (SSH esetén), míg a mosh terminál emulátort futtat a szerveren, hogy információt szerezzen a szövegről megjelenik a képernyőn. A mosh szerver ezután ezt a szöveget UDP protokoll segítségével továbbítja az alkalmazás kliens oldalára, míg a képernyőfrissítések és átvitelek gyakorisága a hálózat sebességétől függően változik [9] . Ez lehetővé teszi a Mosh számára, hogy csökkentse az általa küldött adatmennyiséget, ha lassú vagy instabil internetkapcsolatot használ.
A Mosh elérhető a legtöbb Linux disztribúcióhoz , macOS -hez , FreeBSD -hez , NetBSD -hez , OpenBSD -hez , Android -hoz , Solarishoz , Cygwin -hez és Chrome-alkalmazásként . A Termius for iOS (Apple mobileszközök) a Mosh [10] protokoll független megvalósítását tartalmazza .
A Mosh a State-Syncronization Protocol (SSP) [11] sémára épül, amely támogatja az egycsomagos roamingot [12] . A kliens IP-címének megváltoztatása után csomagot kell küldenie a szervernek. Egyetlen csomag kézbesítése elegendő ahhoz, hogy a szerver továbbra is működjön ezzel a klienssel. Ráadásul az ügyfélnek nem kell tudnia a lakcímváltozásról.
Egy mosh fejlesztői cikkben a vonalon túli SSP-t 29%-os csomagvesztési aránnyal értékelték. Az SSH-hoz és a TCP protokollhoz képest 50-szeresére csökkentették az átlagos válaszidőt (mosh esetén 0,33 másodperc a 16,8 másodperc helyett). Egy másik, a Stanford Egyetem hallgatói által végzett tanulmány kimutatta, hogy az SSP 30-szorosára csökkentette az átlagos válaszidőt (5,9 másodpercről 0,19 másodpercre) [13] .
A mosh fejlesztői szerint az alkalmazásuk az esetek 70%-ában képes helyesen megjósolni a kontextust, és azonnal megjeleníteni a felhasználó által beírt karaktereket, így a billentyűleütések medián válaszideje 5 ms alá csökken ( hálózati késések elfedése ). Egy másik tanulmány kimutatta, hogy a mosh képes volt gyorsan megjeleníteni a felhasználó billentyűleütéseinek körülbelül 55%-át [14] .
A népszerűbb SSH -hoz képest a moshnak a következő hátrányai vannak:
A mosh fő hátránya, hogy saját szervert kell használni. A mosh közvetlen udp kapcsolatot igényel a szerverrel [15] . A port-korlátozott tűzfallal védett szerverek nem használhatják a mosh-t (például ha a tűzfal csak bejövő TCP SSH-kapcsolatot engedélyez a kiszolgálóhoz). Problémát jelentenek azok a szerverek is, amelyek közvetett kapcsolatban állnak a hálózattal. Az SSH bizonyos esetekben lehetővé teszi, hogy a 'ProxyCommand' opció használatával dolgozzunk velük, de ezt az opciót a mosh nem támogatja [16] .
Alapértelmezés szerint a szerver megpróbálja lefoglalni az első szabad UDP -portot a 60001-60999 tartományban, kapcsolatonként egy portot. Ez a dinamikus portkiosztás a tűzfalkezelés további többletköltsége [17] [18] .
A Mosh 1.2.5 csak a rögzített IPv6 kapcsolatokat támogatja, az IPv6 barangolást nem [19] . Ehhez a "-6" parancssori opció használata szükséges. Létezik a mosh kísérleti változata, amely támogatja a többutas IPv6-ot, valamint dinamikus váltást az IPv4 és IPv6 között [20] [21] .
A Mosh nem támogatja az előzmények görgetését a terminálban. A megvalósítási munkákat az 1.3 kiadásra ütemezték be [22] . Ennek egyik módja a mosh használata a terminál multiplexer képernyőjével vagy tmux -szal kombinálva , amelyek megvalósítják a terminál saját előzménygörgetési funkcióját [23] .