私はUnixSEの別の質問でこのアプリを知っていました。
そしてそれは言う:
IPを変更します。接続を維持します。
インターネット接続間を移動すると、Moshは自動的にローミングします。電車の中でWi-Fiを使用し、ホテルでイーサネットを使用し、ビーチでLTE:ログインしたままになります。SSHや次のようなWebアプリなど、ほとんどのネットワークプログラムはローミング後に接続を失います。 Gmail。Moshは違います。
どうしてそれが可能でしょうか?
それは単純な再接続テクノロジーですか?
主な理由は、moshがコネクションレス型プロトコルを使用し、クライアントとサーバーの再関連付けを適切に処理するためです。私自身、詳細について100%確信しているわけではありませんが、私が理解しているように、一般的には次のように機能します。
もちろん、認証も含まれます(そうでなければ、誰でも簡単にモッシュセッションを乗っ取ることができます)が、それは切り替えがどのように行われるかにとって特に重要ではありません。
多くのP2Pソフトウェアは、ネットワークの変更に対する回復力を提供するために、非常に類似した手法(つまり、基本的にステップ2と3と同等で、他の何かがトンネリングされている)を使用していることに注意してください。この種のことを行うソフトウェアの例には、 Syncthing および tinc が含まれます。
あなたの引用はウェブサイトから来ています https://mosh.org 。 「技術情報」を読み始めると、あなたの質問に答えられます:-)。
それは単純な再接続テクノロジーですか?
これは、従来の再接続テクノロジー、つまりタイムアウト+再接続ではありません。その一例は、SSH/TCPタイムアウト+ screen またはtmuxサーバーへの手動再接続です。
mosh
は、モビリティテクノロジーとして意図的に設計されています。それははるかに速く適応することができます。
SSPでのローミングが簡単になります:クライアントは、少なくとも3秒に1回、「ハートビート」を含むシーケンス番号を増やしながらデータグラムをサーバーに送信します。サーバーがクライアントから本物のパケットを受信するたびにシーケンス番号が以前に受信したものよりも大きい場合、そのパケットのIP送信元アドレスがサーバーの送信パケットの新しいターゲットになります。このように「ステートレス」にローミングを行うことで、ローミングはNATの内外で機能します。ローミングは、クライアントがインターネットに表示されるIPアドレスが変更されたことに気付いていない場合でも機能します。ハートビートにより、Moshは、サーバーからしばらく連絡がない場合にユーザーに通知できます(SSHとは異なり、ユーザーは入力しようとするまで、接続の切断に気付かない場合があります)。
他のモビリティテクノロジーは、クライアントがインターネットに表示されるIPアドレスが変更されたことを認識している場合に、このようなハートビート遅延を短絡させる可能性があります。このセクションでは、mosh
がわざわざそうするかどうかについては説明していません。 3秒後に更新すると、mosh
インタラクティブセッションが便利になり、従来のデフォルトよりもはるかに堅牢になります。また、 too が細かい部分で行き詰まることなく、「技術情報」で説明されているモッシュのより斬新な側面があります:)。
少なくとも上記のように、mosh
は、一方の端、つまりクライアントに対してのみモビリティを実装します。これはmosh
に役立ち、サードパーティの必要性を回避します-安定したIPアドレスを持つルーターで実行される「ホームエージェント」を必要とするモバイルIPとは異なります。
モビリティを実装する場合、安全に制御することが非常に重要です。 mosh
には、SSHによって初期化されたセキュリティがすでに含まれています。モバイルIPにはこの利点はありません。それはIPsecを活用するように見えます。 IPsecは、IPのオプションの拡張機能であり、コンピューターとルーターの間で構成する必要があります。特定の狭いシナリオでのみ使用される傾向があります。
mosh
とscreen
またはtmux
の使用には3番目の類似点があります。これは、SSHサーバーが、切断後にプログラムを無期限に実行したままにするように構成されているためにのみ機能します。 「公式」のデフォルト設定でsystemd
を使用しない限り:)。 systemdは、これを制御する能力の欠如が歴史的なUnixの明白な見落としであったと信じています。他の多くのシナリオでは、接続さえしていないときにリソースを無期限に使用し続けることは、危険な無駄であると見なされることに注意してください。多くのWebサーバーは、大量のデータを送受信しなかった数秒後にクライアントを切断するように構成されています。 https://en.wikipedia.org/wiki/Slowloris_(computer_security) を参照してください。
モバイルIPは古いプロジェクトです。より最近のプロジェクトはMP-TCP(マルチパスTCP)です。モビリティ制御のためのシンプルなセキュリティを実装します。 MP-TCPは、モバイルではない単一のサーバーIPに最初の接続が行われるという点で、mosh
に似ています。接続が確立されると、理論的には、クライアントまたはサーバーのいずれかがIPアドレスを変更して接続を維持することが可能です。ただし、すべてのIPが同時に変更された場合、回復することはできません。