ステートレス・プロトコル

ステートレス・プロトコル（、のないプロトコル）とは、通信が独立した要求（request）と応答（response）の組から成るように、それぞれの要求をそれ以前の要求とは無関係の独立したトランザクションとして扱う通信プロトコルである。ステートレス・プロトコルでは、複数の要求があっても、それぞれのの情報や状態を保持することをサーバに要求しない。これとは対照的に、サーバで内部状態を保持する必要があるプロトコルをステートフル・プロトコル(stateful protocol)という。

ステートレス・プロトコルの例として、インターネットの基盤であるInternet Protocol(IP)や、World Wide Web(WWW)のデータ通信の基盤であるHypertext Transfer Protocol(HTTP)などがある。

ステートレスな設計では、進行中に会話に対処するためにデータの保存領域を動的に割り当てる必要がないため、サーバの設計を単純にすることができる。クライアント・セッションがトランザクションの途中で異常終了しても、サーバの状態をクリアする必要がない。ステートレスの欠点は、通信に必要なあらゆる情報を要求に含む必要があることであり、その余分の情報はサーバで解釈される必要がある。

 ライトウェイト
 ステートレス
 web フレンドリーなアーキテクチャ
 機能予測のしやすさ
 スケーラブルなアプリケーションに対応
 CPU、メモリ、スレッドなどのリソース消費が最小限

 例 
HTTPはステートレス・プロトコルである。これは、それぞれの要求メッセージが分離して解釈されるということを意味する。

これに対して、ユーザと対話的なセッションを行う従来のFTPはステートフルである。セッションの間に、ユーザは認証され、様々な変数（ワーキングディレクトリ、転送モードなど）を設定する手段が提供される。そして、それらの全てがユーザの状態としてサーバに保持される。

 ステートレス・プロトコルとステートフル・プロトコルのレイヤのスタッキング 
異なるプロトコルレイヤの間で、ステートフル・プロトコルとステートレス・プロトコルを複合して使用することができる。

例えば、ステートレスであるHTTPはステートフルであるTCPの上で使用される。TCPはステートレスのIPの上で使用されている。IPの上では、ネットワークに乗っているIPパケットのルーティングのためにステートフルのBGPが使用されている。

レイヤのスタッキングは、HTTPより上でも起きている。HTTPのセッション層の欠如のための回避方法として、HTTPサーバには様々なセッション管理手法が実装されている。一般的には、サーバーが同じクライアントから送られている要求を要請を追跡できるように、クッキーやパラメータによるユニークな識別子を利用し、HTTPの上でステートフル・プロトコルを構築する。

 出典 

Category:サーバ
Category:通信プロトコル