.NET Framework 2.0で作る プロキシサーバー

.NET Framework で作る Windows サーバー
作ればわかるアプリケーションの動作とメカニズム
.NET Framework 2.0で作るプロキシサーバー
作ればわかるアプリケーション
の動作とメカニズム
13回
第
.NET Framework 2.0で作る
プロキシサーバー
ルアクセスする代わりに他のWeb
プロキシサーバー
サーバーにファイルを要求するもの
ということができる。では、SMTP
秋月 巌
AKIZUKI, Iwao
http://www.akizuki.co.jp/
プロキシサーバー
の動作原理
前回、紹介したAST(Asynchro
用のプロキシサーバーの場合、どう
プロキシサーバーが使用できる
nous Single Threading)サーバー
いえばいいのか考えたのだが、SM
ように設定されたWebブラウザは、
をプログラミングテンプレートとし
TPサーバーは、それ自身プロキシ
Webページ表示の指示が出された
て用いて、今回はプロキシサーバー
サーバーのようなものである。この
とき、常にプロキシサーバーに対し
を作成する。作る側から言ってし
連載を読んできた方ならば、SMTP
て要求を行なう。プロキシサーバー
まえば、Web 用のプロキシサー
サーバーが SMTPクライアントを
を使わない通常のWebページの取
バーとは、Webサーバーがファイ
内蔵していたことを覚えているだ
得の場合、Webブラウザは対象コ
ろう。SMTPサーバーとしてメール
ンピュータに取得するファイルのパ
クライアントから受け取ったデータ
ス名付きのファイル名を送信する
を他のSMTPサーバーに転送する
だけだが、プロキシサーバーに対し
レベル
1
2
3
4
5
のが SMTPサーバーの仕事なわけ
だから、これはまさにプロキシサー
バーの仕事である。
言語
■
秋月巌ソリューション事務所
Visual Basic
図1:サンプルプロキシサーバー
今回、作成するのはWeb用のプ
ロキシサーバーである
(図1)
。POST
メソッドのパラメータの扱いに問題
ツール
■
Visual Studio 2005 Professional
が あり、データ送信をする Web
ページをうまく処理できないこと
がある(うまくできることもある)
。
サンプル
この記事で取り上げたソースコード
およびサンプルプログラムは、
http://www.shoeisha.com/mag/windev/
からダウンロード可能です。
まぁ、普通のWebページは見るこ
とができるので、一応、プロキシ
サーバーとして動作しているといえ
るだろう。
2006 May 141
.NET Framework で作る Windows サーバー
作ればわかるアプリケーションの動作とメカニズム
て要求を行なう場合「http://・・・」から始まる完全な
はルーティングと同じである。ただし、あくまでアプリ
URLを送信する。通常のWebサーバーへのアクセスの場
ケーションレベルでの実装なので、対応するアプリケー
合、ファイルは接続先のサーバーにあることが明白だが、
ション(この場合、WebブラウザとWebサーバー)でし
プロキシサーバーの場合、ファイル名だけでは、どの
か利用することができない。
サーバーにあるのかわからないから当然である。
Webページ要求を受け取ったプロキシサーバーは、
また、プロキシサーバーを用いることで、Webブラウ
ザが直接インターネットにアクセスしなくなるので、セ
Webブラウザのふりをして対象のWebサーバーに接続し
キュリティを高めることが可能となる。プロキシサー
て指定されたファイルを要求する。今日ではWebサー
バーを経由してアクセスした場合、相手側のWebサー
バーもプロキシサーバーからもアクセスされることが前
バーには、プロキシサーバーが稼動するコンピュータが
提になっているが、当初WebサーバーはWebブラウザ
アクセスしたように見える。プロキシサーバーを経由し
からのみアクセスされるという前提だったはずなので、
ないで直接他のWebサーバーにアクセスした場合、IPア
まさにWebブラウザを偽装していたわけである。
ドレスばかりでなく、使用しているWebブラウザやOS
相手側のWebサーバーは当然のように要求されたファ
の種類などのプライベート情報までが、相手先のWeb
イルの内容を返信するので、プロキシサーバーはそれを
サーバーに伝わってしまう。とはいえ、これらの情報を
受信して、今度はWebブラウザに対して、その内容を送
相手先に伝えるプロキシサーバーもあるので、単にプロ
信する。これでWebブラウザはターゲットのファイルを
キシサーバーを使用したから安心だというわけでもな
取得することができる。
い。サンプルのプロキシサーバーはWebClientクラスを
Web用のプロキシサーバーならば Webブラウザから
の接続を受け付けてWebサーバーにアクセスするし、
POP3用のプロキシサーバーならばメールクライアント
からの接続を受け付けてメールサーバーに接続する。
使用しているため、これらの情報を他のWebサーバーに
送ることはない。
プロキシサーバーはWebブラウザとWebサーバーの通
信経路の中間に位置するため、行き来するデータを制限
したり加工したりする機能を付加することも可能であ
る。サンプルのプロキシサーバーは、何も処理を行なっ
プロキシサーバーの使用目的
ていないが、そのような機能を実装することでキャッ
シュやフィルタリングの目的に使うこともできる。
プロキシサーバーの動作はシンプルだが、使用するこ
キャッシュとは、一度、取得したデータを保存してお
とによって通信経路が変更される。それにより、複数の
き、再度、要求があったときには、それを利用するとい
メリットとデメリットが発生するので、使用する目的に
うものである。Webブラウザにもキャッシュ機能がある
ついて簡単に説明しておいたほうがいいだろう。
が 、それと同じものと思えばいい。Web ブラウザの
たとえば、ひとつのインターネット接続回線しかない
キャッシュとの違いは、Webブラウザのキャッシュがそ
環境で、2つ以上のコンピュータをインターネットに接
のコンピュータでのみ再利用されるのに対して、プロキ
続したい場合、プロキシサーバーを用いて実現すること
シサーバーのキャッシュデータはプロキシサーバーにア
ができる。それならば、ルーターと同じではないかと考
クセスするすべてのユーザーで共有できることである。
える人もいるかもしれないが、その通りである。Web用
キャッシュを使用することで、アクセス回数を減らすこ
のプロキシサーバーが稼動するコンピュータは、Web用
とができ、結果的にWebページの表示速度を上げるこ
のルーターと考えることができる。このようなケースで
とができる他、ネットワークトラフィックを減らすこと
は、プロキシサーバーが稼動するコンピュータは、イン
も可能となる。
ターネットとローカルネットワークの両方に接続されて
いる。ローカルネットワークに接続された他のコン
フィルタリング では、次のようなことを行なうことが
できる。
ピュータは、このプロキシサーバーが 稼動するコン
ピュータを経由してインターネットに接続される。これ
142 Windows Developer Magazine
①特定のユーザーからのアクセスだけを受け付ける。