第9回 IPルーティング:基礎から学ぶWindowsネットワーク(3/3 ページ)
TCP/IPネットワークの原理は、IPパケットがルータで次々に中継されて相手に届くことにある。そのしくみを理解しよう。
ルータによるIPパケットのフォワード
ルータの処理を簡単にいうと、「IPフォワード(IP forward)」の繰り返しによるIPパケットのネットワーク・インターフェイス間での転送である。IPフォワードとは、あるネットワーク・インターフェイスから受信したIPパケットを、別のネットワーク・インターフェイスへ転送・送出する動作をいう。このときに、どのネットワークへ送出するかを決めるためにルーティング・テーブルが使われる。
ルータでは、受信したIPパケットの「あて先」のIPアドレスを取り出し、それがルーティング・テーブル中のどのエントリと一致するかを判断する(「送信元IPアドレス」ではなく、一般的には「あて先IPアドレス」だけに基づいて判断する)。
次の図を見てもらいたい。例えば左側のネットワーク・インターフェイスから入ってきた「(1)10.1.1.2あてのパケット」は「10.1.1.0/24」のネットワークに含まれるので、上側のインターフェイスへと中継され、送信される。同様に「(2)192.168.1.20あてのパケット」は下側のインターフェイスへと中継、送出される。どのエントリとも一致しない場合は、デフォルト・ゲートウェイへ向けてパケットが送信される。
IPパケットのフォワード
ルータは、受信したパケットの「あて先」アドレスを見て、該当するネットワーク・インターフェイスに転送、送出する。これをIPフォワードという。ルーティング・テーブル中に一致するエントリが見付からない場合は、デフォルト・ゲートウェイへ向けて再送信する。
■あて先ネットワークの判定
ルーティング処理では、あて先IPアドレスがルーティング・テーブルのどのエントリと一致するかを判断しなければならない。このためには、大小関係を使った比較処理ではなく、「第7回 IPアドレスとネットマスク――2.IPアドレスとネットマスク」で述べた、AND演算処理が使われる。
この処理では、まずルーティング・テーブルのエントリを1つ取り出し、その中の「ネットマスク」と対象とするIPパケットの「あて先IPアドレス」に対してAND演算を行う。この結果取り出された値を、エントリ中の「ネットワーク・アドレス」を比較し、同じならばそのエントリと一致したと見なす。
例えば図中の(1)の例を見てみよう。IPパケットのあて先IPアドレスは「10.1.1.2」であり、ルーティング・テーブルから取り出したエントリが「10.1.1.0/255.255.255.0」であるとする。IPアドレスとネットマスクをAND演算して、ネットワーク・アドレスと同じかどうかを確認する。
値 | |
---|---|
1.あて先 | 00001010.00000001.00000001.00000010 |
2.マスク | 11111111.11111111.11111111.00000000 |
3.1と2をAND演算 | 00001010.00000001.00000001.00000000 |
4.ネットワーク・アドレス | 00001010.00000001.00000001.00000000 |
あて先「10.1.1.2」とエントリ「10.1.1.0/255.255.255.0」の比較 |
この結果、3と4の値が一致するので、このあて先IPアドレスは、ルーティング・テーブルのエントリ「10.1.1.0/255.255.255.0」と一致することが分かる。同様にエントリ「172.16.1.0」と比較してみると次のようになる。
値 | |
---|---|
1.あて先 | 00001010.00000001.00000001.00000010 |
2.マスク | 11111111.11111111.11111111.00000000 |
3.1と2をAND演算 | 00001010.00000001.00000001.00000000 |
4.ネットワーク・アドレス | 10101100.00010000.00000001.00000000 |
あて先「10.1.1.2」とエントリ「172.16.1.0/255.255.255.0」の比較 |
この場合は、3と4の値は一致しないので、このエントリは該当しないということが分かる。
このように簡単なAND演算と比較演算だけで一致を判定することができるので、速度が要求される高性能ルータでは、これをハードウェア回路化して、高速にルート情報の検索を行えるようにしているものも多い。
ルータによって相互接続されたネットワーク
ルータの動作原理は、以上で述べたように、非常に簡単なものである。2つのネットワーク・インターフェイス間でパケットをIPフォワードしているにすぎない。そのため、お互いに通信をしたいコンピュータがあるルータを介して相互にネットワーク接続されていれば、ルータがパケットを1回フォワードするだけで、お互いに通信することができる(ここでいう通信とは、IPパケットを相手に正しく届けることができる、という意味。IPパケットが戻ってくるためには、逆方向のルートもきちんと設定されていなければならない)。
それでは、複数のネットワークがルータで相互に接続されたもっと大規模なネットワーク(インターネットなど)の場合はどうであろうか。実はこの場合も原理は簡単である。経路の途中にあるルータが、ちょうどバケツ・リレーのように、必要な回数だけIPフォワードを繰り返せば、IPパケットは最終的なあて先まで届けられることになる。インターネットは世界中に網の目のように張り巡らされているが、その基本原理はこのようなIPパケットのバケツ・リレーによる転送である。IPパケットを受け取ったルータはその「あて先IPアドレス」に基づいて、どのネットワークへフォワードするかを決め、パケットを送信する。そのネットワークの先にはやはりまた別のルータがいて、同じようにパケットを受信し、あて先を判断して送信という動作を繰り返している。こうやって世界中へパケットが届いているのである。
ルータによって相互接続されたネットワーク
複数のLANセグメントがあるネットワークは、相互にルータを介して接続することによって、お互いに通信することができる。ほかのセグメントあてのパケットはルータがそれを隣接するセグメントへ転送する。場合によっては複数のルータ間で次々と中継され、目的のネットワークまで届けられる。この場合、下側のルータは、インターネットへ送信するためには172.16.2.1のルータへ送信しなければならないということを知っている(ルーティング・エントリが用意されている)。IPアドレスやネットマスクはもちろんのこと、デフォルト・ゲートウェイ・アドレスもLANごとに異なる値になるので、正しく設定されていないとほかのセグメントと通信ができなくなる。
この図にあるPC1から送信する場合((1))、同一LAN(172.16.2.0/24)あての通信の場合はそのまま自分のネットワーク・インターフェイスからLAN上へパケットを送信すればよい。だが、インターネットあての通信を行いたい場合は、インターネットとの接続点にあるデフォルト・ゲートウェイ(172.16.2.1)へパケットを渡す。そうすれば、その後のパケットのルーティングはすべてルータが処理してくれる。
図の下側にあるPC2がインターネットと通信したい場合は((3))、下側のルータ(172.16.3.1)にパケットを送信すればよい(下側のルータは、インターネットへ到達するためには172.16.2.1のルータへフォワードすればよいことを知っているものとする)。そうすれば、このルータはさらに172.16.2.1のルータへとパケットを転送し、インターネットへの送信される。このように、デフォルト・ゲートウェイは各ネットワーク・ごとに異なるルータになる。各ノードに付けるIPアドレスやネットマスクがその属しているネットワークごとに異なるように、デフォルト・ゲートウェイ・アドレスもやはりネットワークに依存して変わることになるので、間違えないようにしなければならない。もしPC2のデフォルト・ゲートウェイ・アドレスとして172.16.2.1を与えてしまうと、PC2からは直接172.16.2.1に到達することができないので、同一LANあて(172.16.3.0/24あて)以外の通信は一切できなくなってしまうだろう。
Copyright© Digital Advantage Corp. All Rights Reserved.