セッションとコネクションがごっちゃになっていたのでまとめます。

 

セッションとコネクションの違い

簡単に表現すると次のようになります。

session 通信の開始から終了までを管理する1つの単位
connection セッション内でデータ転送する論理的回線

例えるなら電線がセッションでその中を通る導線がコネクションといったところでしょうか。

階層でいえば、セッションの方がより低層に位置しています。

実際コーディングの際では、「セッションを張る→コネクションの確立」という流れになります。

 

少し詳細にセッションとコネクションを見る

※OSIの7階層モデルを知っている方が対象です。

※知らない方でもこの機会に知っておくと良しです。

セッションはOSIの階層でいうところの第5層目にあたります。ここでの役割は端末間の通信接続で、セッションを張る(確立する)ことで、通信に使うアプリケーションがデータ転送可能な状態になります。先ほどの例を用いると変電所と各家庭をつなげるイメージです。

コネクションはOSIの階層で第4層目「トランスポート層」にあたります。ここでの役割は、セッションが確立したあと、そのプロトコルに基づいて実際にデータの転送を行います。先ほどの例を用いると、実際に電気を流しているイメージです。

 

SSLのセッションとコネクションを確認する

では、SSLをモデルにセッションとコネクションの役割を見ていきます。

まずWebブラウザとWebサーバが、SSLで用いる暗号仕様に関して同意します。

この同意のやり取りがセッションにあたります。

セッションが張れたら、暗号化したデータをSSLで転送していきます。

このときの転送回線がコネクションになります。

一度合意した内容(セッション)を利用すればコネクションは何度でも使用することが可能です。