OSI参照モデルの第5層(セッション層)は、通信する相手との「会話(セッション)」を始めて、続けて、終わらせるための層です。名前は聞いたことがあっても、「具体的に何をしているの?」がいちばんわかりにくい層かもしれません。
この記事では、セッション層の役割を標準の文書にそって説明し、Webサイトのログイン状態の維持など、身近なしくみとの関係、TCP/IPモデルでの扱い、よくあるトラブルと確かめ方を解説します。

セッション層とは?役割をひとことで

OSI参照モデルを定めたITU-T X.200(ISO/IEC 7498-1と同じ内容)では、セッション層の目的を「協力しあう相手どうしが、会話を組み立てて同期させ、データのやりとりを管理するための手段を提供すること」としています。そのために、セッションの接続を作り、順序だったデータのやりとりを支え、接続をきちんと終わらせるサービスを提供します。
X.200が挙げているセッション層のサービスには、次のようなものがあります。
| サービス(X.200) | やさしく言うと |
|---|---|
| セッション接続の確立・解放 | 会話を始める・きちんと終わらせる |
| 通常データ・優先データの転送 | ふつうのデータと、急ぎのデータを送る |
| トークン管理 | 「いまはどちらが話す番か」を管理する(片方ずつ話す半二重のときなど) |
| セッション接続の同期 | 区切り(同期点)を決めておき、問題が起きたら決めておいた状態まで戻してやり直す |
| 例外の報告 | 問題が起きたことを知らせる |
たとえば大きなデータを送っている途中で通信が切れたとき、同期点があれば「最後に確認できた区切りから再開する」ことができます。電話にたとえると、「もしもし」で会話を始め、話す順番をゆずりあい、話が途切れたら「どこまで話したっけ」と確かめて続きから話し、「それでは」で終わる、という会話の進め方を受け持つのがセッション層です。
TCP/IPモデルではどこにあたる?
RFC 1122が定めるTCP/IPの4つの層(リンク・インターネット・トランスポート・アプリケーション)には、独立したセッション層はありません。そのため、OSIのセッション層の役割は、一般にTCP/IPのアプリケーション層の中で扱われると説明されます。実際には、アプリやプロトコルがそれぞれ必要な形で「会話の管理」を受け持っています。
なお、第4層のTCPにも「接続(コネクション)」がありますが、TCPの接続はデータを確実に運ぶための通り道です。セッション層の「セッション」は、その上で行われる会話をどう組み立てるかという、もう一段上の考え方です。
セッション層に近い、身近なしくみ
ここで紹介するのは、OSIのセッション層のプロトコルそのものではなく、TCP/IPの世界で「会話を始める・続ける・終わらせる」という役割に近いしくみです。身近な例で考えると、セッション層の役割がイメージしやすくなります。
1. Webサイトの「ログインしたまま」の状態(Cookieとセッション)

Webのやりとりに使うHTTPは、1回ごとのリクエストと応答が基本で、それだけでは「さっきログインした人」を覚えていません。そこで使われるのがCookieです。RFC 6265は、Cookieのしくみを「状態をほとんど持たないHTTPの上で、状態を持つセッションを作るためのもの」と説明しています。
- ログインに成功すると、サーバーがセッションを表す番号(セッションIDなど)をCookieとしてブラウザに渡す(
Set-Cookie) - ブラウザは、そのサイトにアクセスするたびにCookieを送り返す(
Cookie) - サーバーはCookieを見て「ログイン中のあの人だ」とわかる
- ログアウトしたり、決められた時間がすぎたりすると、セッションが終わる
「会話を始めて(ログイン)、続けて(ログイン状態の維持)、終わらせる(ログアウト・時間切れ)」という流れは、まさにセッション層の考え方に近いものです。
2. TLSのセッション再開
HTTPSで使われる暗号化のしくみTLSは、最初の接続で暗号のやりとりの準備(ハンドシェイク)をします。TLS 1.3(RFC 8446)には、以前の接続の情報を使って、次の接続を手早く始めるセッション再開(resumption)のしくみがあります。「前回の会話の続きとして、すばやく再開する」という点で、セッション層の役割に近いといえます。
TLSは「何層か」がよく話題になりますが、役割としては第5〜6層に近いと説明されることが多いものの、OSIに合わせて作られたプロトコルではないため、資料によって扱いが異なります。
3. ダウンロードの「続きから再開」
大きなファイルのダウンロードが途中で止まったとき、最初からではなく続きから再開できることがあります。HTTPでは、RFC 9110の範囲リクエスト(Range Requests)を使って、「ファイルのこの部分から先をください」と頼めます。区切りから再開する考え方は、X.200のセッション層の「同期」によく似ています。
よくあるトラブルと確かめ方
よくある症状と原因
- すぐにログアウトされる:ブラウザがCookieを保存しない設定になっている、セッションの有効時間が短い、ブラウザを閉じると消える設定になっている
- ログインしたのに、ページを移るとログインしていない扱いになる:Cookieが送られていない(ドメインやパスがちがう、ブラウザの拡張機能でブロックされている など)
- 長い作業のあとで保存しようとするとエラーになる:セッションの時間切れ
- ダウンロードが最初からやり直しになる:サーバーが範囲リクエストに対応していない
ブラウザで確かめる
多くのブラウザでは、開発者ツール(F12キーなど)の「アプリケーション」や「ストレージ」の画面で、そのサイトのCookieの名前・有効期限を確認できます。まずは、ブラウザの設定でCookieがブロックされていないかを見てみましょう。
コマンドで確かめる
次のコマンドは、Webページを1回取得して、サーバーから返ってきたヘッダーを表示するだけの確認用です。
curl -sI https://example.com/
返ってきたヘッダーの中に set-cookie: の行があれば、サーバーがCookieを渡そうとしていることがわかります。Expires や Max-Age を見ると、Cookieの有効期限の目安がわかります。
curl -sI https://example.com/ | grep -i accept-ranges
accept-ranges: bytes と表示されれば、そのファイルは範囲リクエスト(続きからのダウンロード)に対応している可能性が高いです。
よくある質問
セッション層のプロトコルは今は使われていないの?
OSIの考え方にもとづくセッション層のプロトコルはありましたが、いまのインターネットの中心はTCP/IPで、TCP/IPには独立したセッション層がありません。その役割は、Cookieを使ったセッション管理のように、アプリやプロトコルの中に組みこまれる形で受け継がれています。
「セッション」と「コネクション」はちがう?
言葉の使われ方は場面によって変わりますが、OSIの考え方では、コネクションは下の層の「つながり」、セッションはその上で行われる「会話のまとまり」と考えるとわかりやすいです。1つのWebのログインセッションの間に、TCPの接続が何回も作り直されることもあります。
セッションIDはなぜ大事に扱う必要があるの?
セッションIDは、サーバーが「ログイン中のあなた」を見分けるための合言葉のようなものです。他人に知られると、その人に「あなた」として振る舞われるおそれがあります。公共のパソコンで使ったあとはログアウトする、HTTPSのサイトだけでログインする、といった基本を守りましょう。
まとめ
- セッション層は、通信する相手との会話(セッション)を始めて、続けて、終わらせる層
- X.200では、接続の確立・解放、トークン管理、同期点によるやり直しなどがサービスとして挙げられている
- TCP/IPには独立したセッション層がなく、役割は一般にアプリケーション層の中で扱われる
- 身近な例は、Cookieによるログイン状態の維持、TLSのセッション再開、ダウンロードの続きからの再開
- 確かめるときは、ブラウザのCookieの設定や
curl -sIでset-cookieを見る
前の層は第4層(トランスポート層)、次の層は第6層(プレゼンテーション層)です。どちらもシリーズの記事で解説しています。
OSI参照モデル シリーズ記事
このシリーズでは、OSI参照モデルの全体像と、7つの層を1つずつ解説しています(各記事は順に公開予定です)。
- OSI参照モデルとは?(全体像)
- 第1層 物理層
- 第2層 データリンク層
- 第3層 ネットワーク層
- 第4層 トランスポート層
- 第5層 セッション層
- 第6層 プレゼンテーション層
- 第7層 アプリケーション層
参考資料
- ISO/IEC 7498-1:1994 Information technology — Open Systems Interconnection — Basic Reference Model: The Basic Model
- ITU-T Recommendation X.200 (07/94) Basic Reference Model: The basic model
- RFC 1122: Requirements for Internet Hosts – Communication Layers
- RFC 6265: HTTP State Management Mechanism
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
- RFC 9110: HTTP Semantics

コメント