ネットワークの世界と、その上のレイヤーであるWebの世界では、セッションとコネクションの意味が異なる。ここではWebの世界で使われる意味を、HTTPを使ってユーザーが買い物サイトで買い物する状況を例に説明する。

[画像のクリックで拡大表示]

 買い物サイトにアクセスしたユーザーは、自分のIDとパスワードでそのWebサイトにログインした後、欲しい物を選んで買い物カートに入れていく。そしてクレジットカードなど購入の決済手段を選び、買い物を済ませてWebサイトからログアウトする。この一連のユーザーの行動をセッションと呼んでいる。

 セッションは、もっと狭い意味でも使われる。狭義のセッションとは、一連のHTTPメッセージを管理することである。こうすることで、あるユーザーが行っているWebアクセスを認識し、画面表示や決済の状態を把握する。

 ここで注意したいのは、HTTPというプロトコル自体はセッションという概念を持っていないことだ。サイトにつながってログインしても、買い物カートに欲しい物を入れて次の画面に推移した場合、いったんHTTPの接続は切れてしまう。接続した「状態」(=ステート)がわからないのだ。これは、画面が切り替わるような操作をユーザーがしてしまうと、買い物サイト側が同じユーザーかどうかがわからなくなることを意味している。

 そこでWebサイトでは、ユーザーのセッションを管理するために、セッションIDを利用する。アクセスしてきたユーザーを識別するセッションIDを生成し、ユーザーとやりとりするHTTPメッセージにセッションIDを含める。このセッションIDをWebサイトが識別することで、ユーザーがどのような状態にあるかを識別しているのである。

 一方のコネクションは、通信している者同士が仮想的な接続状態を確立することをいう。一般にコネクションといえば、TCPコネクションを指す。TCPはこのコネクションを作り出すことで、通信の確実性を実現しようとしているのである。

 Webブラウザーでプロキシサーバーの設定をしている場合、Webブラウザーからプロキシサーバーの間と、プロキシサーバーからWebサイトの間でそれぞれコネクションを張る。コネクションは別々に張られるが、Webブラウザーからのセッション自体はそのコネクションを通してWebサイトで管理されているのである。