第二章簡単なHTTPプロトコル

2203 ワード

要求と応答のインタラクションによる通信
要求はクライアントから発行され、最後にサーバ側は要求に応答して1に戻る.要求メッセージは,要求メソッド,要求URI,プロトコルバージョン,オプションの要求ヘッダフィールドとコンテンツエンティティから構成される.
GET /index.htm HTTP/1.1
Host: hackr.jp

クライアントからあるHTTPサーバに送信要求メッセージのうちのコンテンツ開始行の先頭がGET識別要求アクセスサーバのタイプであるメソッド(method)と呼ばれる.次の文字列/index.htmは、アクセスを要求するリソースオブジェクトを示す.リクエストURIとも呼ばれます.最後のHTTP/1.1、すなわちHTTPのバージョン番号は、クライアントが使用するHTTPプロトコル機能を提示するためのものであり、総合的に見ると、この要求内容は、あるHTTPサーバ上の/indexへのアクセスを要求することを意味する.htmページリソース2.応答メッセージは、基本的にプロトコルバージョン、ステータスコード、ステータスコードを解釈するための理由フレーズ、オプションの応答ヘッダフィールド、エンティティボディから構成されます.
HTTP/1.1 200 OK
Data:Tue,10 Jul 2016 06:50:15 GMT
Content-Length:362
Content-Type:text/html


...

要求を受け付けるサーバでは、要求内容の処理結果が応答として返される.開始行の先頭のHTTP/1.1では、サーバに対応するHTTPバージョンを示す、次いで200 OKで要求の処理結果を示すステータスコード(status code)と理由フレーズ、次の行では作成応答の日時が表示する、先頭フィールド内の属性の1つが空行で分割され、その後の内容をリソースエンティティのボディ(entity body)と呼ぶ.
二サーバの意図を知らせるHTTP方法
1.GET:リソース2を取得する.POST:転送エンティティ3.PUT:転送ファイル4.HEAD:メッセージヘッダ5を取得する.DELETE:ファイル6を削除する.OPTIONS:サポートの方法を尋ねる.TRACK:トラッキングパス8.CONNECT:トンネルプロトコルでエージェントを接続する必要がある
3つの永続的な接続により通信量を節約
1.永続接続1.1 httpプロトコルの初期バージョンでは、http通信を1回行うごとにTCP接続を切断する.毎回の要求は無意味なTCP接続の確立と切断をもたらし、通信量のオーバーヘッド1.2 HTTP/1.1と一部のHTTP/1.0を増加することは永続接続(HTTP keep-alive)の方法を増加させる.永続接続の特徴は、いずれかの端部が明確に切断接続を提案していない限り、TCP接続状態を維持する永続接続の利点は、TCP接続の重複確立と切断による追加オーバーヘッドを低減し、サーバの負荷を軽減し、またオーバーヘッドの時間を低減し、HTTP要求と応答をより早く終了させることである.これにより、Webページの表示速度も向上する.HTTP/1.0のすべての接続はデフォルトで永続的な接続です
2.パイプライン化永続接続は、多数の要求がパイプライン化(pipelining)方式で送信可能である.次のリクエストを送信するには、以前にリクエストを送信後、応答を待って受信必要がある.パイプライン化技術は、複数のリクエストを同時に並列に送信することができ、次々と応答を待つ必要がなくなります.
四Cookieを使用した状態管理
1.HTTPプロトコルは無状態プロトコルである.以前に発生した要求や応答の状態を管理する.すなわち、これまでの状態に基づいて今回のリクエスト処理を行うことができない.2.ログイン認証を要求するウェブページを想定して、それ自体は状態の管理ができない(ログインした状態を記録しない).では、新しいページをジャンプするたびに再ログインするのではなく、要求メッセージごとにパラメータを付加してログイン状態を管理する.3.このような利点は、状態を保存することなく、サーバのCPUおよびメモリリソースの消費を低減することである.4.HTTP無状態プロトコルという特徴を保存するとともに類似の矛盾問題を解決するためにCookie技術を導入した.Cookie技術は、要求及び応答メッセージにCookie情報を書き込むことによりクライアントの状態を制御.Cookieは、サーバ側から送信応答メッセージ内のSet-Cookieというヘッダフィールド情報に基づいて、クライアントにCookieの保存を通知し、次回クライアントがサーバに要求を送信すると、クライアントは自動的に要求メッセージにCookie値を加えてサーバ側に送信クライアントから送信Cookieを発見すると、どのクライアントからの接続要求なのかをチェックし、サーバ上のレコードと比較して、前のステータス情報を取得します.