ステートフルとステートレス
セッションの状態の話
セッションとは:通信における開始から終了まで(ログインからログアウトまでを指すことが多い)
https://wa3.i-3-i.info/word1791.html
トランザクションの話も出てくる
トランザクションとは:「商品を渡して、代金を受け取る」のように「ここからここまでワンセット」になっている処理のこと(DBとかでよく耳にした)
https://wa3.i-3-i.info/word16325.html
ステートフル
サーバがクライアントのセッションの状態を保持する
セッションの状態によってリクエストに対するレスポンスが変わる
何度も繰り返し使うもの
毎回同じサーバを使ってユーザーの要求を処理する
ウィンドウの場所、ユーザー設定、最近のアクティビティなどを追跡する
例:オンラインバンキング, 電子メール
ステートフルなプロトコル(何を保持しているか?どんなコネクションかに注目)
FTP, TCP, BGP, OSPF, EIGRP, SMTP, SSH
ステートレス
サーバがクライアントのセッションの状態を保持しない
セッションの状態によらずリクエストに対するレスポンスが変わらない
過去のトランザクションに関する情報や参照は保持されない
単一の要求に対して単一の応答をする
ステートレスなプロトコル
HTTP, UDP, IP, DNS (UDPの性質を使っているこれらもたぶんそうDHCP, NTP, SNMP)
HTTP
HTTPは状態を保持できないからセッション管理でユーザーを特定しよう!みたいな話になる(cookieとかの話ここ)
「HTTPはステートレスだからセッション管理が必要」を詳しく解説 | OFFICE54
UDP
コネクションが確立しているかどうかを確認する状態(ステート)がない(逆に3ウェイハンドシェイクをするTCPはステートフル)
参考
https://www.redhat.com/ja/topics/cloud-native-apps/stateful-vs-stateless