連載
» 2003年02月21日 00時00分 公開

基礎から学ぶWindowsネットワーク:第9回 IPルーティング (2/3)

[デジタルアドバンテージ,著]

 「ルータ(router)」とは、OSI参照モデルでいうと、ネットワーク層レベルでIPパケットを中継するネットワーク装置のことである。これに対してイーサネットハブなどは、データリンク層レベルでイーサネットのパケット(イーサネット用語では「フレーム」という)を中継する装置である。もう少し分かりやすくいい換えると、IPアドレスを元にしてIPパケットのあて先を決め、中継するのがルータである。イーサネットや無線LAN、ダイヤルアップ回線(PPP回線)、光ファイバDSL回線など、物理的なネットワーク媒体やネットワーク・インターフェイスにはさまざまなものが存在するが、それらを抽象化し、各機器間でシームレスに通信を行えるようにしたのがTCP/IPプロトコルである。TCP/IPでは、各ネットワーク・インターフェイスにIPアドレスという、一意で普遍的な識別番号を割り当てている。

 TCP/IPでは、このIPアドレスを基にしてお互いに通信をしているが、同じネットワーク上にいないノード同士では直接通信することができない(ネットワークが分かれていたり、物理媒体などが異なったりするため)。そこで必要になるのがルータである。ルータは、IPアドレスに基づいてIPパケットのあて先を判断し、最適な経路を選択して、IPパケットを送信する。この動作を「ルーティング(routing)」という。

ルータとOSI参照モデル
ルータとは、IPパケットのルーティングを担当するネットワーク機器のことである。接続された2つ(以上)のネットワーク間でIPパケットの転送(ルーティング)を行う。IPアドレスにのみ基づいてパケットのあて先を判断する。下位のネットワーク媒体には依存しないので、イーサネット・セグメント同士だけでなく、無線LANや、ダイヤルアップ回線(PPP回線)、光ファイバ、DSL回線など、さまざまなネットワークを統一的に扱うことができる。

ネットワーク・インターフェイスとIPアドレス

 PCにネットワーク・インターフェイス・カード(NIC)を取り付けて、そこにIPアドレスを割り当てるように、ルータにもネットワーク・インターフェイスがあり、そこにIPアドレスが割り当てられている。このとき、IPアドレスは、各ルータやPCごとに1つずつ付けられるのではなく、各ネットワーク・インターフェイスごとに1つずつ付与されることに注意していただきたい。場合によっては1つのインターフェイスに2つ以上のIPアドレスを付けることもあるが、特別な事情がない限り、同じIPアドレスを複数のインターフェイスに付けることはできない。

 一般のクライアント用途のPCと比べると、ルータには(通常は)2つ以上のネットワーク・インターフェイスが装備され、同時に複数のネットワークへ接続されているという違いがある。ネットワーク間でのパケットのルーティングを担当するため、同時に2つ以上のネットワークに接続されていなければならないからだ(場合によってはクライアントにも複数のネットワーク・インターフェイスを付けることがあるが、ここでは特に触れない)。

ルータとネットワーク・インターフェイス
ルータには複数のネットワーク・インターフェイスがあり、それぞれが異なるネットワークに接続されている。同じネットワークに属するルータやコンピュータはすべて同じネットワーク・アドレス(とネットマスク)を持っている。TCP/IPをサポートしたシステムは内部にルーティング・テーブルを持ち、それに基づいてパケットの送信先を決めている。ただしこのルーティング・テーブルの表は簡略化してあり、実際にはさらに多くのエントリ(ほかのルータが保持しているエントリなど)が含まれる。

 この図の左側にあるルータ([R]という文字で示している)には4つのネットワーク・インターフェイスがあり、同時に4つのネットワークに接続されている。それぞれのネットワークには異なるネットワーク・アドレスが割り当てられており、それに応じてルータの各インターフェイスにも異なるIPアドレスが付けられている。そして、同じLANケーブル上に存在するネットワーク・インターフェイスは、すべて同じネットワーク・アドレスとネットマスクを共有している。例えば、図のルータの3番のインターフェイスにつながっているLAN(右側のPCがつながっているLAN)は、172.16.2.0/255.255.255.0というネットワーク・アドレスが割り当てられ、そこに接続されているルータもPCも、すべて172.16.2.*というIPアドレスを持っている。

ルーティング・テーブル

 上図のルータには全部で4つのネットワークがつながり、それぞれが異なるネットワーク・アドレスを持っている。ルータとは、このネットワーク・アドレスの違いを基にしてパケットの中継を行う機器であるが、このときに使われるのが「ルーティング・テーブル」という呼ばれるネットワーク・アドレス(とネットマスク)とネットワーク・インターフェイスの対応表である。

 実際にはルータだけでなく、TCP/IPをサポートしたシステムは必ずこのルーティング・テーブルを持っている。例えばネットワーク・インターフェイスを1つしか持っていないWindows XPコンピュータでも、次のようなルーティング・テーブルを持っている。

C:\>route print ……ルーティング・テーブルを表示させるコマンド
===========================================================================
Interface List ……インターフェイスの一覧
0x1 ........................... MS TCP Loopback interface ……ループバック・インターフェイス
0x2 ...00 10 dc 5b f3 10 ...... Intel(R) PRO/100 S Desktop Adapter ……実際のNIC
===========================================================================
===========================================================================
Active Routes: ……ルーティング・テーブルの内容
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       172.16.2.1    172.16.2.104       20 …デフォルト
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1 …ループバック
       172.16.2.0    255.255.255.0     172.16.2.104    172.16.2.104       20 …?
     172.16.2.104  255.255.255.255        127.0.0.1       127.0.0.1       20
     172.16.2.255  255.255.255.255     172.16.2.104    172.16.2.104       20
        224.0.0.0        240.0.0.0     172.16.2.104    172.16.2.104       20 …マルチキャスト
  255.255.255.255  255.255.255.255     172.16.2.104    172.16.2.104       1
Default Gateway:       172.16.2.1 ……デフォルト・ゲートウェイ
===========================================================================
Persistent Routes:
  None

 先の図中のルーティング・テーブルと比べると情報の量が多いが、これは内部ループバック・インターフェイス(127.0.0.1/255.0.0.0)やマルチキャスト・アドレス(224.0.0.0/240.0.0.0)のエントリなども含まれているからである。

 ルーティング・テーブルには、どのネットワークあてのパケットを、どのインターフェイスを使って送信すればよいかが記述されている。具体的には、「Network Destination」と「Nemask」が送信先のネットワーク・アドレスを表し、「Interface」が送信に使用するネットワーク・インターフェイスを表している。例えば上から3番目のエントリ((1))は、「172.16.2.0/255.255.255.0」あてのIPパケットなら、「172.16.2.104のインターフェイス(これは自分自身に割り当てられたIPアドレスのこと)」を通して送信せよ、ということを意味している。

 ルータの場合も同様に、ルーティング・テーブルを持っているが、ネットワーク・インターフェイスが多い分、ルーティング・テーブルのエントリ数も多い。またルータでは、ほかのルータが保持しているルート情報を持つこともあるので、さらに多くのエントリを持っていることがある。なぜなら、ルータ同士が相互に接続された場合には、それぞれのルータが接続されているネットワークのアドレスもお互いに知っておかないと正しいルーティングができないからだ。例えば多数のルータが1つのLAN上で相互接続されているとする。あるルータがIPパケットをあて先Aに向けて送りたい場合、どのルータに向けてパケットを送信するのが最適かを判断するためには、それぞれのルータがどのネットワーク・アドレスを持っているかを知っていなければならない。間違ったルータにパケットを送っても破棄されたり、遠い経路を通ることになってしまったりする*1

*1 TCP/IPネットワークでは、ネットワークの接続形態は「ツリー」ではなく、くもの巣のように相互に接続されている。そのため、あるノードから別のノードへの経路は一本だけでなく、複数存在することになる。これにより障害が発生しても別の経路へ迂回したり、負荷を分散したりすることができる。また通信量の多いネットワーク同士を直接接続することにより、スムーズに通信させたり、ほかのネットワークに与える影響を少なくしたりすることができる。インターネットの基幹部分などで使われるルータでは、このようなルート情報を数千とか数万以上も保持しており、高速にルートを判断して最適な送信先を決定して、送信するようになっている。


■ローカル・ループバック・インターフェイス
 上の出力例には、「MS TCP Loopback interface」と「Intel(R) PRO/100 S Desktop Adapter 」という2つのネットワーク・インターフェイスが含まれている。このうち、後者は実際にコンピュータに装着されている物理的なネットワーク・インターフェイス・カードである。コンピュータにIPアドレスを割り当てるというと、実際にはこのインターフェイス・カードにIPアドレスを割り当てるということを指す。外部からは、このIPアドレスが見えることになる。

 もう1つの「MS TCP Loopback interface」は、TCP/IPのプロトコル・スタック(TCP/IPを実装しているプログラムのこと)の中だけにある、仮想的なインターフェイスのことである。自分自身を指しているので、「ループバック」という。ループバック・インターフェイスには、前回説明したように「127.0.0.1」という特別なローカル・ループバック・アドレスが割り当てられる。すべてのTCP/IPプロトコル・スタックは、このループバック・インターフェイスを装備しており、自分自身の上で動作しているサービスへ接続する場合などに、このループバック・アドレスを使用することができる(もしループバック・アドレスがないと、自分自身のサービスに接続する場合でも、いちいちIPアドレスを調べてから接続しなければならないだろう)。

デフォルト・ゲートウェイ

 ルーティング・テーブルには、あて先ネットワーク・アドレスと使用するインターフェイスが記述されているが、その中に1つだけ「デフォルト・ルート」という特別なエントリが含まれている。デフォルト・ルートは、通常は「あて先ネットワーク・アドレス=0.0.0.0、ネットマスク=0.0.0.0」のエントリとして表現されている。

 これは、ほかのどのエントリも一致しなかった場合に利用される、特別なエントリである。IPパケットを送信する場合、まずルーティング・テーブルを検索して一致するネットワーク・アドレスを見付けるが、そのどれとも一致しない場合、つまり明示的なルートが指定されていない場合は、このデフォルトのルートが使用される。デフォルトのルートに指定されたあて先のIPアドレスを特別に「デフォルト・ゲートウェイ(もしくはデフォルト・ルータ)」と呼ぶ。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。