インターネットと言えばルータ。ルータといえばインターネット。前回ルータについての説明が出てこなかったので全国三千万のルータファンはがっかりしたことだと思う。でも安心して! 今回主役だよ!
L3スイッチと呼ばれる装置もルータの一種
ルータを超える通信はどうなってるのか?
さて前回の謎をあらためて確認しよう。まず前回学んだことを整理すると、Ethernetで通信する場合はIPアドレスのほかに、MACアドレスが必要で、そのための宛先MACアドレスを入手するためにARP RequestをBroadcastさせるんだったよね。でもBroadcastフレームというのはルータを超えることができないということだった。じゃあルータの向こう側の端末とはどう通信するのさ、というのが今回のポイント。
検証構成
これはいきなり実機のキャプチャーを追ってみたほうがわかりやすいのでまずは構成を確認しよう。以下の点について注意してほしい。
・UbuntuのIPアドレスが前回とは違う
・ルータには複数のインターフェースがあり、それぞれIPアドレス、MACアドレスがついている
・端末にデフォルトゲートウェイ(GW)が設定されている
端末にはルータのIPアドレスを教えておく必要があるぞ。それがデフォルトゲートウエイ(GW)
パケットキャプチャーによる動作解析
上記の構成でPC1からPC2にpingを打ち、その際のパケットをキャプチャーしてみる。
今回はパケットキャプチャーするポイントが2カ所有るよ。上の図で確認しておいて。
キャプチャー結果
緑キャプ: PC1からルータの間のキャプチャー(L2セグメント1)
図の緑のセグメントのキャプチャー。緑キャプと呼ぶことにする。PC1からpingが2発飛ばしているが、1発だけ返答を得ているのがわかる。
赤キャプ: ルータからPC2の間(L2セグメント2)
赤キャプとよぼう。この赤キャプのNo.3が緑キャプのNo.4と同じパケットだ。同様に、赤キャプのNo.4が緑キャプのNo.5に対応する。
キャプチャー解析
前述した緑キャプと赤キャプの連携をシーケンス図にしてみよう。左側が緑キャプ。右側が赤キャプ。
上記のキャプチャーのシーケンス
シーケンスの解説
シーケンスを解説する。緑キャプと赤キャプのパケットへの言及がランダムにくるから混乱しないように。
PC1からのARP(緑キャプのNo.1, No.2)
緑キャプのNo.1を見てほしい。これはARP Requestだけど、ターゲットのIPアドレスがPC2ではなくてルータ(192.168.70.254)になっている。緑キャプのNo.2はそれへの返答。
つまりPC1はルータの向こう側にいる端末へ通信したい場合、Ethernetフレームの宛先をルータ(GW)にする。
これが今回のテーマの回答だ。端末は通信相手がルータの向こうにいると判断した場合、パケットをルータに渡す
最初のping(緑キャプのNo.3)
緑キャプのNo.3がPC1が最初にだしたICMP echo Request。送信元MACアドレスが自分で宛先MACアドレスがルータになっているのをよーく見てほしい。そして次に送信元IPアドレスと宛先IPアドレスをじーっと見てほしい。なにかがスッキリとしたと思う。そう。これがIPフォワーディングの本質。これを見て悟った人はもうこの記事は読まなくてOK。お疲れさん。
ルータからのARP(赤キャプのNo.1, No.2)
赤キャプのNo.1はルータがPC2のMACアドレスを入手するためのARP Request。ルータも端末と同じ。宛先MACアドレスがわからなければARPを出す。赤キャプのNo.2がPC2からの応答。
ちなみにこのARPを出すトリガーはPC1からのICMP Requestだが、そのトリガーとなったICMPパケット自体はルータが破棄してしまっている。なのでpingの一発目は空振りする。(ARPテーブルが未完成の場合)
ping成功(緑キャプのNo.4 -> 赤キャプのNo.3, 赤キャプのNo.4 -> 緑キャプのNo.5)
ここでようやくPC1〜PC2の間のパケットが通常運行できるようなった、というわけ。緑キャプのNo.4のIPデータ部はそのまま赤キャプのNo.3に積み込まれている(厳密にはIPヘッダ内のTTLがルータを経由するたびに一つ減る)。同様に赤キャプのNo.4のIPデータは緑キャプのNo.5に積み込まれている。Ethernetフレームを乗り換えているというわけ。
赤キャプのNo.3の送信元MACアドレスを見てほしい。これはルータのMACアドレスになっている。Ethernetフレームの送信元MACアドレスはルータが転送する毎に変わる。これも重要なポイント。
ルータの転送動作
ここで一旦ルータの行動を整理しておこう。
① PC1からのフレーム(宛先IPアドレス=PC2、宛先MACアドレス=ルータ)を受け取る
② フレームの中のIPパケットを取り出し、宛先IPアドレスを調べる
③ 宛先IPアドレスに到達できるインタフェースから新たにEthernetフレームを送信する
注目してほしいのは②。ルータはEthernetフレームの箱を開ける。そして中のIPパケットのヘッダを読み取る。IPパケットを処理するのはレイヤ3のお仕事だったよね。なので”ルータはレイヤ3で動作する”と言われる。L3スイッチという言葉も同じこと。(ルータとL3スイッチは同じ生き物と思っていい)
つまりルータが複数の路線を接続している駅のような感じ。近所なら直通でいけるが、路線がちがうなら乗り換えが必要
まとめ
この章で説明したことをまとめるよ。
説明したこと
- ルータの向こう側の端末へ通信する際は、宛先MACアドレスはルータ(GW)になる
- ルータはEthernetフレームを開いて、再度別のEthernetフレームを使ってIPパケットを転送する
- フレームの送信元および宛先MACアドレスはルータを経由すると書き換えられるが、IPアドレスは送信元・宛先ともにオリジナルのまま
残された謎
- 端末は相手がルータの向こう側にいるかどうかをどうやって見分けているのか?
以下の記事で解説するぞ
-
惰性で理解するIPネットワーキング(3)IPアドレス
通信相手がルータの向こうにいるとどうやって知ったのか? 前回の話でルータを介した通信の場合、端末はEthernetフレームの宛先をルータのMACアドレスにする、ということがわかった。ではいったい端末は ...
続きを見る