今回は、ネットワークを超えた通信の流れについて学習していきます。

あれ、「通信の流れ」って以前も学習したような記憶が……。



以前学習したのは、同一ネットワーク内での通信の流れでした。



前回は通信したい相手のMACアドレスを問い合わせる仕組みについて学んだんでしたよね。



よく覚えていますね。立派です。
同一ネットワーク内での通信ではスイッチングハブが重要な役割を果たしていましたが、ネットワークを超える通信ではルータがかなめとなります。
それでは、ネットワークを超えた通信の流れについて見ていきましょう。
ネットワークを超えた通信の流れ
今回も、宛先IPアドレスはわかっているという前提で解説を進めていきます。


自分のIPアドレスは「192.168.5.100」です。



左上のPCが自分ですね。
自分のPCと繋がっているルータAには、ルーティングテーブルがあります。
このルータは、一般家庭の場合はISP(インターネットサービスプロバイダ)から送られてきたブロードバンドルータであることが多いです。



ルーティングテーブルについては別の記事で詳しく解説をしますので、今回は「ルータの中に宛先の一覧があるんだな」という認識をしてもらえれば大丈夫です。



スイッチングハブにMACアドレステーブルがあったのと似たような感じですね。


自分のPCから、「192.168.20.100」のIPアドレスを持つ相手に対してパケットを送りたいというのが今の状況です。
自分のPCのネットワークアドレスは「192.168.5.0」で、相手のネットワークアドレスは「192.168.20.0」であるため、異なるネットワークに通信するためにはルータを経由する必要があります。



同じネットワーク内であれば、すでに学習した流れで通信が行われていくはずですね。
まずは自分のPCからルータAにパケットが送信されます。


ルータAのルーティングテーブルには「192.168.20.0」のIPアドレスは登録されていないため、宛先「0.0.0.0」の場合の指示が使われます。



ルータは自分が直接接続されている相手のIPアドレスはわかるけれど、繋がっている先のルータが何に接続されているかまではわからないのですね。



そうなのです。そこで使われるのが宛先「0.0.0.0」の場合の指示と「ネクストホップ」です。
「0.0.0.0」を見てみると、ネクストホップが「192.168.10.2」となっています。
※ネクストホップとは、データパケットを次に転送する先のルータやデバイスを指す用語です。
ルーティングテーブルは、ネットワークを経由して目的地にパケットを届けるための情報を持っており、その中で「ネクストホップ」は重要な役割を果たします。
具体的に言うと、ルータが特定のIPアドレスにパケットを送信する際、直接その目的地に接続されていないことが多いため、次の中継点(つまり「ネクストホップ」)にパケットを渡すことで目的地に近づけます。
この中継点がどのルータか、もしくはどのネットワーク機器かを示すのが「ネクストホップ」の情報です。
つまり、今回の場合ルータAはネクストホップである「192.168.10.2」の宛先(ルータ)にパケットを送信します。
「192.168.10.2」の場合、インターフェースが「1」と登録されているので、「1」の出口からパケットを流します。


無事に「192.168.10.2」のルータBにパケットが送られました。
次は同様に届いた先のルータBが自身のルーティングテーブルを見て、パケットを送る先を判断します。





その部分についてはルータAと同じ流れになるので割愛しますね。


ルータBがルーティングテーブルを参照して、無事に「192.168.20.100」のPCにパケットを送ることができました。
経路集約
さらにネットワークが増えた場合を考えてみましょう。
「192.168.30.0」のネットワークが新たに追加されました。図では右端にある赤紫色のネットワークです。


「192.168.5.100」の自分のPCから「192.268.30.100」のPCにパケットを送りたいという状態の場合、またルーティングテーブルに登録されていないため、宛先「0.0.0.0」が参照されます。



しかし、「0.0.0.0」というのは宛先を次以降のルータへと丸投げをしているような状態で、あまり良い状態ではないのです。
そこで、ルーティングテーブルが作成されます。


「192.168.20.0」と「192.168.30.0」のネットワークが追加されたルーティングテーブルは上図のようになります。
しかし今度は、「192.168.20.0」と「192.168.30.0」のネットワークにパケットを送る際のネクストホップが「192.168.10.2」、インターフェースは「1」と重複してしまっています。



このように重複している場合、同じ部分をまとめることができます。



なるほど、見出しにある「経路集約」というものが行われるのですね。


経路集約は、ネットワーク管理者が手動で行います。
経路集約をすると、宛先とサブネットマスクは上図のようになります。



え、いきなりちんぷんかんぷんなんですけど……。



10進数で表されている宛先を2進数に直し、重複しているところをまとめるのです。
10進数 | 192.168.20.0 | 192.168.30.0 |
2進数 | 11000000.10101000.00010100.00000000 | 11000000.10101000.00011110.00000000 |
赤太字の部分が共通している部分です。
11000000.10101000.00010000.00000000を10進数に直すと、192.168.16.0となります。
また、プレフィックスが20になりますので、「11111111.11111111.11110000.00000000」を10進数に直すと「255.255.240.0」という風にサブネットマスクもわかります。





これで経路集約ができました。



やってみたら思いのほか難しくなかったです!
まとめ
ネットワークを超えた通信の流れということで、身構えていた方も多いかと思いますが、見てみると意外と簡単だったと思われるのではないでしょうか?



もっと複雑なやりとりがあるのかと思いました。



MACアドレスがIPアドレスに変わっただけって思いました!



複雑なのはルーティングテーブルの作成方法なのですが、それは次回の記事で学習しますね。
「ルーティングテーブル」についてはこれからきちんと学習していきますので安心してくださいね。
それでは、また次回の記事でお会いしましょう。