「セッション」と「コネクション」は違うの?

(イラスト・アニメーション:岸本 ムサシ)

  今回の回答者:
池尻 雄一
NTTコミュニケーションズ
ブロードバンドIP事業部
IPテクノロジー部 担当課長

 通信の世界では「セッション」や「コネクション」という言葉をよく聞きますが,明確に使い分けられていないこともあるようです。この二つはそれぞれ何を指すのでしょうか。

 一般的にセッションとは,通信の開始から終了までを管理する一つの単位のことを指します。OSIの7階層モデルで言えば,第5層「セッション層」の機能です。端末の間でセッションができると,通信に使うアプリケーションがデータ転送可能な状態になります。

 一方のコネクションは,そのセッションでデータ転送を行うための論理的な回線のことです。通常は第4層「トランスポート層」のTCP(transmission control protocol)での「TCPコネクション」を指すことが多いです。

 一つのセッションに一つのコネクションしかないこともありますが,一つのセッションに複数のコネクションが存在する場合もあります。コネクションはセッションによって管理されます。

 例として,Webサイトへのアクセスで使う暗号化プロトコル「SSL」(secure sockets layer)でのセッションとコネクションを見てみましょう。

 SSLを使ったWebサイトへのアクセスでは実際のデータ転送に先だって,WebブラウザとWebサーバーがSSLで使う暗号の仕様についてやりとりして合意します。この“合意”がセッションです。

 セッションが張れたら,暗号化したデータをSSLで転送します。この転送で利用する論理的な回線がコネクションです。1回合意した内容を利用すれば,コネクション(論理回線)で何度もデータ転送ができるわけです。仮にセッションを張らずに暗号通信をすると,コネクションのたびに暗号の仕様について端末間で確認し合うことになります。でも,一度合意ができていれば,その後の確認は不要になるのです。