オルタナティブ・ブログ > IT雑貨屋、日々のつづり >

IT業界につとめる「雑貨屋(なんでも屋)」が、業界の事、情報セキュリティの事、趣味や日々雑感を綴っていきます。お暇な方はおつきあい下さい。

【NET技術.011】Webプロトコル①

»

 佐藤@IT雑貨屋です。

 WEBとはそもそもの語源は「蜘蛛の巣」ですが、これはインターネットのネットワークイメージから来ていると言われています。そのWEB上で情報提供の仕組みをWEBプロトコルは実現しています。ここではハイパーテキストで情報をリンクする事で、情報の存在場所を意識させる事なく、世界中の情報に次々とアクセスする事が出来ます。このWEBプロトコル等は、アプリケーション層で動きます。

◆HTTP
 WEBページを記述している形式はHTML(Hyper Text Markup Language)です。そのHTMLをやり取りするプロトコルがHTTP(Hyper TextTransfer Protocol)となっています。

 HTTPでは基本的に以下の流れでクライアント・サーバー間の通信を行います。HTTPではクライアントの要求に対して、サーバが応答するというのが典型的です。
 例えばホームページの「index.html」というファイルをクライアントが要求する時には以下の流れとなります。

 ①クライアントはサーバに「GET /index.html HTTP/1.1」を要求する
 ②その要求に対してサーバは「HTTP/1.1 200 OK」で応答する
 ➂その後、サーバはHTMLデータをクライアントに送信する

 ちなみにこの通信はHTTP1.1のやり取りですが、ここでは1回のTCPコネクションで複数のリクエストー応答のやり取りが可能です。しかし以前のHTTP1.0では1回のリクエストー応答の度にTCPコネクションを接続していました。

◆HTTPメッセージ
 HTTPでやり取りするメッセージは、クライアントからサーバへのリクエスト(要求)と、サーバからクライアントへのレスポンス(応答)の2種類です。

 ・リクエスト
  リクエストメッセージは、メソッドを記述するリクエストラインとリクエストヘッダ
  及びメッセージディの3つで構成されます。
  リクエストラインに記載される代表的なメソッドには、以下のものがあります。
   GET:指定したURIのデータを取得する
   HEAD:メッセージヘッダだけを取得する
   POST:指定したURIにデータを登録する
   CONNECT:プロキシにトンネル接続の確立を要求する

  またリクエストヘッダにはクライアントからの追加情報を記載しますが、その際の
  主なパラメータとしては以下のものがあります。
   Host:サーバホスト名とポート番号
   Accept:受け入れ可能なメディアタイプ
   Authorizetion:HTTPアクセス認証情報
   Referer:直前に閲覧していたURI
   Cookie:クッキーを設定してサーバに送信
   User-Agent:クライアントのシステムやブラウザ等の情報

 ・レスポンス
  レスポンスはステータスコードを記述するステータスラインとレスポンスヘッダ、
  及びメッセージボディの3つで構成されます。
  ステータスラインにはステータスコードが記載されますが、代表的なレスポンス
  コードには以下のものがあります。
   100:Cotinue(暫定応答)
   200:OK(リクエスト成功)
   304:Not Modified(文書は更新されていない)
   401:Unautharized(認証が必要)
   404:Not Found(見つからない)
   500:Internal Server Error(サーバエラー)

  またレスポンスヘッダには、サーバからのレスポンスに関する追加情報が設定
  されます。レスポンスヘッダに記載される主なパラメータとして以下のものが
  あります。
   Location:URI以外の場所にリダイレクト
   Set-Cookie:クッキーを発行してクライアントに通知
   Content-Type:転送されるコンテンツ形式や文字コード
   X-Content-Type-Options:Content-Typeに合致しないコンテンツ動作を
                決定
   Content-Security-Policy:ブラウザセキュリティ対策の有効化
   X-Frame-Options:フレーム内の表示を有効化するかどうか設定
   Strict-Transport-Secrity:HSTSの機能を有効化
   X-XSS-Production:ブラウザでクロスサイトスクリプティング対策を行う
             機能の有効化

  Content-Security-Policyヘッダは、クロスサイトスクリプティングやイン
  ジェクション攻撃などのような特定の種類の攻撃を検知し、影響を軽減する
  ために追加できるセキュリティレイヤです。
  W3C(World Wide Web Consortium)が勧告しており、Web標準となって
  います。Content-Security-Policyを利用してクリックジャッキング脆弱性に
  対応するには、以下のかたちで許可する際とを指定します。

   Content-Security-Policy: script-src 'self'

  この例では、許可するスクリプトを自身のオリジン('self')で用意している
  スクリプトファイルに限定します。自身のオリジンとは、スキーム(プロト
  コル)、ポート番号、ホストの全てが一致するものです。

◆クッキー(Cookie)
 Webアプリケーションでは、通信しているユーザの情報を続けて管理するために、クッキー(Cookie)が使用されます。
 クライアントのリクエストに対して、サーバがレスポンスを返す時、HTTPレスポンスヘッダのSet-Cookieにクッキー値を設定して送ります。そして、クライアントが次のリクエストを送る、HTTPリクエストヘッダのCookieで、クッキー値を返します。この事でWebサーバは一連の通信が継続している事を判断できます。

Comment(0)