😊
【3分間HTTP&メールプロトコル基礎講座】第10、11回セッションステートレス、Cookie
セッションステートレス
- HTTPの持つ問題点
セッションとは
- OSI参照モデルの第5層がセッション層
- TCP/IPモデルの7~5層をまとめて「アプリケーション層」とし、7~5層の役割を一つのプロトコルで実現している。HTTPはセッション層の役割も担っているということになる。
- セッションとは話し合いのことで、話し合いの管理をするのがセッション層
- ネットワークにおけるセッションとはクライアントが望むデータをやりとりして「話し合い」を成立させる
- 1回の「会話」で「話したいこと」つまり「データ」をやりとりする
- 話題が複数あるなら、複数の話題で1つの会話
- 会話(セッション)の中では「誰と誰が今喋っていて、さっき喋ったことと、今喋っていることは関係がある」という状態になっていなければならない。
セッションステートレス
- HTTPでは一つのファイルのやり取りが1つのセッションになる。よって複数のファイルのやり取りの間、つまり複数のセッション間では、情報が保存されない
- 1つ目のデータを送るセッションと2つ目のデータを送るセッションが別だと、瀬sh尊が別だからデータを送ったのが同じ送信元だとわからない。前のセッションの状態は、次のセッションでは無関係になる。=セッションステートレス問題
Cookie
- 送信元IPアドレスは必ずしも「使用しているユーザ: IPアドレス」という1:1の関係にはならない。
- プロキシサーバやNAT/NAPTを使われたらアウト
- HTTPのやり取りにCookieを付加することにより、セッションを擬似的に作り出すことができる
- HTTPで「前きたかどうかを確認する情報」がcookie
Cookie
Cookieのやり取りの中身
- CookieはHTTPのやりとりに付け加えられる。
- メッセージヘッダとして付け加えられる
- CookieとSet-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サイトが違う違う場合がある
- http://www.test.jp/interとhttp://www.test.jp/net のように。
- この場合interで使っているCookieデータをnetに送るわけにはいかないのでパス名でwebサイトを指定する
Discussion