![]() |
Copyright © 2000-2005 eazyfox. All Rights Reserved. | ||||
|
|
|||||
OSI7層モデルとはいろいろな通信方法を利用しやすいように仕組みを決めて、各仕組み間でのデータのやり取りする内容を定義することで上位と下位の仕組みが変わっても、ちゃんと動作できるように定義したものだ。
ものすごく簡単に言うと、プログラムが複数(7層なら7個)動いていて、それぞれのプログラムは受け取ったデータを加工して次のプログラムに受け渡す。それによって、LANケーブルの電気信号が文字や絵となり表示したり,保存することが可能となる。また逆に文字や絵のデータを誤りなく目的のクライアントに送ることができる。
TCP/IPの仕組みはこのOSI7層モデルに完全にマッチしているわけではない。いちおう各レイヤの仕組みをOSIに合わせてみると左のようになる。Linkレイヤで考えてみると、Linkレイヤの仕組みはPPP、ISDN、ADSLといったものが相当する。ADSLを利用したいときを例にすると下位はHardwareレイヤなのでここが電話線になっても、同軸ケーブルになってもケーブルから受け取る信号が同じフォーマット・規格あればADSLを使うことが出来る。また上位のInternetレイヤに渡す信号のフォーマットが同じであればIPでもICMPでも動かすことが出来る。
こういったフォーマットや規格の統一がOSI参照モデルの目的である。
正直にいって筆者もあまりレイヤを意識することは無い。どちらかと言うとIPとTCP間のデータはどうなっているのかとかプロトコルの名前で仕事をしている。しかしこの図を知っていると各プロトコルの仕組みがよく分かるのもたしかだ。
各フィルタの役割を見てみよう。どことどこの間で動いているのかが分かれば、何を判断しているのかがよく分かる。
パケットフィルタ
ダイヤルアップアダプタやLANカードとNDISドライバの間に存在して、IPアドレスやACKフラグなどのパケット情報によりフィルタリングを行う。NDISドライバはダイヤルアップアダプタやLANカードからデータを受け取るためのプログラムで、数種類の動作しかない。
そこでデータの内容をNDISから横取りしてパケットの中身を判定してからNDISに受け渡すのがパケットフィルタの役目だ。
アプリケーションフィルタ
IPからWinsockまでの各レイヤで引き取るデータの内容までを組み合わせて監視することでフィルタリングを行う。たとえばMailを受け取るときなら
・InternetレイヤのところでIPアドレスのチェックを行う(許可したIPからのパケットか?)
・TransportレイヤとSessionレイヤのところでポートのチェックを行う(許可されたポートのパケットか?、フラグメントは?)
・Presentationレイヤでデータ部の内容から添付ファイルはあるか?あればVirusが混入されていないか?
・Applicationレイヤでは受け取る相手は許可されたアプリケーションか?
といった判定がなされるのだろう。これらの判定によって安全にメールが受信されるというわけだ。