Die Beine im Meer und ein Strohhut gegen die südliche Sonne auf dem Kopf verringern oft die Aussicht auf eine gute Internetverbindung. Magazin-Kolumnist Charly, der sich gerade selbst mit derart tragischen Umständen konfrontiert sieht, weiß Rat.
Ich schreibe diese Kolumne an der Costa Brava und bade gerade meine Füße darin. Die Küste trägt ihren Namen zu Recht, “brava” lässt sich mit “wild, unwirtlich” übersetzen. Das trifft abseits der Touristenstrände zu, leider auch für die Netzabdeckung. Zwar ist WLAN in Hotels, auf Campingplätzen und Bars allgegenwärtig – im Moment benutze ich das Netz der Strandbar “Xiringuito” bei den malerischen Ruinen der ehemaligen griechischen Handelsexklave Empúries.
Doch die Verbindung ist ziemlich brava. Das versaut mir aber nicht den sonnigen Nachmittag, denn ich ziehe Mosh [1] als Ass aus der Badetasche. Der SSH-Ersatz besteht aus einer Client- und einer Server-Komponente plus Wrapperskript. Initial verbindet Mosh Client und Server klassisch per SSH auf Port 22. Dann übergibt der Server dem Client einen Schlüssel, mit dem er sich fortan ausweist, und Mosh kappt die TCP-Verbindung.
Ab jetzt unterhalten sich Client und Server nur noch per UDP, serienmäßig im Bereich zwischen Port 60000 und 61000. Mit dem Parameter »–port=Portnummer« kann ich Mosh zwingen einen Port zu bevorzugen. Die UDP-Verbindungen sind ausgesprochen robust, sie überleben sogar Suspend-Phasen des Clients.
Noch besser und in der Praxis extrem nervenschonend: Weil sich der Client mit dem anfangs vom Server empfangenen Schlüssel ausweist, darf er zwischendurch sogar die IP-Adresse wechseln. Wenn mir also das Strandcafé-WLAN abreißt und der Laptop auf das Tethering des Mobiltelefons umschwenkt, läuft meine Mosh-Session völlig unbeeindruckt weiter.
Zeichen der Wert-Schätzung
Wenn die einzig greifbare Verbindung instabil ist, führt das bei SSH bekanntlich dazu, dass das Terminal getippte Buchstaben nicht anzeigt, solange sich die TCP-Verbindung nicht wieder fängt. Zwar kann auch Mosh in solchen Fällen nicht hexen, aber es stellt schlaue Vermutungen darüber an, was das Terminal anzeigen sollte, und schickt die Zeichen prophylaktisch zur Ausgabe. Die Synchronisierung per UDP läuft dabei im Hintergrund weiter. Mit Moshs Vorhersage-Mechanismus wirkt für mich das Arbeiten auf der Kommandozeile wesentlich flüssiger als mit SSH.
Außerdem lässt Mosh mich nicht im Unklaren darüber, was nun tatsächlich übertragen wurde und welche Bytes nur vorhergesagt sind: Die Zeichen, welche die Mobile Shell per Vorhersage anzeigt, stellt sie unterstrichen dar (Abbildung 1). Wenn ich nur die ganze Wahrheit sehen will, schalte ich die Vorhersagefunktion mit »–predict=never« ab. Ebenso kann ich sie mit »–predict=always« erzwingen. Das Default-Verhalten ist ein Kompromiss: Mosh misst im Hintergrund die Latenz der UDP-Verbindungen und schaltet die Vorhersagefunktion ein, sobald die Verbindungsqualität nachlässt.
Unterwegs ist Mosh für mich inzwischen unverzichtbar. Völlig ersetzen wird es SSH jedoch erst einmal nicht, denn zurzeit beherrscht es weder X11- noch Portforwarding und nur IPv4. Zumindest an IPv6 arbeiten die Entwickler aber und auch eine App für Android-Mobiltelefone soll es eines Tages geben. (jk)

Abbildung 1: Die Zeichen, die wegen einer stockenden Verbindung noch nicht übertragen sind, stellt Mosh unterstrichen dar.
Infos
- Mosh: http://mosh.mit.edu






