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

ネットワークのしくみ 3:MAC アドレスとスイッチ

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

同じネットワークの中で、何台もつながった機械のうち1台だけに小包を届ける仕組みを説明します。MAC アドレスとは何か、なぜ IP アドレスとは別にあるのか、ハブとスイッチの違い、スイッチが表を自分で学習する流れ(学習・フラッディング・忘却)、全員宛て(ブロードキャスト)、そしてスイッチだけでは外のネットワークへ届けられない理由まで。

まず、同じネットワークの中で隣に渡す

1本目で、データは「隣へ隣へ」と渡っていく、と説明しました。2本目で、その「隣へ渡す」を担当するのがリンク層で、宛先には MAC アドレスを書く、と説明しました。

この作品では、その「隣へ渡す」を詳しく見ます。遠くへ運ぶ話(ルーター)は後の作品に回し、まずは同じネットワークの中だけを考えます。家や会社のフロアの中、と思ってください。

同じネットワークの中には、何台もの機械がつながっています。図では、PC-A から PC-D の4台が、真ん中の1台の機械(スイッチ)につながっています。PC-A が PC-C にだけ小包を渡したいとき、どうすれば C だけに届くのでしょうか。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 1 / 14
  • まず、同じネットワークの中で隣に渡す
  • PC-A
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • → C
  • 2
  • 4
  • PC-B
  • PC-D
  • MAC bb:bb
  • PC-A から PC-C へ。 どうやって C だけに届ける?
  • MAC dd:dd
  • 何台もつながっている中の、1台だけに渡したい。

MAC アドレス:ネットの差し込み口ごとの番号

MAC アドレスは、ネットワークにつなぐための部品(LAN の差し込み口や Wi-Fi の部品)に付いている番号です。多くの場合、部品が工場で作られたときに書き込まれています。

3c:22:fb:1a:07:9e のように、16進数で12桁(48ビット)の数字で書きます。前半の6桁は製造元ごとの番号、後半の6桁はその製造元の中の通し番号になっていて、世界中で重ならないように割り振られています。この作品では、読みやすさのために aa:aa のように短く書きます。

MAC アドレスは「機械」ではなく「差し込み口」ごとに付いています。ノート PC に有線の LAN と Wi-Fi の両方があれば、MAC アドレスも2つあります。

なお、最近のスマホや PC は、プライバシーのために Wi-Fi ごとにランダムな MAC アドレスを使うことがあります。「工場で付いた番号」が常にそのまま使われるわけではありませんが、「その線の上で、この機械を区別する番号」という役割は同じです。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 2 / 14
  • MAC アドレス:ネットの差し込み口ごとの番号
  • 3c:22:fb:1a:07:9e
  • 製造元の番号(前半)
  • その製造元の中の通し番号(後半)
  • 16進数で12桁(48ビット)。この作品では aa:aa のように短く書く
  • PC に差し込み口が2つあれば(有線と Wi-Fi)、MAC アドレスも2つ
  • LAN の差し込み口や Wi-Fi の部品に、作られたときから付いている番号。

なぜ IP アドレスとは別に MAC アドレスがあるのか

「IP アドレスがあるのに、なぜ MAC アドレスも要るのか」は、多くの人が引っかかるところです。

2本目で見たとおり、2つは別の層の番号で、役割が違います。

MAC アドレスIP アドレス
層リンク層(L2)インターネット層(L3)
付く先差し込み口(機械側)ネットワークに入ったときに割り当てられる
使う範囲同じ線・同じネットワークの中だけ世界中(最終の宛先)
並び方製造元ごと。場所とは無関係ネットワークごとのまとまり(1本目)

大事なのは次の2点です。

1つは、MAC アドレスは場所と無関係に振られていることです。同じ製造元の PC が、東京にもニューヨークにもあります。だから MAC アドレスを見ても「どの方面か」は分かりません。遠くへ運ぶには、まとまりで振られた IP アドレスが要ります。

もう1つは、IP アドレスをもらう前でも、線の上では話せる必要があることです。PC がネットワークにつないだ直後、まだ IP アドレスを持っていません。IP アドレスをもらう手続き(8本目の DHCP)そのものが、MAC アドレスを使って行われます。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 3 / 14
  • なぜ IP アドレスとは別に MAC アドレスがあるのか
  • MAC アドレス
  • IP アドレス
  • 機械(差し込み口)に付く。同じ線の上だけで使う
  • ネットワークに入ったときに割り当てられる
  • IP アドレスをもらう手続き(8本目の DHCP)自体が、 まだ IP の無い状態で、MAC アドレスを使って行われる
  • MAC は線の上の隣を区別する番号。IP が無くても使える。

昔は「全員に叫ぶ」だった(ハブ)

スイッチの仕組みを見る前に、昔のやり方を見ておくと、スイッチのありがたみが分かります。

昔は、真ん中にハブという機械を置いていました。ハブは、ある口から届いた信号を、全部の口にそのまま流します。PC-A が C 宛てに送ると、B にも C にも D にも届きます。受け取った各 PC は、宛先 MAC を見て、自分宛でなければ捨てます。

これには問題がありました。

問題中身
線が混む誰かが送るたびに、全員の線が使われる
ぶつかる2台が同時に送ると信号が混ざって壊れ、送り直しになる
覗き見できる自分宛でない小包も、捨てずに読めば中身が見える

台数が増えるほど、どんどん遅くなりました。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 4 / 14
  • 昔は「全員に叫ぶ」だった(ハブ)
  • PC-A
  • → C
  • PC-C
  • MAC aa:aa
  • ハブ
  • 1
  • 3
  • MAC cc:cc
  • 2
  • 4
  • PC-B
  • PC-D
  • MAC bb:bb
  • B も D も受け取ってから「自分宛じゃない」と捨てる。 線が混み、同時に送るとぶつかり、覗き見もできる
  • MAC dd:dd
  • ハブは全部の口に流す。自分宛でなければ各自が捨てる。

スイッチは、宛先の口にだけ流す

今の主流はスイッチです。スイッチは、届いた小包の宛先 MAC アドレスを見て、その機械がつながっている口(ポート)にだけ送り出します。

図では、A から C への小包は、A の線と C の線だけを通り、B と D の線は静かなままです。そのあいだに B と D が別の会話をすることもできます。同時にたくさんの会話ができるので、台数が増えても遅くなりにくくなりました。

2本目で「スイッチは MAC の封筒までしか開けない」と書いたのは、このことです。スイッチが見ているのは宛先 MAC アドレスだけで、IP アドレスや中身は見ていません。

では、スイッチは「cc:cc の機械はポート3にいる」ことを、どうやって知るのでしょうか。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 5 / 14
  • スイッチは、宛先の口にだけ流す
  • PC-A
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • 2
  • 4
  • → C
  • PC-B
  • PC-D
  • MAC bb:bb
  • B と D の線は静かなまま。 そのぶん同時にたくさんの会話ができる
  • MAC dd:dd
  • 宛先 MAC を見て、その機械の口(ポート)にだけ送り出す。

でも、スイッチは最初、誰がどの口にいるか知らない

スイッチの中には、「この MAC アドレスの機械は、このポートにいる」という表があります。MAC アドレステーブルと呼びます。

ところが、電源を入れた直後、この表は空っぽです。誰がどの口につながっているか、スイッチは何も知りません。人が表を書き込むこともありません。

それでもスイッチは、次のページから見る方法で、自分で表を埋めていきます。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 6 / 14
  • でも、スイッチは最初、誰がどの口にいるか知らない
  • PC-A
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • → C
  • 2
  • 4
  • PC-B
  • PC-D
  • MAC bb:bb
  • スイッチの表(MAC アドレス → ポート)
  • MAC dd:dd
  • (最初は空っぽ)
  • MAC アドレス → ポートの表は、電源を入れた直後は空っぽ。

受け取った小包の「送信元」を見て、表に書き込む

PC-A が C 宛ての小包を送ると、小包はポート1からスイッチに入ってきます。

スイッチは、まず小包の送信元 MAC アドレスを見ます。aa:aa と書いてあります。ポート1から入ってきたのだから、「aa:aa の機械はポート1にいる」と分かります。これを表に書き込みます。

これを学習と呼びます。スイッチは、宛先を調べる前に、まず送信元を見て覚えるのです。小包が通るたびに、送った機械の場所が1つずつ分かっていきます。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 7 / 14
  • 受け取った小包の「送信元」を見て、表に書き込む
  • PC-A
  • → C
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • 2
  • 4
  • PC-B
  • PC-D
  • MAC bb:bb
  • スイッチの表(MAC アドレス → ポート)
  • MAC dd:dd
  • aa:aa
  • ポート 1
  • 送信元を見て覚える(学習)
  • 送信元 aa:aa がポート1から来た。だから「aa:aa はポート1」。

宛先が表に無ければ、来た口以外の全部に流す

次に、スイッチは宛先 MAC アドレス cc:cc を表で探します。ところが、まだ cc:cc の場所は知りません。

このとき、スイッチは来た口(ポート1)以外の全部の口に流します。これをフラッディングと呼びます。ハブと同じ「全員に叫ぶ」ですが、知らないときだけの一時しのぎです。

B と D は、宛先 MAC が自分でないので捨てます。C だけが受け取ります。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 8 / 14
  • 宛先が表に無ければ、来た口以外の全部に流す
  • PC-A
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • 2
  • 4
  • → C
  • PC-B
  • PC-D
  • MAC bb:bb
  • スイッチの表(MAC アドレス → ポート)
  • MAC dd:dd
  • aa:aa
  • ポート 1
  • B と D は自分宛でないので捨てる
  • cc:cc の場所はまだ知らない。全員に流す(フラッディング)。

返事が来ると、相手の場所も覚える

C が返事を送ります。返事はポート3からスイッチに入ってきます。

スイッチは、また送信元を見ます。cc:cc です。「cc:cc の機械はポート3にいる」と表に書き込みます。

次に宛先 aa:aa を表で探すと、今度は「ポート1」と書いてあります。だから、返事はポート1にだけ流します。フラッディングはしません。

ネットワークの会話のほとんどは「送ったら返事が来る」やりとりなので、最初の1往復で、両者の場所が表に載ります。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 9 / 14
  • 返事が来ると、相手の場所も覚える
  • PC-A
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • → A
  • 2
  • 4
  • PC-B
  • PC-D
  • MAC bb:bb
  • スイッチの表(MAC アドレス → ポート)
  • MAC dd:dd
  • aa:aa
  • ポート 1
  • cc:cc
  • ポート 3
  • 送信元 cc:cc はポート3。宛先 aa:aa はポート1と知っている。

2回目からは、最初から宛先の口にだけ流す

これで、A から C への小包も、C から A への小包も、最初から宛先の口にだけ流れるようになりました。

B や D も何かを送れば、そのたびに表に載っていきます。しばらくすると、表は全員分で埋まります。

大事なのは、誰も表を手で書いていないことです。スイッチは、通っていく小包を見ているだけで、勝手に賢くなります。PC を新しく差し込んでも、何の設定もなしにすぐ使えるのは、この仕組みのおかげです。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 10 / 14
  • 2回目からは、最初から宛先の口にだけ流す
  • PC-A
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • 2
  • 4
  • → C
  • PC-B
  • PC-D
  • MAC bb:bb
  • スイッチの表(MAC アドレス → ポート)
  • MAC dd:dd
  • aa:aa
  • ポート 1
  • cc:cc
  • ポート 3
  • bb:bb
  • ポート 2
  • dd:dd
  • ポート 4
  • やりとりが続くうちに、表が埋まっていく。誰も表を手で書いていない。

覚えた行は、しばらく使わないと忘れる

表の行は、ずっと残るわけではありません。しばらく使われなかった行は消えます。よくある設定は5分程度です。これをエージングと呼びます。

忘れる理由は、ネットワークが変わるからです。PC を別の口に差し替えたり、ノート PC を持って別の場所に移ったりします。古い行が残り続けると、もういない口に小包を流し続けてしまいます。

消えても困ることはありません。次に小包が来れば、また送信元を見て覚え直すだけです。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 11 / 14
  • 覚えた行は、しばらく使わないと忘れる
  • PC-A
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • 2
  • 4
  • PC-B
  • PC-D
  • MAC bb:bb
  • スイッチの表(MAC アドレス → ポート)
  • MAC dd:dd
  • aa:aa
  • ポート 1
  • cc:cc
  • ポート 3
  • dd:dd
  • ポート 4
  • bb:bb は5分使われなかったので消えた
  • PC は差し替えられる。数分使わない行は消す(エージング)。

「全員へ」の宛先もある:ff:ff:ff:ff:ff:ff

MAC アドレスには、特別な宛先があります。すべての桁が f の `ff:ff:ff:ff:ff:ff` です。これは「このネットワークの全員へ」という意味で、ブロードキャストと呼びます。

宛先がブロードキャストの小包を受け取ると、スイッチは表を見ずに、来た口以外の全部に流します。受け取った全員が、中身を読みます。

「全員へ」が必要になるのは、「誰に聞けばいいか分からないことを、みんなに聞きたいとき」です。たとえば「192.168.1.1 の人、あなたの MAC アドレスを教えて」という質問がそうです。これが5本目で見る ARP です。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 12 / 14
  • 「全員へ」の宛先もある:ff:ff:ff:ff:ff:ff
  • PC-A
  • → 全員
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • 2
  • 4
  • PC-B
  • PC-D
  • MAC bb:bb
  • スイッチの表(MAC アドレス → ポート)
  • MAC dd:dd
  • aa:aa
  • ポート 1
  • cc:cc
  • ポート 3
  • dd:dd
  • ポート 4
  • 宛先が ff:ff:ff:ff:ff:ff なら表を見ずに全員へ
  • ブロードキャスト。必ず全部の口に流す。5本目の ARP が使う。

スイッチの限界:同じネットワークの中しか届けられない

ここまでの仕組みは、同じネットワークの中ではとてもうまく働きます。では、スイッチを世界中につなげば、インターネット全体でも使えるでしょうか。無理です。

無理な理由中身
覚えきれない世界中の何十億台の MAC アドレスを、1台の表に載せることはできない
叫べない知らない宛先のたびに世界中にフラッディングしたら、網が溢れる
方面が分からないMAC アドレスは場所と無関係に振られているので、「だいたいあっち」が言えない

だから、ネットワークはある程度の大きさで区切られ、区切りの外へは、IP アドレスを見るルーターが運ぶことになっています。

では、「区切り」はどこにあり、「相手は区切りの中か外か」はどう判定するのでしょうか。それが次の作品のテーマです。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 13 / 14
  • スイッチの限界:同じネットワークの中しか届けられない
  • 世界中の機械の MAC アドレスは覚えきれない
  • スイッチ
  • 知らない宛先を世界中にフラッディングしたら、網が溢れる
  • そもそも IP アドレス(最終の宛先)を見ない
  • → 外のネットワークへは、IP を見るルーターが要る(4〜6本目)
  • 世界中の MAC は覚えられず、世界中に叫ぶこともできない。

まとめ:MAC アドレスとスイッチ

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

項目内容
MAC アドレス差し込み口ごとの番号。同じネットワークの中で「どの機械か」を区別する
ハブ全員に流す。混む・ぶつかる・覗ける
スイッチ宛先 MAC を見て、その口にだけ流す
学習小包の送信元を見て、「この MAC はこの口」と表に書く
フラッディング宛先が表に無いときだけ、全部の口に流す
エージングしばらく使わない行は忘れる
ブロードキャストff:ff:ff:ff:ff:ff は全員宛て
限界世界中は覚えられない。外へはルーターが要る

冒頭の疑問に引きつけると、スイッチもまた「全体を最初から知っているわけではない」機械です。通っていく小包から、少しずつ学んでいきます。ルーターの表も「話し合って」埋まっていく(7本目)ので、ここに共通する考え方があります。

次の作品では、IP アドレスとネットワークの区切りを見ていきます。

  • ネットワークのしくみ 3 / 8 ― MAC アドレスとスイッチ
  • 14 / 14
  • まとめ:MAC アドレスとスイッチ
  • PC-A
  • PC-C
  • MAC aa:aa
  • スイッチ
  • 1
  • 3
  • MAC cc:cc
  • 2
  • 4
  • PC-B
  • PC-D
  • MAC bb:bb
  • スイッチの表(MAC アドレス → ポート)
  • MAC dd:dd
  • aa:aa
  • ポート 1
  • bb:bb
  • ポート 2
  • cc:cc
  • ポート 3
  • dd:dd
  • ポート 4
  • 次は、「同じネットワークか、外か」を IP でどう判定するか。

0 件のコメント

読み込み中…

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