ステートレス・プロトコル
ステートレス・プロトコル(英語: stateless protocol、状態のないプロトコル)とは、通信が独立した要求(request)と応答(response)の組から成るように、それぞれの要求をそれ以前の要求とは無関係の独立したトランザクションとして扱う通信プロトコルである。ステートレス・プロトコルでは、複数の要求があっても、それぞれのセッションの情報や状態を保持することをサーバに要求しない。これとは対照的に、サーバで内部状態を保持する必要があるプロトコルをステートフル・プロトコル(stateful protocol)という。
ステートレス・プロトコルの例として、インターネットの基盤であるInternet Protocol(IP)や、World Wide Web(WWW)のデータ通信の基盤であるHypertext Transfer Protocol(HTTP)などがある。
ステートレスな設計では、進行中に会話に対処するためにデータの保存領域を動的に割り当てる必要がないため、サーバの設計を単純にすることができる。クライアント・セッションがトランザクションの途中で異常終了しても、サーバの状態をクリアする必要がない。ステートレスの欠点は、通信に必要なあらゆる情報を要求に含む必要があることであり、その余分の情報はサーバで解釈される必要がある。
- ライトウェイト
- ステートレス
- web フレンドリーなアーキテクチャ
- 機能予測のしやすさ
- スケーラブルなアプリケーションに対応
- CPU,メモリ,スレッドなどのリソース消費が最小限
例
[編集]HTTPはステートレス・プロトコルである[1]。これは、それぞれの要求メッセージが分離して解釈されるということを意味する。
これに対して、ユーザと対話的なセッションを行う従来のFTPはステートフルである。セッションの間に、ユーザは認証され、様々な変数(ワーキングディレクトリ、転送モードなど)を設定する手段が提供される。そして、それらの全てがユーザの状態としてサーバに保持される。
ステートレス・プロトコルとステートフル・プロトコルのレイヤのスタッキング
[編集]異なるプロトコルレイヤの間で、ステートフル・プロトコルとステートレス・プロトコルを複合して使用することができる。
例えば、ステートレスであるHTTPはステートフルであるTCPの上で使用される。TCPはステートレスのIPの上で使用されている。IPの上では、ネットワークに乗っているIPパケットのルーティングのためにステートフルのBGPが使用されている。
レイヤのスタッキングは、HTTPより上でも起きている。HTTPのセッション層の欠如のための回避方法として、HTTPサーバには様々なセッション管理手法が実装されている[2]。一般的には、サーバーが同じクライアントから送られている要求を要請を追跡できるように、クッキーやパラメータによるユニークな識別子を利用し、HTTPの上でステートフル・プロトコルを構築する。
出典
[編集]- ^ “RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing”. ietf.org. 20 August 2015閲覧。
- ^ “session management methods reviewed”. C cookie bits. 2011年4月12日閲覧。 “The following material is intended to introduce the reader to the various techniques that developers have used to implement session tracking on the Web. The main operational characteristics of each method are mentioned in addition to the shortcomings that have been observed in usage. Additional information on session management can be found by searching the Internet. […]”
- この記事は2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。