調べていて気づいたのですが、SSHはTCPとUDPの両方を使っています。TCP を使うことは完全に理解していますが、UDP は少し奇妙な感じがします。安全なシェルアクセスのために、ハンドシェイクを最小限に抑えた「信頼性の低い」トランスポートプロトコルを使う理由は何でしょうか?
私が思いつく唯一の用途は、SCPのための(大きな)ファイル転送です。しかし、ハンドシェイクのためにTCPの方が便利ではないでしょうか?
実際、私はSSHのためにTCPだけを開くことを考えていますが、その意味合いを知らないのはかなり不利になります
EDIT
UDP 上の ssh についての論文だけでなく、mosh と呼ばれる本格的な ssh 実装も存在することがわかりました。しかし、古典的な ssh は、RFCs で指定されているように、まだ TCP のみを使用しています
46 alex 2014-04-16
WindowsからUnixへ、UnixからUnixへ、いくつかのSSH接続で試してみましたが、ポート22でUDPパケットが1つも届きません。また、サーバはTCPでしかリスンしません
この thesis で、彼らは SSH のトランスポートに UDP を実装しようとしましたが、デフォルトでは TCP だけを使っていることにも言及しています。Wikipedia のページでは、SSH の開発者が UDP & TCP の割り当てを最初に要求したから UDP だと言っているのかもしれませんが、 関連する RFC にはそのことについての言及はありません
46 mtak 2014-04-16
…SSH プロトコルは、TCP を介したトンネリング制御に 22/UDP を使用しています。Wireshark を通じて適切にデコードされていて、 ssh-agent を通して接続をトンネリングしている場合、あるいはリモートまたはローカルでトンネリングしている場合、 UDP が TCP セグメント内にカプセル化されていることに気づくでしょう
5 The Root User 2015-02-05