😊

【3分間HTTP&メールプロトコル基礎講座】第10、11回セッションステートレス、Cookie

2023/02/26に公開

セッションステートレス

  • HTTPの持つ問題点

セッションとは

  • OSI参照モデルの第5層がセッション層
  • TCP/IPモデルの7~5層をまとめて「アプリケーション層」とし、7~5層の役割を一つのプロトコルで実現している。HTTPはセッション層の役割も担っているということになる。
  • セッションとは話し合いのことで、話し合いの管理をするのがセッション層
  • ネットワークにおけるセッションとはクライアントが望むデータをやりとりして「話し合い」を成立させる
  • 1回の「会話」で「話したいこと」つまり「データ」をやりとりする
  • 話題が複数あるなら、複数の話題で1つの会話
  • 会話(セッション)の中では「誰と誰が今喋っていて、さっき喋ったことと、今喋っていることは関係がある」という状態になっていなければならない。

セッションステートレス

  • HTTPでは一つのファイルのやり取りが1つのセッションになる。よって複数のファイルのやり取りの間、つまり複数のセッション間では、情報が保存されない
  • 1つ目のデータを送るセッションと2つ目のデータを送るセッションが別だと、瀬sh尊が別だからデータを送ったのが同じ送信元だとわからない。前のセッションの状態は、次のセッションでは無関係になる。=セッションステートレス問題
  • 送信元IPアドレスは必ずしも「使用しているユーザ: IPアドレス」という1:1の関係にはならない。
    • プロキシサーバやNAT/NAPTを使われたらアウト
  • HTTPのやり取りにCookieを付加することにより、セッションを擬似的に作り出すことができる
    • HTTPで「前きたかどうかを確認する情報」がcookie

Cookie

Cookieのやり取りの中身

  • CookieはHTTPのやりとりに付け加えられる。
  • メッセージヘッダとして付け加えられる
    • CookieSet-Cookie
    • ネットスケープ社独自のもので、あくまでデファクトスタンダード
  • Set-Cookieで送られてきたデータを、クライアントはファイルとして保存しておく、同じサーバにアクセスする際にはその保存したファイルの中身をCookieに記述する
  • Cookieの名前を一つ含めなければいけない。
    • 名前=値の形でいくつも書くことができる

Cookieファイル

Cookieの動作的にあった方がいい値

  • 有効期限(expire)
    • UAは有効期限の過ぎたCookieデータをメッセージヘッダとしてCookieに含めない。
    • 保存されていたCookieデータのファイルも削除する
    • Set-Cookieに有効期限が含まれていない場合、UAはCookieデータをファイルとして保存しない
    • 簡単にいうと、ブラウザを閉じるまでの間の有効なCookieファイル=セッションCookie
  • ドメイン名
    • Cookieファイルを送る相手の特定に使われる
    • ドメイン名に指定されたサーバにアクセスする時だけ、UAは保存されたCookieファイルをCookieに含める
    • Cookieファイルを保存して、どのサーバに送り返すのか決めておかないとだめ
  • パス名
    • Cookieファイルを送る相手の特定に使われる
    • サーバが同じでもwebサイトが違う違う場合がある

Discussion