HTTPプロトコル:無状態プロトコル


一、定義
プロトコルの状態とは、次の送信で今回の情報を「記憶」できる能力をいう。HTTPは無状態プロトコルですが、なぜですか?HTTPは次の接続のために転送された情報を維持しないため、サーバメモリを保証するためです。例えば、お客様はウェブページを獲得してからブラウザを閉じて、もう一度ブラウザを起動して、このウェブサイトにログインしますが、サーバーはお客様がブラウザを閉じたとは知りません。Webサーバは、複数のブラウザとの同時アクセスを行うため、Webサーバの同時アクセス処理能力を向上させるために、HTTPプロトコルを設計する際に、HTTP応答メッセージとドキュメントをWebサーバに送信するようにした場合は、要求されたWebブラウザプロセスのいかなる状態情報も保存しない。これは、ブラウザが数秒以内に同一のオブジェクトに2回訪問する場合があります。サーバプロセスは、すでにメッセージを送っているので、第2期のサービス要求を受け付けないことはありません。Webサーバは送信要求のWebブラウザプロセスのいかなる情報も保存していないので、HTTPプロトコルは無状態プロトコルに属する。
二、HTTPプロトコルは無状態とConnection:keep-aliveの違いです。
                   ,              。      ,                                  。
HTTP              ,      HTTP    TCP  ,     HTTP    UDP  (   )。
 HTTP/1.1 ,      Keep-Alive,      ,    ,          ,             HTTP   TCP      ,                  ,               。
Keep-Alive        ,        ,           ( Apache)       。
三、HTTPの状態がない問題をどう解決しますか?
状態情報はCookieとSessionで保存できます。CookieとSessionは以下の明確な違いがあります。1)Cookieはクライアントに状態を保存し、Sessionはサーバ端に状態を保存します。2)Cookiesはサーバがローカルマシンに格納した小段テキストであり、各要求に従って同じサーバに送信する。CookieはRFC 2109において最初に実現され、その後RFC 2965は強化された。ネットワークサーバは、HTTPヘッダでクライアントにcookiesを送信し、クライアント端末では、ブラウザでこれらのcookiesを解析してローカルファイルとして保存します。これは自動的に同じサーバの任意の要求をこれらのcookiesに縛ります。SessionはHTTPのプロトコルで定義されていません。3)Sessionは、各ユーザに対する変数の値をサーバに保存し、どのユーザsession変数かを一つのsession IDで区別します。この値は、ユーザのブラウザを通じてアクセスした時にサーバに戻り、クライアントがクッキーを無効にした時に、この値をgetに設定してサーバに戻ります。4)セキュリティについて:sessionを使用したサイトにアクセスすると、自分のマシンにクッキーを作成し、サーバー側のSESSIONシステムの方がより安全であることを提案します。お客様が格納している情報を任意に読み取らないからです。