トップページに戻る

Category

AllArchives

Checker

Credit

小学生でも分かるプロキシ講座(3)

小学生でも分かるプロキシ講座(1)
小学生でも分かるプロキシ講座(2)
前回で(プロキシを使わない)通常のブラウジングについて書いたので今回はプロキシ経由のブラウジングについて。「インターネットオプション」「接続」でHTTPプロキシを設定した場合、サーバーにはどのような「リクエスト」が送信されるのか。

プロキシを設定すると、クライアントがリクエストを送信する相手が「ウェブサーバー」ではなく「プロキシサーバー」になります。プロキシサーバーを経由してhttp://www.tokix.net/index.htmlを開く場合なら。

クライアント → HTTPプロキシ
GET http://www.tokix.net/index.html HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.tokix.net
大意: www.tokix.netの「http://www.tokix.net/index.html」をよこせ
このようなリクエストを受けたプロキシサーバーはウェブサーバーに対し以下のような「リクエスト」を送信する。
HTTPプロキシ → www.tokix.net
GET /index.html HTTP/1.1
Accept: */*
Accept-Language: ja
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.tokix.net
大意: お前のトコの「/index.html」をよこせ
するとウェブサーバーがプロキシサーバーに対し「レスポンス」を行う。
www.tokix.net → HTTPプロキシ
HTTP/1.1 200 OK
Date: Wed, 25 Dec 2002 09:00:00 GMT
Server: Apache/1.3.9 (Unix)
Content-Type: text/html

<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=SHIFT_JIS">
<title>tokix.net - 毎週水曜更新</title>
(以下省略)
最後に、上記レスポンスを受けたプロキシサーバーがクライアントに対して「レスポンス」を行う。
HTTPプロキシ → クライアント
HTTP/1.1 200 OK
Date: Wed, 25 Dec 2002 09:00:00 GMT
Server: Apache/1.3.9 (Unix)
Content-Type: text/html

<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=SHIFT_JIS">
<title>tokix.net - 毎週水曜更新</title>
(以下省略)
・・・以上が「プロキシサーバーがクライアントとウェブサーバーの間に入る」という表現の実体です。すなわち、「プロキシ」の役割とは
  1. クライアントからのリクエストを受け、適切なリクエストをウェブサーバーに対して行う
  2. ウェブサーバーからのレスポンスを受け、適切なレスポンスをクライアントに対して行う
の二点。

さて、話を戻します。例えばInternetExplorerといった「ブラウザ」は、ウェブページを開こうとした時、あるリクエストを誰かに対して行っている訳です。その一般形は、「http://WebServer/File」を開く場合
クライアント → WebServer
GET /File HTTP/1.1
Accept: */*
Accept-Language: ja
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: WebServer
大意: お前のとこの「File」をよこせ
です。で、「インターネットオプション」「接続」にHTTPプロキシ(ここでは「Proxy」とします)が設定されている場合、送信される「リクエスト」の一般形は以下です。
クライアント → Proxy
GET http://WebServer/File HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: WebServer
大意: WebServerの「http://WebServer/File」をよこせ
このリクエストを受けたProxyが発行するリクエストの一般形は以下です。
ProxyWebServer
GET /File HTTP/1.1
Accept: */*
Accept-Language: ja
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: WebServer
大意: お前のとこの「File」をよこせ
「HTTPプロキシ」は自分が受けた「リクエスト」の一部を改変しウェブサーバーへリクエストを行う。その「改変」とは
  • リクエストの相手をWebServerにする
  • GET内の「http://WebServer」を除去する
この二点です。

delegateも基本的には同じように
クライアントとウェブサーバーの間に入る
訳ですが、細かく見ると役割が違うのが分かると思います。「http://Delegate/-_-http://WebServer/File」と打って(「インターネットオプション」「接続」内のプロキシ設定は行わずに)「移動」を押した場合、クライアントから送信される「リクエスト」は以下です(ということをわざわざ書かれなくてもここまでの内容から推測できるでしょうか?)。
クライアント → Delegate
GET -_-http://WebServer/File HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: Delegate
大意: お前のとこの「-_-http://WebServer/File」をよこせ
上記のような「リクエスト」を受けたDelegateは以下のような「リクエスト」を送信します。
DelegateWebServer
GET /File HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: WebServer
大意: お前のとこの「File」をよこせ
delegateの場合の「改変」とは
  • リクエストの相手をWebServerにする
  • GET内の「-_-http://WebServer」を除去する
  • HostをWebServerにする
の三点。

・・・以上が、「delegateでは『多段串』ができるのにHTTP-Proxyではできない」という理由です。「delegateはリクエスト内Hostの改変を行うがHTTP-Proxyは行わない」。よく分からない方は「どのようなリクエストを送ればHTTPプロキシで多段串ができるか」というのを考えてみてください。「そんなリクエストは存在し得ない」というのが分かると思います。また、delegateによる多段串の場合はどのようにリクエストがチェーンされるのかも考えてみてください。「delegateは三箇所の『改変』を行う」ということを知っていればチェーンの実体も分かるはずです。
小学生でも分かるプロキシ講座(3')
小学生でも分かるプロキシ講座(4)
小学生でも分かるプロキシ講座(5)
小学生でも分かるプロキシ講座(6)

SeeAlso

SameSubCategory

Footprint

Navigation

TrackBack

この記事へのトラックバック

Comment

PostForm

情報を登録  
コメントは本文以外省略可能で、当方の承認後掲載されます