クライアントとサーバーを異なるプロトコルで設定し、それらの間でいくつかのバイトを送信しようとしました。
彼らはうまく機能しているようです。違いに気付いたときに内部で何が起こるかについて、誰か私にいくつかのリンクを教えてもらえますか? プロトコルネゴシエーションのようなものですか?自己格下げ?
プロトコル バージョンが決定されると相互運用できませんが、ハンドシェイクの開始時にバージョンをネゴシエートするメカニズムがあります。基本的に、クライアントはハンドシェイクを開始するときにサポートする最高のバージョンをアドバタイズし、サーバーはクライアントがサポートするバージョン以下の、サポートする最高のバージョンを返します。もちろん、サーバーは必要に応じてこれらの下位バージョンを無効にすることもできます (その場合、接続は確立されません)。
TLS 仕様server_version
には、Server Hello
メッセージ内のについて次のように記載されています。
server_version This field will contain the lower of that suggested by the client in the client hello and the highest supported by the server. For this version of the specification, the version is 3.3. (See Appendix E for details about backward compatibility.)
付録 E.1にも詳細な説明が記載されています。
それらは完全に相互運用可能ではないようですが、この MDSN の記事によると、 TLS は必要に応じて SSLv3 に戻ります。h番目