true;});連載の第1回(「ルータの役割とIPネットワークの仕組み」)で述べたように、IPネットワークはノードとノードをつなぐ。それを実際のネットワークで実現するには、さらにもう1つの仕組みが必要だ。それは、物理的なネットワークとの連携である。ネットワークは1つではないよく比喩されることだが、IPアドレスは「住所」のようなものだと思っていい。住所は1丁目から番号順に並んでいるため所在地が容易に特定できるかもしれないが、IPアドレスの場合はそうはいかない。世界中のどこでどのような番号が使われているか、番号を見ただけですぐには分からないのだ。実はこれこそが、ルーティングの仕組みを理解するための第一歩である。いうことは、IPアドレスで通信をするのに必要なことが幾つかあるのが分かるはずだ。どこに通信相手がいるのかどのようにしてそのIPアドレスを持つ相手までデータを届けるのかといった情報や仕組みが必須となる。それを知るためには、IPネットワークと物理的なネットワークとの関係を理解する必要がある。ここで登場するのが「イーサネット(Ethernet)」である。皆さんが使っているPCやブロードバンドルータを見てみると、まずケーブルを用いてPCからブロードバンドルータへとつながっており、その先はADSL網を経由して再び別のルータへとつながっている。幾つかのルータを経て、Webサーバなどへと接続されている。物理的に接続されたノード同士の通信を行うイーサネットここで重要なのは、実はネットワークとは「複数の物理的なネットワークが相互に接続されたもの」だということだ。ネットワーク同士を接続する回線がADSL網なのかネットワークケーブルなのかの違いはあるものの*1、一般にルータがそれぞれの間に入って複数の小さなネットワーク同士を接続し、より大きなIPネットワークを構成している。これがもっとも一般的なネットワーク、つまりインターネットの形なのである。ルータとは、複数のネットワークを接続しIP通信を中継する中継基地なのだ。小さなネットワーク、という書き方をしたのには理由がある。PCとルータの間(つまりノード間)の接続には、IPネットワークとは別のプロトコルも介在しているのだ。これが前述の「イーサネット」である。図1のネットワーク階層図では、ネットワーク/リンク層に位置している。ネットワーク階層図イーサネットは、10BASE-T/100BASE-TXで使われるような「ツイスト・ペア・ケーブル」や、10BASE-5などと呼ばれる同軸ケーブルなどの物理的な配線で通信を行うことを前提に考えられたプロトコルだ。階層図では最下位の物理層がこれを示している。II」「IEEE802.3」「IEEE802.2」などの各種仕様が存在している。IIが多く用いられているが、原理はほぼ同じだ。ここではイーサネットとして総称することにする。このイーサネットは、PCからルータへ、あるいはルータからルータなど、あるネットワーク内で物理的に接続されたノード間での通信を行うためのプロトコルである。した小さな通信が連なることで、遠く離れた国のサーバまで接続されているのだ。このような通信を実現するために、PCに挿入するNIC(ネットワーク・インターフェイス・カード)やルータなどの接続ポートには、それぞれ識別番号が割り当てられている。これを「MACアドレス」と呼ぶ。IPアドレスとは異なる番号だ。BLR-TX4でのMACアドレスの確認例。9xでは「winipcfg.exe」)MACアドレスは、それぞれのNICが持つ固有の番号だと思ってよい。IPアドレスと同様に全世界でユニークとなるように、各ネットワーク機器メーカーが、製品の出荷時に固有の番号をあらかじめ割り振っている。イーサネットの通信単位イーサネットでの通信では、「フレーム」と呼ばれるデータ単位が用いられる。呼び方は異なるが、IPネットワークの「パケット」と考え方は同じだ。フレームには送信データが格納されるほか、送信先MACアドレスと送信元MACアドレスを含む。この送信データとは、実は「IPパケット」のことである。IPパケットを包含したフレームは、ノードからノードへとデータを順に受け渡し、最終的には目的のノードへとIPパケットを届けるのだ。例えるなら、バケツリレー式にバケツの中の水だけを順々に受け渡していくようなものだと思えばよい。このような流れを物理ネットワーク分繰り返し、最終的に目的の送信先ノードへとデータ(IPパケット)が到達した時点で、ノードは送信先IPアドレスから自身へのデータであることを知り、パケットを受け取って上位のプロトコル(を担当するプログラム)へと転送するのである。したイーサネットでの通信が行われる物理ネットワークの最小単位を「セグメント」と呼ぶ。ここで、フレームはあくまで1つのセグメント内でしか有効でない点に注意しよう。最後まで到達するのは、あくまでIPパケットだけだ。バケツリレーの例でも、受け渡しているのは水だけなのだ。Ethernet)」という通信規格で電話局側のルータと接続しているのだが、動作としてイーサネットと同じ振る舞いをするので、ここでは省いて考えている。階層図でいえば、ネットワーク/リンク層の違いだけなので、その上位にあたる部分は完全に同じ振る舞いをするわけだ。CATV網、ISDNなどでも同様に、PPPoEとは別のイーサネットに相当する規格が使用されている経路とルーティングテーブル経路とルーティングテーブルネットワーク、特にインターネットにおいては、先のバケツリレーの際に複数の「経路」が存在する場合がある。経由するセグメントの組み合わせが複数有り得るということだ。経路が1つしかないとしても、IPアドレスが間違っているなどの理由で、本当に届くのかどうかはIPアドレスの情報だけでは分からない。した経路選択のために、通常、ルータは「ルーティング・テーブル」と呼ばれる内部情報に「どのIPアドレスへは、どのルータにフレームを転送すべきか」の情報を保持し、通信時に使用する。ルーティング・テーブルの例。-rn」コマンドや「route」コマンドでPCでのルーティング・テーブルが参照可能だ(画面をクリックすると拡大表示します)ルーティング・テーブルは、「送信先IPアドレス」と「担当ルータのIPアドレス」のマッピング表である。各ノードがそれぞれこうした情報を用意することで、ネットワーク間の経路を決定できるようになる。全社ネットワークなど大規模なネットワークを想定した場合、自分以外のすべてのIPアドレスを把握しなければならないとすると、このルーティング・テーブルは膨大な大きさになる。この解決法を知るには、まず「サブネット」について理解しなくてはならない。サブネットマスクIPアドレスには番号を割り当てる際のルールがあり、前半を「ネットワーク番号」、後半を「ホスト番号」として構成することになっている。IPアドレスにおけるネットワーク番号とホスト番号このようなルールによってグルーピングされた一群のIPアドレスを「サブネット」と呼ぶ。ネットワーク番号の範囲を指定するのが「サブネットマスク」と呼ばれるIPアドレスのような数字だ。サブネットマスクでは、ネットワーク番号部分のビットを1として指定する。その1のビットの長さを用いて「192.168.10.100/24」などとして、そのIPアドレスでは24ビットまでがネットワーク番号であることを示すこともある。この例では「255.255.255.0」と同じ意味だ。ネットワーク番号の範囲は、そのIPアドレスがどの「クラス」(コラム参照)に所属しているかで、最小範囲が決まる。管理者がサブネットマスクを設定する(設定はそれぞれのノードごとに必要)ことで、その範囲の変更も行える。サブネットの範囲が変われば認識できるホストの数も変わるので、ネットワーク構築時の大きなポイントとなる。上記のルーティング・テーブルにはノード(ホスト)のIPアドレスだけでなく、ノードのサブネットも記載できるようになっている。IPアドレス自体が記載されていなくとも、そのIPアドレスが所属するサブネットのエントリーさえあれば、その経路で送信すればよいからだ。そのために、同じサブネットに所属するIPアドレスを持つノードは、同一のセグメント内にすべて配置される必要があることに注意しよう。●ルータA内での処理「10.10.10.2」の宛先自体は登録されていないが、3行目に「10.10.10.0」のサブネットが登録されていることは分かる。そのため、「10.10.10.2」は必ずこのサブネットにいることが推測できる。そこで、Interfaceとして指定されている「10.10.2.11」のポートからGatewayとなっている「10.10.2.10」のルータAのポートへ、イーサネット・フレームを転送してやればよい●ルーティングテーブル例(ルータA)宛先IPアドレスネットマスクInterfaceGatewayMetric*1192.168.10.11255.255.255.255192.168.10.10192.168.10.10110.10.2.0255.255.255.010.10.2.1110.10.2.11110.10.10.0255.255.255.010.10.2.1110.10.2.101...............*Metricとは「距離」の意味。幾つルータを越えるか(ホップ数)で示される。それほど厳密でなくても動作は可能。ルーティング・テーブルによるルーティングの例。「10.10.1.2」のノードでは、デフォルトゲートウェイとして「10.10.1.1」を指定していれば、あとのルーティング処理はルータAが行ってくれるこのようなサブネットの利用で、ルータは同一セグメント内のすべてのIPアドレスを把握しなくとも、サブネット単位で管理すればよいのだ。これにより、ルーティング・テーブルは必要最小限度の大きさで済むことになる。IPアドレスのあれこれIPアドレスはその番号によってクラス分けがなされている。クラス分けによって異なるのは、ネットワーク番号の範囲だ。本来は、ネットワークの規模(含まれるノードの数)によって使い分けられることを想定していたが、近年のIPアドレスの枯渇問題のために、最近ではクラスCが割り振られることが多くなった。クラスAを取得しても、実際には使いきれるような大きな組織は少ないからだ。クラス範囲サブネットマスクの最小値A0.0.0.0〜127.0.0.0255.0.0.0B128.0.0.0〜191.255.0.0255.255.0.0C192.0.0.0〜223.255.255.0255.255.255.0*クラスDとEも定義されているが、特別な利用のために予約されているため、通常は使用されないまた、「192.168.1.0/24」などとホスト部(のビット)がすべて0とされている記述がある場合、これはそのサブネット自身を示す特殊なIPアドレス(サブネット・アドレス)である。ルーティング・テーブルでは、このサブネット・アドレスを用いてエントリーを表記している。そのほか、「192.168.1.255/24」などと逆にホスト部のビットがすべて1となっている場合は、「ブロードキャスト・アドレス」と呼ばれる。通常のIPアドレスはただ1つのノードしか示さないが、ブロードキャスト・アドレスはそのサブネットに所属するすべてのノードに向けたアドレスだ。どのノードが該当するか分からないため、すべてのノードに対してパケットを受け取らせたい場合などに使用される。Protocol)」というプロトコルを用いるプログラム(UNIXなどではroutedが一般的)を動かすことによって、ルータやノード間で自動的にルーティング・テーブル情報を交換して、テーブルを自動更新させることもできる。現在では、RIP2*2と呼ばれるバージョンが主流だ。結果的に、自身が管理するセグメントでの情報さえ正確に記載しておけば、ネットワーク全体のルーティングテーブルが自動的に作成されるわけだ。した仕組みを「ダイナミック・ルーティング」と呼ぶ。これに対し、ユーザーや管理者が手動でルーティング・テーブルを作成/管理する方法を「スタティック・ルーティング」と呼ぶ。ブロードバンドルータでも、いずれかの方法の選択が可能だ。通常は、ルーティングを手動で行うか、RIPで行うかなどの設定ができるようになっている。手動の場合は、ルーティング・テーブルの追加/削除を行うオプションが用意されている。ダイナミック・ルーティングの動作。ルータCから、B→Aへと順にルーティングテーブルのエントリーが転送されていく様子を示している。Metricが転送されるごとに1ずつ増え、距離がそれだけあることが分かる。この例では、CからAへの一方向しか示してないが、もちろん双方向でこうした自動転送が行えるただし、ほとんどの場合、ブロードバンドルータとつながるISP側のルータでは、独自に最適化されたルーティング・テーブルを採用している。気軽にダイナミック・ルーティングにしたり、ルーティング・テーブルを変更することは、ISP全体に悪影響を及ぼす可能性が高いので、通常はスタティック・ルーティングとしておき、それ以上変更する必要はほとんどないだろう。BLR-TX4のルーティング設定画面。上段ではダイナミックかスタティック・ルーティングかを指定できる。下段ではスタティック・ルーティングのためのルーティング・テーブルが管理可能だデフォルトゲートウェイブロードバンドルータに接続するPCでも、同様にこうしたルーティングの仕組みが動作しており、ルーティング・テーブルを元にしたルーティングが行われている。その保守は通常のルータほど複雑なものにはならない。それは「デフォルトゲートウェイ」という考え方があるためだ。デフォルトゲートウェイとは、「ルーティング・テーブルに載っていないIPアドレスへの送信時に、最終的に利用するルータのIPアドレス」のことだ。ルーティング・テーブルは保持するものの、ほとんどのPCではデフォルトゲートウェイとしてブロードバンドルータを指定しさえすれば、通信できるようになっている。外部との出口はそのブロードバンドルータでしかありえないからだ。したデフォルトゲートウェイのみの設定は、部門ネットワークやSOHO環境など、セグメントの比較的小さなネットワーク環境では標準的な設定である。*2実は、前述したルーティング・テーブルの使用方法は、RIP2を前提にしたものだ。RIP2はサブネットを使用するが、RIPではサブネットマスクを使用しないため、各クラスでのデフォルトのネットワーク番号のみ利用する。現在では、まずRIP2しか使われないと思っていいMACアドレスをどうやって知る?ルーティング・テーブルの図を見ると、ルーティング・テーブルにはIPアドレスしか記載されていないことが分かる。実際には、イーサネットの通信において、そのIPアドレスを持つノードのMACアドレスに対してフレームを転送しなくてはならない。Protocol)というプロトコルが用意されている。ARPは、セグメント全体に「このIPアドレスを持つノードのMACアドレスは何か?」という問い合わせを行い、該当するノードがMACアドレスを返答する。これにより、イーサネットは該当するノードのMACアドレスに対してフレームを転送できるようになる。このように入手したIPアドレスとMACアドレスの対照表を「ARPテーブル」と呼び、ノードやルータは一定時間キャッシュするのが普通だ。キャッシュによって、頻繁に通信するノードにいちいちARP問い合わせをする必要が減るからだ。ARPテーブルは、Windowsでは「ARP」コマンドによって確認することができる。イーサネットは物理的な最小のネットワーク単位であるセグメント内をつなぐ。ルーティングテーブルによってフレームのルーティング先が決定される。/all」の誤りでした。メールマガジンをご購読ください。Japanスマートジャパン3Dモデラボキャリア@IT自分戦略研究所エンジニアライフディルバートアプリITmediaねとらぼねこらぼついトピ!ITmediaはアイティメディア株式会社の登録商標です。