小学生でも分かるプロキシ講座(3)
小学生でも分かるプロキシ講座(1)前回で(プロキシを使わない)通常のブラウジングについて書いたので今回はプロキシ経由のブラウジングについて。「インターネットオプション」「接続」でHTTPプロキシを設定した場合、サーバーにはどのような「リクエスト」が送信されるのか。
小学生でも分かるプロキシ講座(2)
プロキシを設定すると、クライアントがリクエストを送信する相手が「ウェブサーバー」ではなく「プロキシサーバー」になります。プロキシサーバーを経由して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> (以下省略) |
- クライアントからのリクエストを受け、適切なリクエストをウェブサーバーに対して行う
- ウェブサーバーからのレスポンスを受け、適切なレスポンスをクライアントに対して行う
さて、話を戻します。例えば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」をよこせ |
| クライアント → 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 → 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」をよこせ |
- リクエストの相手を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 → WebServer |
|
GET /File HTTP/1.1 Accept: */* User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Host: WebServer |
| 大意: お前のとこの「File」をよこせ |
- リクエストの相手をWebServerにする
- GET内の「-_-http://WebServer」を除去する
- HostをWebServerにする
・・・以上が、「delegateでは『多段串』ができるのにHTTP-Proxyではできない」という理由です。「delegateはリクエスト内Hostの改変を行うがHTTP-Proxyは行わない」。よく分からない方は「どのようなリクエストを送ればHTTPプロキシで多段串ができるか」というのを考えてみてください。「そんなリクエストは存在し得ない」というのが分かると思います。また、delegateによる多段串の場合はどのようにリクエストがチェーンされるのかも考えてみてください。「delegateは三箇所の『改変』を行う」ということを知っていればチェーンの実体も分かるはずです。
小学生でも分かるプロキシ講座(3')
小学生でも分かるプロキシ講座(4)
小学生でも分かるプロキシ講座(5)
小学生でも分かるプロキシ講座(6)

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