ネットワークエンジニアのフオです。
セッションについて紹介していきます。
間違っていることがあればぜひコメントや問い合わせで教えていただきたいです。
セッションについて知りたい人
コネクションとセッションの違い
ネットワークを学び始めたての人には下記の参考書がおすすめです。
イラストが豊富で初めて、私も初めてネットワークを勉強するために利用しました。
ページ数も200ページもないのでサクッと読み終わることができます!
ぜひ参考にしてみてください。
そもそも「セッション」って何か?
一言で言うと、「通信の始まりから終わりまでの一連のやり取り」 のことです。
日常生活で考えると会話の始まりから会話の終了までを一つの塊として考えて、それ1セッションと言います。
例えばは、朝に友人に会いおはようと話しかけて会話がスタートし休日に寿司を食べに行った話をしてそれぞれクラスに分かれて会話が終了したとします。
ここでは、挨拶から何を食べたのなど色々な会話が話されました。
そのため会話のラリーは複数回にわたっています。
ただし、会話の始まりと終わりだけで考えると1回とカウントできますよね。
この1回の論理的な単位のことをセッションと呼びます。
コネクションとセッションの違いは?
「それってコネクションと何が違うの?」と疑問に思う人もいると思いますので下記に違いを表にしてみました。
| 概念 | 意味 |
|---|---|
| 接続 (Connection) | 物理・論理的な繋がりが確立している状態 |
| セッション (Session) | その接続の上で、意味のある通信のまとまりが継続している状態 |
電話に例えると、接続 = 電話回線が繋がっている、セッション = 実際に会話が成立している時間 ってイメージになります。
セッション層について

OSI参照モデルの第5層(セッション層) が担う役割は主に3つ:
- セッションの確立 (Establishment) — 通信を始める合意を取る
- セッションの維持 (Maintenance) — 通信が継続していることを管理する
- セッションの終了 (Termination) — 適切に通信を締める

クライアント: SYN (seq=100)
サーバー: SYN-ACK (seq=200, ack=101)
seq=200 と seq=100 は固定ではなく例としておいています。
大切なことは、各側のシーケンス番号(seq)は、それぞれが独立してランダムに決めまることack(確認応答番号)がseq+1の値になるということです。
ackは「自分のseq」じゃなく「相手のseq」に+1するルールがあります。
TCPのセッション確立(スリーウェイハンドシェイク)

seq(シーケンス番号) と ack(確認応答番号) のやり取りで、お互いのデータの順番と受信確認を管理している。
セッションの終了(フォーウェイハンドシェイク)
接続を切るときもきちんとした手順があります。

なぜ終了は4ステップ? → 双方向の通信をそれぞれ独立して終了するから。片方が終わっても、もう片方はまだ送り続けることができる(半二重終了)。
セッションを識別する「5タプル」

この5つが全部一致して初めて「同じセッション」と判断される。
ファイアウォールやNATはこれを見て通信を管理している。
ステートフル(セッションを追跡する)

- メリット: 不正な通信を検知しやすい(TCPの状態と一致しないパケットは落とせる)
- デメリット: メモリを消費する、セッションテーブルがあふれるとDDoSになる
- 例: 次世代ファイアウォール、NATルーター
ステートレス(セッションを追跡しない)
パケット単体を見てルールに合致するか判断するだけ 「このIPからこのポートへのパケット → 許可」みたいな単純ルールです。
- メリット: 高速、スケーラブル
- デメリット: 戻りパケットも明示的に許可ルールが必要
- 例: 古典的なACL(アクセスコントロールリスト)
まとめ
セッションはただの「接続」じゃなく、状態を持った通信の論理的単位です。
ネットワークの案件や検証を行う時に、セッションという単語はよく出てくるので理解しておくと話がスムーズに入ってくると思います。
最後まで読んでいただきありがとうございました。

コメント