+ 作るログイン
図を読み込んでいます…
1 / 14
ネットワークのしくみ ― 場所を知らない相手に、なぜ届くのか / 全8章

ネットワークのしくみ 6:ルーターと道しるべの表

発行
アニメモ公式
版
第1版
改訂
コマ
全14

ルーターが「次はどこへ渡すか」を決めている道しるべの表(ルーティングテーブル)を開きます。ルーターとは何か、表の1行の意味、宛先との照らし方、いちばん細かい行を使う最長一致、デフォルトルート、捨てるとき、TTL、表の行の3つの書かれ方、返事の道まで。

ルーター1は、どうやって「次はルーター2」と決めたのか

5本目で、小包がルーター1に着いたとき、ルーター1は MAC の札を捨て、IP の札の宛先 203.0.113.10 を見て、「次はルーター2」と判断しました。

1本目で見た「バケツリレー」の、まさに1歩分です。各ルーターは全体の道を知らず、「この宛先なら次はどこへ渡すか」だけを知っている、と説明しました。

この作品では、その「次はどこへ」を決めている道しるべの表の中身を開きます。表に何が書いてあり、ルーターはそれをどう使うのか。このシリーズの疑問「経路はどうやって決めているのか」の、前半の答えです。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 1 / 14
  • ルーター1は、どうやって「次はルーター2」と決めたのか
  • PC-A
  • 192.168.1.10 MAC aa:aa
  • → サーバー
  • スイッチ
  • ルーター1
  • 10.0.0.0/30
  • ルーター2
  • サーバー
  • 192.168.1.1 MAC r1:r1
  • 10.0.0.2 MAC r2:r2
  • 203.0.113.10 MAC ss:ss
  • ネットワークB 203.0.113.0/24
  • PC-B
  • 192.168.1.20 MAC bb:bb
  • 宛先 203.0.113.10。 さて、どの口から、誰に渡す?
  • ネットワークA 192.168.1.0/24
  • 5本目で見た判断の中身。ルーターの中の「道しるべの表」を開く。

ルーター:複数のネットワークの境目に立つ機械

まず、ルーターとは何かを整理します。

ルーターは、複数のネットワークの境目に立つ機械です。口(インターフェース)を2つ以上持ち、それぞれの口が別のネットワークにつながっています。

図のルーター1は、左の口がネットワーク A(192.168.1.0/24)に、右の口がルーター2との間の中継のネットワーク(10.0.0.0/30)につながっています。そして、口ごとに別の IP アドレスと MAC アドレスを持っています。左の口は 192.168.1.1、右の口は 10.0.0.1 です。

ルーターの仕事は、ある口から受け取った小包を、適切な別の口から送り出すことです。どの口から、誰に渡すか。それを決めるのが、次のページの表です。

家庭の「Wi-Fi ルーター」も、中身はこれと同じです。家の中のネットワークにつながる口と、プロバイダにつながる口を持っていて、その境目に立っています。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 2 / 14
  • ルーター:複数のネットワークの境目に立つ機械
  • ネットワーク A 192.168.1.0/24
  • 中継のネットワーク 10.0.0.0/30
  • ルーター1
  • 左の口 192.168.1.1
  • 右の口 10.0.0.1
  • 受け取った小包を、別の口から送り出す。それがルーターの仕事
  • 口ごとに別のネットワークにつながり、口ごとに IP アドレスを持つ。

ルーター1の道しるべの表(ルーティングテーブル)

ルーター1の中には、図の下のような表があります。これがルーティングテーブルです。

宛先のまとまり次の渡し先(出る口)
192.168.1.0/24直接(左の口)
10.0.0.0/30直接(右の口)
203.0.113.0/2410.0.0.2(ルーター2)へ
0.0.0.0/010.0.0.2(ルーター2)へ = それ以外全部

1行の意味は、「宛先がこのまとまりに入るなら、次はここへ渡せ」です。

「直接」と書いてある行は、ルーター1自身の口がつながっているネットワークです。宛先がそこにいれば、ほかのルーターに頼まず、相手本人に直接渡します(ARP で相手の MAC を聞いて)。

それ以外の行には、「次に渡すルーターの IP アドレス」が書いてあります。これをネクストホップと呼びます。ルーター1は、ルーター2より先の道を知りません。知っているのは「ルーター2に渡せば近づく」ということだけです。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 3 / 14
  • ルーター1の道しるべの表(ルーティングテーブル)
  • PC-A
  • 192.168.1.10 MAC aa:aa
  • スイッチ
  • ルーター1
  • 10.0.0.0/30
  • ルーター2
  • サーバー
  • 192.168.1.1 MAC r1:r1
  • 10.0.0.2 MAC r2:r2
  • 203.0.113.10 MAC ss:ss
  • ネットワークB 203.0.113.0/24
  • PC-B
  • 192.168.1.20 MAC bb:bb
  • 192.168.1.0/24
  • 直接(左の口)
  • 10.0.0.0/30
  • 直接(右の口)
  • 203.0.113.0/24
  • 10.0.0.2(ルーター2)へ
  • ネットワークA 192.168.1.0/24
  • 0.0.0.0/0
  • 10.0.0.2(ルーター2)へ = それ以外全部
  • 1行=「このまとまりなら、次はここへ」。

宛先 203.0.113.10 を表と照らす

小包の宛先 203.0.113.10 を、表の各行と照らします。

照らし方は、4本目で見た「同じネットワークか」の判定と同じです。行の /24 の区切りで宛先を切ると 203.0.113 になり、行の 203.0.113.0/24 のネットワーク部と一致します。つまり、宛先はこのまとまりに入っています。

この行の次の渡し先は 10.0.0.2(ルーター2)です。ルーター1は、右の口から、ルーター2の MAC アドレス宛てに小包を送り出します(5本目)。

これが、1本目で「各ルーターは『次にどこへ渡すか』だけを知っている」と書いたことの、具体的な中身です。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 4 / 14
  • 宛先 203.0.113.10 を表と照らす
  • PC-A
  • 192.168.1.10 MAC aa:aa
  • → サーバー
  • スイッチ
  • ルーター1
  • 10.0.0.0/30
  • ルーター2
  • サーバー
  • 192.168.1.1 MAC r1:r1
  • 10.0.0.2 MAC r2:r2
  • 203.0.113.10 MAC ss:ss
  • ネットワークB 203.0.113.0/24
  • PC-B
  • 192.168.1.20 MAC bb:bb
  • 192.168.1.0/24
  • 直接(左の口)
  • 10.0.0.0/30
  • 直接(右の口)
  • 203.0.113.0/24
  • 10.0.0.2(ルーター2)へ
  • ネットワークA 192.168.1.0/24
  • 0.0.0.0/0
  • 10.0.0.2(ルーター2)へ = それ以外全部
  • 203.0.113.0/24 に入る。だから次はルーター2。

当てはまる行が複数あれば、いちばん細かい行を使う

表の行によっては、1つの宛先が複数の行に当てはまることがあります。図の表では、203.0.113.10 は次の3行すべてに当てはまります。

行当てはまるか
203.0.113.0/24当てはまる(/24 で一致)
203.0.112.0/20当てはまる(4本目で見たとおり、/24 はこの中に入っている)
0.0.0.0/0当てはまる(どんな宛先にも当てはまる)

このとき、ルーターはいちばん細かい行、つまり / の後ろの数字がいちばん大きい行を使います。ここでは /24 の行です。これを最長一致(ロンゲストマッチ)と呼びます。ネットワーク部が長く一致する行ほど優先する、という意味です。

最長一致は、ルーターの表の照らし方の、いちばん大事な決まりです。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 5 / 14
  • 当てはまる行が複数あれば、いちばん細かい行を使う
  • PC-A
  • 192.168.1.10 MAC aa:aa
  • → サーバー
  • スイッチ
  • ルーター1
  • 10.0.0.0/30
  • ルーター2
  • サーバー
  • 192.168.1.1 MAC r1:r1
  • 10.0.0.2 MAC r2:r2
  • 203.0.113.10 MAC ss:ss
  • ネットワークB 203.0.113.0/24
  • PC-B
  • 192.168.1.20 MAC bb:bb
  • 203.0.113.0/24
  • ルーター2 へ(細かい行)
  • 203.0.112.0/20
  • ルーター3 へ(大まかな行)
  • ネットワークA 192.168.1.0/24
  • 0.0.0.0/0
  • 上流へ(それ以外全部)
  • / の数字がいちばん大きい行が勝つ(最長一致)。

細かい情報ほど、正確だから

なぜ細かい行を優先するのでしょうか。細かい情報ほど、その宛先について正確に知っているからです。

道案内でたとえると、「東京方面は北へ」という大まかな知識と、「ただし渋谷だけは西の近道がある」という細かい知識があれば、渋谷へ行くときは細かい知識を使いますよね。

図では、青い大きなまとまり(203.0.112.0/20)の中に、紫の小さなまとまり(203.0.113.0/24)があります。赤い点(203.0.113.10)はどちらにも入りますが、内側の細かい行を使います。

この仕組みがあるおかげで、「大まかにはこっち、でもこの一部だけは別の道」という表を作れます。4本目で見た集約(大きなまとまり1行で済ませる)と組み合わせると、ほとんどの宛先は大まかな行で済ませ、例外だけを細かい行で書く、という効率の良い表になります。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 6 / 14
  • 細かい情報ほど、正確だから
  • 203.0.112.0/20 → ルーター3
  • 点はどちらの まとまりにも入る。 内側(細かいほう) の行を使う
  • 203.0.113.0/24 → ルーター2
  • 203.0.113.10
  • 「東京は北」より「渋谷だけは西の近道」を優先する。

どの行にも当てはまらなければ、デフォルトルートへ

表の最後の行 0.0.0.0/0 は、4本目で PC の表にも出てきたデフォルトルートです。ネットワーク部が0ビットなので、どんな宛先にも必ず当てはまります。

ただし、最長一致の決まりにより、/0 はいちばん「粗い」行です。ほかの行に当てはまればそちらが使われ、ほかのどの行にも当てはまらないときだけ、この行が使われます。

つまり、デフォルトルートは「知らない宛先は、全部ここへ」という意味になります。ルーター1にとっては、「自分の知らない世界のことは、全部ルーター2に任せる」ということです。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 7 / 14
  • どの行にも当てはまらなければ、デフォルトルートへ
  • PC-A
  • 192.168.1.10 MAC aa:aa
  • → 不明
  • スイッチ
  • ルーター1
  • 10.0.0.0/30
  • ルーター2
  • サーバー
  • 192.168.1.1 MAC r1:r1
  • 10.0.0.2 MAC r2:r2
  • 203.0.113.10 MAC ss:ss
  • ネットワークB 203.0.113.0/24
  • PC-B
  • 192.168.1.20 MAC bb:bb
  • 192.168.1.0/24
  • 直接(左の口)
  • 10.0.0.0/30
  • 直接(右の口)
  • 203.0.113.0/24
  • 10.0.0.2(ルーター2)へ
  • ネットワークA 192.168.1.0/24
  • 0.0.0.0/0
  • 10.0.0.2(ルーター2)へ = それ以外全部
  • 0.0.0.0/0 は必ず当てはまる。知らない宛先は全部ここへ。

家や会社のルーターの表は、ほぼデフォルトルートでできている

実際のインターネットでは、この「知らない宛先は上流へ」が何段も重なっています。

ルーター表の中身(目安)
家のルーター家の中のネットワーク + 0.0.0.0/0(プロバイダへ)
プロバイダのルーター自社のお客さんたちのネットワーク + 0.0.0.0/0(上位のプロバイダへ)
上位のプロバイダもっと多くのネットワーク + 0.0.0.0/0
インターネットの中心の大きなルーター世界中のまとまり、約100万行。0.0.0.0/0 は無い

家のルーターは、世界のことを何も知りません。「外は全部プロバイダへ」の1行です。プロバイダは自分のお客さんのことは細かく知っていて、それ以外は上へ任せます。

いちばん上の大きなルーターには、もう「分からなければ上へ」がありません。上がないからです。だから、そこでは世界中のまとまりを全部知っている必要があります。これらのルーターが、7本目で見る BGP で、世界中の経路を交換し合っています。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 8 / 14
  • 家や会社のルーターの表は、ほぼデフォルトルートでできている
  • 家のルーター
  • プロバイダ
  • 上位のプロバイダ
  • 中心
  • 数行(ほぼ /0 だけ)
  • 自社のお客さん+ /0
  • もっと多い+ /0
  • 約100万行・/0 なし
  • 上へ行くほど表が大きくなる。いちばん上には「分からなければ上へ」が無い
  • 外の世界は全部「プロバイダへ」の1行。

デフォルトも無く、どの行にも当てはまらなければ捨てる

では、デフォルトルートが無いルーターで、どの行にも当てはまらない宛先が来たらどうなるでしょうか。

ルーターは、その小包を捨てます。渡す先が分からないからです。

そのとき、多くのルーターは、小包の送信元に「その宛先には届けられません」という知らせを返します。この知らせを送る仕組みを ICMP(Internet Control Message Protocol)と呼びます。ネットワークの「業務連絡」のような仕組みで、次のページの TTL や、8本目の ping・traceroute でも使われます。

IP は、2本目で見たとおり「届くかどうかを保証しない」仕組みです。途中で捨てられることは、珍しいことではありません。確実に届けたいときは、上の TCP が再送で補います。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 9 / 14
  • デフォルトも無く、どの行にも当てはまらなければ捨てる
  • PC-A
  • 192.168.1.10 MAC aa:aa
  • ???
  • スイッチ
  • ルーター1
  • 10.0.0.0/30
  • ルーター2
  • サーバー
  • 192.168.1.1 MAC r1:r1
  • 10.0.0.2 MAC r2:r2
  • 203.0.113.10 MAC ss:ss
  • ネットワークB 203.0.113.0/24
  • PC-B
  • 192.168.1.20 MAC bb:bb
  • 宛先
  • 198.51.100.99(どの行にも無い)
  • 処理
  • 捨てる
  • ネットワークA 192.168.1.0/24
  • 知らせ
  • 送信元へ「届けられません」(ICMP)
  • 送信元へ「届けられません」(ICMP)を返すことがある。

ルーターは TTL を1減らし、0 になったら捨てる

ルーターが小包を送り出すとき、もう1つ必ずやることがあります。IP の札の TTL を1減らすことです(2本目・5本目)。

TTL が 0 になった小包は、そのルーターが捨てます。そして送信元に「寿命が尽きました」という ICMP の知らせを返します。

なぜこんな仕組みがあるのでしょうか。表の間違いで、小包が輪の中を回り続けるのを防ぐためです。

図のように、ルーター X は「あっちは Y」、Y は「あっちは Z」、Z は「あっちは X」と、3台の表がたまたま輪になってしまったとします。各ルーターは自分の表に従って正しく動いているつもりですが、小包は永遠に回り続けます。TTL が無ければ、網は迷子の小包で溢れてしまいます。

TTL があれば、64回回ったところで必ず捨てられます。誰も全体を知らないやり方には、こういう「全体としての間違い」が起こりうるので、安全装置が要るのです。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 10 / 14
  • ルーターは TTL を1減らし、0 になったら捨てる
  • ルーターX
  • X「あっちは Y」 Y「あっちは Z」 Z「あっちは X」 → TTL 64 → 63 → … → 0 で捨てる
  • ルーターY
  • ルーターZ
  • 表の間違いで小包が輪を回っても、TTL が尽きて必ず止まる。

表の行は、3つの方法で書かれる

では、ルーティングテーブルの行は、どうやって書かれているのでしょうか。3つの方法があります。

方法中身例
直結ルーターの口につないだネットワーク。口に IP アドレスを設定した瞬間に自動で載るルーター1の 192.168.1.0/24 と 10.0.0.0/30
静的(手書き)人が1行ずつ設定する家のルーターのデフォルトルート
動的(話し合い)ルーター同士が「このネットワークへはうち経由で行ける」と教え合って、自動で書くOSPF、BGP

小さなネットワークなら、手書きでも十分です。でも、手書きの行には弱点があります。線が切れても、自分では書き換わらないことです。ルーター2が壊れても、ルーター1の表には「ルーター2へ」と書かれたままで、小包を送り続けてしまいます。

大きな網では、線はしょっちゅう切れたりつながったりします。それに追いつくには、ルーター同士が話し合って、自動で書き換えるしかありません。それが次の作品のテーマです。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 11 / 14
  • 表の行は、3つの方法で書かれる
  • 直結
  • 静的(手書き)
  • 動的(話し合い)
  • 口のネットワークが自動で載る
  • 人が1行ずつ書く
  • ルーター同士が教え合う
  • 手書きの行は、線が切れても自分では直らない。 大きな網では、話し合いで書いた行でないと追いつかない
  • 直結は自動。手書きの行。話し合いで書く行(7本目)。

ルーターは、これを1秒に何百万回もやる

ルーターが1つの小包に対してやることは、いつも同じ5つだけです。

順番やること
1小包を受け取る(MAC の札を確かめて捨てる)
2IP の札の宛先を見る
3表と照らし、最長一致で次の渡し先を決める
4TTL を1減らす
5次の口から、新しい MAC の札を付けて送り出す

中身(Web ページかメールか)は見ません。送信元がどこかも、基本的には見ません。宛先だけを見て、機械的に次へ渡します。

単純だからこそ、速くできます。インターネットの中心にある大きなルーターは、この照合を専用の回路でやり、1秒間に何億もの小包をさばいています。1本目で見た「各自が次だけ知っている」やり方は、この速さのためにも欠かせません。全体の道を毎回考えていたら、とても間に合いません。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 12 / 14
  • ルーターは、これを1秒に何百万回もやる
  • 大きなルーター
  • 1つの小包に対してやることは、いつも同じ5つだけ: 受け取る → 宛先 IP を見る → 表で最長一致 → TTL を減らす → 次の口から出す
  • 大きなルーターは照合を専用の回路でやる。

返事の小包も、同じやり方で帰ってくる

サーバーが返事を送るときも、まったく同じことが起きます。返事の小包の宛先は 192.168.1.10(PC-A)です。

サーバーは「外宛てだ」と判断してルーター2に渡し、ルーター2は自分の表で 192.168.1.0/24 の行を見て「次はルーター1(10.0.0.1)」と判断し、ルーター1は「直接(左の口)」と判断して PC-A に渡します。

ここで大事なのは、行きと帰りは、それぞれのルーターが別々に判断しているということです。行きの小包がどの道を通ったかを、帰りのルーターは知りません。だから、大きな網では、行きと帰りで別の道を通ることも普通にあります。これを非対称ルーティングと呼びます。

それでも問題なく届くのは、どちらの向きでも、各ルーターが「近づく方向」へ正しく渡しているからです。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 13 / 14
  • 返事の小包も、同じやり方で帰ってくる
  • PC-A
  • 192.168.1.10 MAC aa:aa
  • ← 返事
  • スイッチ
  • ルーター1
  • 10.0.0.0/30
  • ルーター2
  • サーバー
  • 192.168.1.1 MAC r1:r1
  • 10.0.0.2 MAC r2:r2
  • 203.0.113.10 MAC ss:ss
  • ネットワークB 203.0.113.0/24
  • PC-B
  • 192.168.1.20 MAC bb:bb
  • 宛先 IP
  • 192.168.1.10(PC-A)
  • ルーター2の表
  • 192.168.1.0/24 → 10.0.0.1(ルーター1)
  • ネットワークA 192.168.1.0/24
  • 注意
  • 行きと帰りが別の道になることもある
  • 宛先が PC-A になるだけ。各ルーターが自分で次を決める。

まとめ:ルーターと道しるべの表

この作品で見たことをまとめます。

項目内容
ルーター複数のネットワークの境目に立ち、口ごとに IP を持つ
ルーティングテーブル「このまとまりなら、次はここへ」の行の並び
照らし方宛先がどの行のまとまりに入るかを見る
最長一致当てはまる行が複数なら、いちばん細かい行を使う
デフォルトルート0.0.0.0/0。知らない宛先は全部ここへ
捨てるとき当てはまる行が無い、TTL が 0 になった
表の書かれ方直結・手書き・話し合い

冒頭の疑問「経路はどうやって決めているのか」に対して、この作品の答えは「各ルーターが、自分の表で最長一致を取り、次の1歩だけを決めている」です。

では、その表の行、とくに「話し合い」で書かれる行は、どうやって作られているのでしょうか。網のどこかで線が切れたとき、どうやって別の道に切り替わるのでしょうか。次の作品で、経路の決め方(OSPF と BGP)を見ていきます。

  • ネットワークのしくみ 6 / 8 ― ルーターと道しるべの表
  • 14 / 14
  • まとめ:ルーターと道しるべの表
  • PC-A
  • 192.168.1.10 MAC aa:aa
  • 着いた
  • スイッチ
  • ルーター1
  • 10.0.0.0/30
  • ルーター2
  • サーバー
  • 192.168.1.1 MAC r1:r1
  • 10.0.0.2 MAC r2:r2
  • 203.0.113.10 MAC ss:ss
  • ネットワークB 203.0.113.0/24
  • PC-B
  • 192.168.1.20 MAC bb:bb
  • 照合
  • 宛先 IP を表と照らす。いちばん細かい行を使う
  • 無ければ
  • デフォルトルート(0.0.0.0/0)へ
  • ネットワークA 192.168.1.0/24
  • 毎回
  • TTL を減らし、次の口から出す
  • 残る疑問は「表の行を、誰がどう書いているか」。次の作品で見る。

0 件のコメント

読み込み中…

権利侵害・不適切な内容の連絡: [email protected]