私はサポートエンジニアになりたい

元教師・現開発エンジニアの挑戦

ステートフルとステートレス

セッションの状態の話

セッションとは:通信における開始から終了まで(ログインからログアウトまでを指すことが多い)

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はステートフル)

インターネット用語1分解説~UDPとは~ - JPNIC

参考

ステートフルとステートレスの違いとは?

https://www.redhat.com/ja/topics/cloud-native-apps/stateful-vs-stateless