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

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

【NET技術.012】Webプロトコル②

»

 佐藤@IT雑貨屋です。

 Webプロトコルの内容について今回も続けます。
 昔はアプリケーションと言えば、クライアントで実行ファイル(exe形式)を実行するものばかりでしたが、現在では多くのアプリケーションはSaaS(Software As a Service)て提供さているものも多く、そこではこのWebプロトコルが利用されています。

 そういう意味でも、Webプロトコルを理解する事が重要だと思います。

◆エンコード処理
 HTTPヘッダで、URI(Uniform Resource Identifier)を利用するパラメータに、URIで使用できない文字を扱う場合には、エンコード処理を行います。具体的には、先頭に「%」を付与してASCIIコードの16進数2ケタで表現します。例えば改行を示す場合には0D(CR)0A(LF)を指定しますが、この場合には「%0D%0A」という内容になります。OSによって改行を表現するコードは異なりますが、Windows系ではこの様な表現となります。

◆HTTP認証
 HTTPでは認証のためのプロトコルが規定されています。RFC2617で規定されている認証方式には、ベーシック認証ダイジェスト認証の2つがあります。

 ①ベーシック認証
  利用者IDとパスワードを用いて認証を行います。パスワードは秘匿される事はなく
 盗聴が可能な形式で送信します。具体的には「利用者ID:パスワード」の様に、2つ
 の値をコロン(:)で連結してBASE64でエンコードして送出し、認証を行います。

 ②ダイジェスト認証
  利用者IDとパスワードを用いるのはベーシック認証と同じですが、パスワードを
 秘匿化するためにハッシュを用います。利用者ID とパスワード、及びサーバから
 送られてくるランダムな文字列(チャレンジコード)を、MD5等を用いてハッシュ
 値に変換した後、送出して認証を行います。

 近年ではWi-Fi環境でWeb閲覧をする事も多く、HTTP通信の盗聴も容易になっているので、HTTPの認証には、ベーシック認証ではなくダイジェスト認証を採用しているのが一般的です。

◆WebSocket
 WebSocketは、WebブラウザなどでHTTP通信を行う時に利用されるAPI(Application Program Interface)であるXMLHttpRequestオブジェクトの欠点を解決するための技術です。
 従来のHTTPでは、クライアントからサーバへの通信が基本であり、双方向通信を実現することが難しいものでした。WebSocketでは、HTTPを用いてサーバとクライアントが一度コネクションを確立した後は、必要な通信を全てコネクション内で独自のプロトコルで軽量に行う事で双方向通信を容易に行います。

◆プロキシ(Proxy)
 プロキシとは、クライアントとサーバ間の中間で、情報を代理で中継する仕組みです。クライアントに対してはサーバの役割を、サーバに対してはクライアントの役割を行います。Webで用いられる一般的なプロキシは、複数のクライアントからのWebアクセスを受け取り、sのURIを参考にWebサーバにアクセスし、結果を各クライアントに返します。
 またプロキシにはキャッシュの機能があり、一度アクセスした情報をサーバ内に保管をしています。そして他のクライアントから同じURIへの要求があった場合、都度Webアクセスを行わず、そのキャッシュ情報を返信します。
 なお、プロキシが中継するプロトコルですがHTTPに限ったものではなく、HTTPSやメール関連のSMTP、IMAPなど様々なプロトコルに対応させる事が可能です。
 プロキシを用いる利点には、主に以下の様なものがあります。

 ・高速なアクセス
  キャッシュを保存してWebサーバへのアクセスを行わない事で、クライアントから
 見て高速なアクセスを実現できます。

 ・安全な通信
  クライアントの端末情報が外部に漏れず、安全な通信を実現する事が出来ます。
 また有害なサイトをプロキシで遮断する事も可能です。

 ・データの変換
  クライアントに対応していないプロトコルの通信も、プロキシで中継する事で可能
 となります。例えばIMAPのみでIMAPSに対応していないクライアントの通信を、
 IMAPSに変換して通信する事も可能です。

◆リバースプロキシ
 通常のプロキシとは逆の働きをするのが、リバースプロキシです。リバースプロキシとは特定のサーバへの要求を代理で受け付けます。
 リバースプロキシでは、不特定多数のクライアントから送られてきたリクエストを一旦、受け取ります。そしてその情報を特定のWebサーバに中継します。負荷分散を行うため、殆どの場合、サーバは複数台で構成されます。このリバースプロキシを用いる利点には、以下の様なものがあります。

 ・負荷分散
  複数のサーバに処理を振り分ける事により、負荷分散をさせる事が出来ます

 ・キャッシュによる負荷分散
  サーバのコンテンツのうち、変化しない部分をキャッシュする事で、サーバの
 負荷を軽減できます。

 ・暗号化(SSL高速化)
  SSL/TLSによる通信をリバースプロキシが行う事で、サーバに負荷を掛ける事
 なく暗号化や認証を実現できます。

◆SSL/TLSとの連携
 プロキシを利用してSSL/TSL通信を行う場合には、以下の2種類の方法を用います。

 ①クライアントとプロキシサーバでTLS通信を行う
  クライアントとのTLS通信をプロキシが行い、中継先のサーバには平文で通信を
 行う方法です。この場合にはプロキシには公開鍵証明書などの情報を格納しておく
 必要があります。

 ②クライアントとサーバで直接TLS通信を行う
  クライアントとサーバがTLS通信を行い、プロキシにはTLSトンネルを作り透過
 させる方法です。HTTPではCONNECTメソッドで一旦、クライアントとサーバ間
 でセッションを確立した後は、TLSトンネルを作り、クライアントとサーバ間で
 暗号化データを通信させることが可能です。

 ちなみに私が関係してきたシステムでは①の「クライアントとプロキシでTLS通信を行う」という方法を採用しているシステムが多くありました。ただしこれは提供するサービスや、サーバ等の構成によるものであり、どちらを選択するかは、そのサービス次第になると思います。

Comment(0)