ネットワークセキュリティー入門(3/5)

■通信とは?
 まず、通信とは何かを考える。二つのもの、例えば、パソコンとパソコンを 接続してデータを授受できると便利なものである。
それを実現するのが「通信」だといえるだろう。
しかし、通信を行うには「決まり」が必要で、その決まりは、お互いが知ってないと 意味が無い。
そこで、大昔の人は、以下のような階層を考えた

2.1を見てもらいたい。
初めて見る人は、なんの事だかさっぱりであろう。
何かを通信するなら、一つの方法ではなく、複数の方法を 積み重ねてそれをルール化し、7個に分けたらどうだ?というものである。
具体例がないと説明しにくいので、例3,4,5,6などで登場するPC(パソコン)に当てはめて考えてみよう。
2.2には、その7階層(セブンレイヤー)がどのハードウェアに対応しているかを 示している
パソコンで、ネットワークに関するハードウェアは、LAN基板(ボード)、コネクタ、パソコン本体でである。
よって、こういった絵になる。
では、本題の7階層とプロトコルは2.3に記述しているが、 次章で説明する。

■プロトコルってなに?
ここでは図2と、下図を例に考えてみよう。

2台のパソコンは、LAN基板とLANケーブル、またHUBなどで結ばれている。
そして、何かのデータ通信をする様子に当てはめ、プロトコルについて説明する。
2台のパソコンは、通信をする為に、お互い同じ決まりを持っていないと 通信できないのは、言うまでも無い。その決まりこそが「プロトコル」である
まず、無線方式を除いては、物理的に相手に直接接続する必要がある。
この例ではLANケーブルが、HUBを経由して相手のPCに物理的に繋がっている。
これを、2.1のフジカルレイヤーと呼ぶ。なお、最下層の為に、レイヤー1と呼ぶ こともある
レイヤーでは、接続している状態の事を「レイヤーが確立されている」と表現する事が 多い
身近な例では、ISDNユーザなら知っているが、NTTから来る回線のコネクタを 引っこ抜いたら、どうなるか?
TAのLCDには「回線障害です」とかまた、マニアックな機種なら「レイヤー1障害」とか出てくる。まさに、相手と物理的に接続されていない様子である。
LANでは電気信号などの制御を行うため、IEEE802.3という規格で統一されている。 よって、 メルコのLANボードでも、INTELのマザーボード内臓のLANボードでも、 3comのLANボードでも関係なく接続できるのだ。
なお、接続する口、10BaseTであればRJ45というように、口まで規格化されている。 例えばRS232Cをご存知であろうか?RS232Cは、電気信号を規格化したもので、 通常のパソコンにも搭載されている。
IOIOのマークの入った端子だ。この端子もシリアルではあるが、過去には立派に 活躍したものだ。
通信の最大速度が115KBPSと極めて遅い為に、衰退していった。
現在でもISDNユーザやモデムユーザでは使用している人も多いが・・・。

次にレイヤー2のデーターリンクレイヤーの解説をする。
先のRS232Cに戻るが、パソコン通信世代であればv.42bisとかMNP5とか聞いた事が あるだろう。
これはデーターリンクを確立する手順のプロトコル名である。
56Kモデムなどではv.90等である。
MNPはMicrocomNetworkProtocolである。
データーリンク層からは、アドレスという概念がでてくる。 どこのアドレスに何を送信するかというように、相手をアドレスで表す。
LAN通信では、6バイトのMACアドレスがあり、それに制御情報とデータが 付与される
LAN通信では、IPアドレスだけで通信していると考えるのは、 大きな間違いだ。
先に説明した、レイヤー1が接続できていないと、レイヤー2で通信する事はでない。
MACアドレスは、3バイトの企業コードと3バイトのシリアル番号からなり、 IEEE(アイトリプルイーと読む)が管理している。シリアル番号は絶対に 重複しないよう製造している為、1枚のネットワークボードのMACアドレスは 世界に一つしかないと考えてもOKだろう。
言い忘れたが、MACアドレスは、ボード内のROMに書き込まれている為、 ユーザーが変更することはできない。買ったときからそのアドレスが自分の物なのだ。
(注:ルーターなどはソフト的にMACアドレスをユニークに設定できるものがある)
では、相手と通信する為には、データーリンクを確立しなければならないが、 それには、相手のMACアドレスが必要になるのは、分かっていただけると 思う
しかし、我々が使っているメールやブラウザに相手のアドレスを指定できるのは、 IPアドレスだけだ。
では、どうやって相手のMACアドレスを調べているのだろう?
それは、通信が発生したときに、上位のレイヤーが問い合わせているのだ。
口でいうより、やってみたほうがいい。
ADSLだったらADSLのIPアドレス、パソコンが複数あるなら相手のパソコンに、 次のコマンドをDOSプロンプト(win)で打ってみて欲しい。
ping (相手のIPアドレス)
これはTCP以上のアプリケーションでトランスポートレイヤーで指定する(後述) プロトコル番号1(ICMP)で相手にパケットを送り、受信した側はそのまま返却する というコマンドだ。
便利なので、多用する為、よく覚えておいて欲しい。
このコマンドで、応答があればリプライが帰ってくる。という事は、相手の端末に自分パケットが到着している事を意味し、通信が成功しているわけである。
そこで、次のコマンドを打ってみよう。
arp -a
これは、自分の端末の中にある相手のMACアドレスを参照する機能だ。
話は戻るが、先ほどPingにより、IPで正しく通信できた。 でもMACアドレスなんかどこにも指定していない。
で、このarpのリスト(アープテーブルという)を見ると、 なんと、Pingが成功したマシンのMACアドレスが表示されているではないか。
フジカルアドレスというのが、ソレである。
実は、上位レイヤー(この場合レイヤー3より上)から、誰かに通信したかった場合、 自動的に全端末に対してブロードキャストが行われる。ブロードキャストとは、一方的に「全ての」端末に投げるものだと思っていいだろう。
ようはPing 192.168.1.1と打ったら、相手のMACアドレスが分からないと通信で きない。まず、自分のアープテーブル内を覗き、もし無かったら、
「おおおい192.168.1.1というひといるか~いたら、マックアドレス教えてくれ~」
といって「全端末」に要求するのだ。すごく迷惑な話だろう。
迷惑を少しでも軽減する為、アープテーブルは、一定期間自分のパソコンに 保存されるという機能をドライバが提供している
保存していたら、次に送出するときは、ソレを見ればいいからだ。
以上のような制御をLLC(Logical Link Control)が行っている。
MACアドレス、LLCの動作に関して詳しく解説されたサイトがすくないので、 このデータリンク層の動作に関しては、充分理解してほしい

次にネットワーク層だが、ここではじめてIPが登場する。
IPはそもそもInternetProtocolの略であり、ネットワーク層に相応しい内容だ。
下位からのアドレス情報にIPヘッダというものを付加する。
そのなかにIPアドレスや、相手先のIPアドレス、また経路や、パケット生存期間 などが記載されている。こういった手順であるが、ここからはいよいよ、我々にも 関係ある階層である。
データーリンク層の制御は、ベンダー提供のドライバやボードの石が行っているが レイヤー3からは、OSのシステム設定で変えられる。
WIN9Xや2Kのネットワーク設定画面を見たことがあるだろう。
WIN9Xでは、ネットワークコンピュータの上で右クリックしプロパティで見る 事ができる。
WIN2Kではローカルエリア接続のプロパティで見る事ができる。 WINの場合、IPとTCPが一つになったパッケージを使っている。
ここで、「ファイルとプリンタの共有」などを行うとマイクロソフトのファイル共有設定ができる

次は、トランスポート層だ。その名の通り、「ポート」に対してデータを転送するプロトコルである。IP通信では「TCP」が担当する。
ブラウザのURL欄に「http:」と記載しているのは、殆どの人が知っているだろう。
あれは、「このポートを使いますよ」という事をユーザが入力するのである。
ポート通信は、どのように行われるかというと、サーバーポートとクライアントポートに分類される。サーバーポートは、サービスを与える側、クライアントポートは、サービスを受ける側である。WWWサーバで言えば、インターネットにあるホスト、例えば
「www.yahoo.co.jp」などがサーバーポートである。利用する我々は、サーバーポートの番号を指定してアクセスできる。
TCP上のコマンドでは
クライアント         サーバー
          Syn
     ---------------->
         SynACK
     <----------------
synの中には自分のポートと相手のポートがある
このように、クライアント側はどのポートで接続するかポート番号と、 相手のIPアドレス(www.yahoo.co.jp等)を指定すると接続できるのだ。
表には見えないが、サーバー側もクライアントに対してポートを指定してデーター転送するため、最初の接続時に自分(クアイアント)のポートも指定している。
話は反れるが、ブラウザでは色々なポートで接続できる。
例1)
http://www.aa.bb.co.jp:11111/
ポート番号11111で接続できる。この11111を記述せず、接続しても表示しない。
一部のひとしか見えない、サーバーを構築することも可能だ。
(しかし、全ポートスキャンなど食らうと、容易に発見されてしまう)
例2)
ftp://ftp.aa.bb.co.jp/
FTPサーバに接続にいく、同じようにtelnet:などもある
意外に知られていない。

トランスポート層より上は、各アプリケーションにより異なり、 特に説明は不要だ。
プロトコル階層について整理しよう。
今まで説明してきた通り、一つの通信、例えばPingというアプリケーションひとつとってみても、様々なプロトコルがそれぞれの階層で動作している事が、分かったはずだ。
なぜ階層化されているか、理解できるだろうか?
筆者はWindowsアプリケーションのコーディングなどした事が無い素人であるが、 Windows環境でVBやVCでコーディングする場合はAPIというものが必要になる。
その中で、Winsock(ウィンソック:トランスポート層をあたかも、コンセントのソケットのように抜き差しできるようにポート制御ができるDLL群)のAPIを使ったら、 簡単にポートのOPENができる。おそらく1ステップだ。
先の、syn、syn-ackなど、該当のポートと接続する行為が1ステップでできるのだ。
しかもデータ転送は、サイズなどを指定して送信の関数をたたけばよい
ようは、相手のIPアドレス、ポート番号が分かれば、数ステップでデータ転送を行う プログラムが作成可能なわけだ。
データ送信を行う上で、TCPというプロトコルは、誤り制御から再送まで 全て行ってくれる。
「Windowsを使ってるのだから、そんなの当たり前だ」と早とちりしないで欲しい。
もし、プロトコル階層が無かったら、どうなるか考えて欲しい。
LANボードのI/OのICに対して、信号線の制御を行い、相手が接続されているか 確認するような「作業」をすべて一つの階層で行わなければならない。
1バイトのデータを送信するだけでも、数百、数万ステップのコーディングになる事は 必至である。
その為のプロトコル階層なのだ。
また、障害管理、セキュリティ、トラフィックの観点からも、プロトコルを階層にするのは大変便利なのである。

読者の中に、VoIPとかPPPoEという言葉を聞いたことがある人も居るだろう。
これは、プロトコル階層の略語である。
VoIPはVoiceOverInternetProtocolであり、H.323等の規格で圧縮伝送される音声通信の手段だ。直訳すると、「IPの上に音声を乗せる」という事である。 先のIP階層の上に、TCPやUDPを使って音声パケットを送信する方法である。
またPPPoEは、PPPover(on)EtherでEtherネット(LAN回線)上にpppを乗せるという 意味である。
初めて聞く人はなんの事だか分からないであろう。
PPPとはPoint to Point Protocolで何処で使われているかというと、 ISDNやアナログ回線で、ダイヤルアップ接続する時に使われている。
パソコンとプロバイダを繋ぐ為には、プロバイダ側にはルーター、パソコン側にはルーターかモデムが一般的だが、その間のプロトコルである。
相手を認証する機能(username/passwordなど)や、TCPIPパケットをパックンチョ(笑)して食べてしまうカプセリング機能を持つ。カプセリング機能とは、Aというパケットを伝送したい場合、そのAを「bAb」のようにbで包み込み、見た目はbであるかのようにして、相手に到達すると、Aに戻すというものである。
END-ENDでは、あたかもTCPIPで通信しているように見せる機能である。
ここで、カンのいい人は、ネットワークのパフォーマンスが気になるところだ。
どゆことかというと、PPPでカプセリングするのは、何処だろう?
ルーターを使っている人は、ルーターで行う。TAシリアル接続やUSBバス接続をしていると、PPPカプセリングはなんと「PC」で行うのだ。
ここまでがPPPの説明だ。じゃoEってなんだ?
なんと、PPPではプロバイダとユーザの通信機器までしか使わなかったPPPを ユーザのPCまでPPPを流し込むという、アコギな方式だ。
その為、TCP/IPのプロトコルがインストールされたLAN環境でも、 PPPoEのデータは一切送受信できない。
その為に、パソコンにはPPPoEを制御するプロトコルをインストールしないと使うことができないのだ。
だから、フレッツADSLやe-AccsessなどのDSLサービスを利用すると、 PPPoEのソフトをパソコンにインストールせにゃならんのである。
なんで、標準化しているTCPIPにそんなへんな事をするかというと、地域網とプロバイダの認証方法に色々と問題があるために、仕方なくやっているのである。
ただ、これは回避できる方法がある。
ブロードバンドルーターかPPPoE対応のADSLモデムルーターにすれば、 ルーターが全てPPPoEを吸収して、そこで普通のTCPIPに戻してくれる。
それがあれば、プロバイダから提供される不安定そうな(しらんが)ソフトをパソコンにインストールしなくても良い。

<ネットワークセキュリティー入門2に戻る  ネットワークセキュリティー入門4に進む>

ネットワークセキュリティー入門に戻る

Minkeyのお部屋に戻る