IP

【図解】初心者にも分かるサブネットマスクとデフォルトゲートウェイ

サブネットマスクとは?デフォルトゲートウェイとは?

サブネットマスクの説明として『ネットワーク部とホスト部を識別するための数値』というものがあります。

これはある意味正しいですが、正確でもありません。情報処理系の試験でもたまに「出題者は本当にサブネットマスクの意味が明確なのか?」と疑問に思うような曖昧な問題文に出くわしたりします。

サブネットマスクは『サブネット』という IP アドレスの範囲を示すものですが、実は以下の 2 つの意味があります。

  1. ルーティングテーブル上のサブネットマスクは、ルーティングテーブルのエントリ数を減らすための、IP アドレスをグループ化する表現方法です。
  2. Ethernet インタフェースに IP 設定する際のサブネットマスクは (① と同様) IP アドレスをグループ化しますが、このアドレスグループの IP は互いにルーティング無しで直接 IP 通信可能であることを意味します。(逆にこの範囲外の IP アドレスへの通信はデフォルトゲートウェイへ IP パケットを投げ、ルーティングをしてもらいます)

ルーティングテーブル上では主に①の解釈、Ethernet NIC上では主に②の解釈が為されます。ちなみに、①の解釈は CIDR の意味と同じです。

補足として、サブネットの最初の IP (今回の例では 192.168.1.0) は NW アドレスであり『(ホストではなく) サブネットそのものを表すアドレス』として、ホストへの利用ができません。

また、サブネットの最後の IP (今回の例では 192.168.1.127) はディレクティッドブロードキャストアドレスであり『同一サブネットの IP 全員へ放送 (ブロードキャスト) するアドレス』であり、やはりホストへこの IP を割り当てることはできませんが、同一サブネットの IP を持つインタフェースは、この 192.168.1.127 宛の通信を受信し、CPU へ処理を回します。

デフォルトゲートウェイとは

デフォルトゲートウェイとは、上図で示した通り、自身のサブネット外の IP アドレス宛へ通信する場合の中継先のことです。

上図の例では、PC#1 は PC#2 (192.168.1.21) とは同一 IP アドレスグループなので直接通信できますが、ルータ#2 (192.168.23.2) と通信したい場合、同一 IP アドレスグループ外ですのでデフォルトゲートウェイに IP パケットを投げます。

あとはルータなりの NW 機器が目的地までルーティングしてくれることを期待するのみです。

このあたりの挙動は以下ページも参考にして下さい。

【図解】ルーティングの流れ ~同一セグメント内通信とデフォルトゲートウェイによる別セグメント間通信
今日の IP 通信は Ethernet がベースになっていることが多いので、この...

①と②が明確に使い分けされている例

①と②の使い分けを鮮明に表しているのが、ディレクティッド・ブロードキャストアドレスのルーティングです。

前述の例において、ルータ B が 192.168.1.127 宛の通信を受信した場合、どうなるでしょうか?

ルータ B のルーティングテーブルは①の意味なので 192.168.1.127 は普通の IP アドレスとして扱われます。つまり、ブロードキャストという識別はせず、ルータ A にルーティングします

一方、ルータ A は自身に 192.168.1.0/25 という Ethernet インタフェースを持っていますので②の意味で解釈します。

つまり、受信したパケット(宛先 = 192.168.1.127) がディレクティッドブロードキャストアドレスだと識別しますので、該当 NW にブロードキャストします

サブネットマスクの歴史

1985 年の RFC950 では、クラスフルを扱いきれていない現状の打開策として、LAN をサブネット化するいくつかのアイディアをアナウンスしています。その際のデメリットとして以下のような記述があります。

Each of these approaches has disadvantages. 
The first, although not requiring any new or modified protocols, 
results in an explosion in the size of Internet routing tables.

『サブネットを導入することでクラス A や B を効率的に使えるとする一方、ルーティングテーブルのサイズが大きくなる』と言っています (ちなみに当然ですがこの RFC は既に廃止になっています)。

また、RFC1519 では CIDR という概念が出ていますが、これは Classless Inter-Domain Routing の略で、ルーティングをする際にクラスの考え方を辞める、というものです。そして RFC1519 には以下の記述があります。

This plan is primarily directed at the first two problems listed above.
We believe that the judicious use of variable-length subnetting
techniques should help defer the onset of the last problem, 
the exhaustion of the 32-bit address space.

省略していますが『CIDR により 可変サブネッティングを使うことで IP アドレスの消費を抑え、ルーティングテーブルのサイズを抑えることができる』と言っています。

これはどちらかというと後述するスーパーネットによるルート集約効果を述べています。

この RFC950 と RFC1519 を引き合いに出したのは『サブネットマスクはルーティングテーブル上での IP アドレスをグループ化する表現方法』だという主張の根拠となるからです。

この根拠をさらに補足すると、Cisco の以下を含め様々なページにルーティング設定として mask という表現が為されています。

Catalyst 2960 および 2960-S スイッチ ソフトウェア コンフィギュレーション ガイド Cisco IOS Release 15.0(2)SE 以降 - スタティック IP ユニキャスト ルーティングの設定 [Cisco Catalyst 2960 シリーズ スイッチ]
スタティック IP ユニキャスト ルーティングの設定

なのでサブネットの本来の意味はルーティング時に扱う IP アドレスのグループ①であることは間違いなさそうです。

Ethernet については資料が乏しく、推測にはなりますが、おそらくこのサブネットの考えを Ethernet に適合させる際に②の意味が後付けされたのでは無いでしょうか。

ちなみに、クラスフルの時代は今のサブネットマスクに該当する言葉は「マスク」もしくは「ネットマスク」でした。クラス A のアドレスであれば「マスクは /8」といった感じです。

ですが CIDR の登場によってクラスレスの考え方が普及し、今までのマスクよりも下位 (sub) のマスクが登場した (例えば今までは 10.0.0.1 は /8 のマスクでしたが、10.1.1.1/24 という下位のマスクが登場した) ため、『サブネットマスク』と呼ばれているのです。

さらに言うと、 192.168.0.0/16 というような、本来のマスクよりも上位 (super) のマスクのことを『スーパーネットマスク』とも言うのですが、今ではクラスフルの考え方が薄れ、慣例的に全て『サブネットマスク』と呼ばれています。

コメント

タイトルとURLをコピーしました