私はこれで質問ルーティング テーブルには次の内容が含まれます。
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
サブネット マスクを持つことはどういう意味ですか/32
。その場合、そのネットワーク ID は何になりますか。上記を単一のホストと見なす場合、ネットワーク ID のないホストは存在できますか。
私の知る限り、ネットワーク ID とそのネットワーク内のホストに割り当てられる IP アドレスは 2 つの異なるものです。192.168.0.0 はネットワーク ID であり、そのサブネットが 255.255.255.0 の場合、このネットワーク内のホストは 192.168.0.1 - 192.168.0.254 になります。この場合、ネットワーク ID のないホストはどのようにして存在できるのでしょうか?
答え1
ここで少し混乱が生じます。/32 は (サブ) ネットワークのサイズではなく、特定のルーティング テーブル エントリが適用されるアドレスの範囲を指します。通常、この 2 つは同じです (ネットワークまたはサブネットを 1 つのユニットとしてルーティングするため)。ただし、macOS では、同じローカル ネットワーク上の他のホストに対して少し異なる処理が行われます。引用した行の前に、次の行を追加しましょう。
Destination Gateway Flags Refs Use Netif Expire
default openwrt.lan UGSc 10 0 en0
...
192.168.1 link#4 UCS 2 0 en0
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
192.168.1 (192.168.1.0/24 の略) は en0 (別名 link#4) 経由でルーティングされます。ゲートウェイ経由ではなく、インターフェイス自体経由です。これは Mac 自体が接続されているネットワークです。192.168.1.1 と 192.168.1.125 はどちらも特定のアドレスです。そのネットワーク範囲内これらの /32 エントリを 192.168.1 エントリと比較すると、基本的には冗長な重複であり、ネットワーク範囲全体ではなく特定のアドレスについて同じことを示しています。
macOS がこれらの冗長なアドレス固有のエントリを作成する理由はわかりませんが、おそらく上記のリストで確認できる別のことと関係があります。macOS はルーティング テーブルに ARP テーブル エントリをリストします。上記の「openwrt.lan」エントリ (実際には 192.168.1.1 であると思われますが、番号ではなく名前でリストされています) は、en0 経由で MAC アドレス 46:94:fc:63:fc:7 にルーティングされていることを示しています。
したがって、ルート リストに表示されるのは、実際のネットワーク ルート (「デフォルト」や 192.168.1 エントリなど) とホストごとのエントリ (/32 および MAC をターゲットとしたエントリ) の組み合わせです。
答え2
/32
アドレッシング
一般的に言えば、/32
ネットワークには 1 つの IPv4 アドレスしかなく、すべてのトラフィックはその IPv4 アドレスを持つデバイスとデフォルト ゲートウェイの間で直接送信されます。デバイスは、ローカル サブネット上の他のデバイスと通信できません。
これにはいくつかの理由が考えられます。次のようなことが考えられます。
- 各サイトが特定の IPv4 アドレスにバインドされた複数のサイトを提供するウェブサーバー
- あループバックアドレステストに使用されます。
- ネットワーク セキュリティの仕掛け: /32 ネットマスクを持つマシンをサブネット上の他のシステムから分離します。これにより、システム上の静的ルートによって明示的に定義された宛先へのトラフィックのみが許可されます。たとえば、これはシステムの廃止に使用できます。
ネットワークID
のネットワークIDIP アドレスの部分はサブネット マスクによって決まります。例:
- IPv4
/24
ネットワークのサブネット マスクは です1111.1111.1111.0000
。つまり、最初の 3 オクテットはネットワーク ID であり、最後のオクテットはホスト ID の割り当てに使用されます (使用可能な ID は 256 個ですが、通常はいくつかが予約されています)。 - IPv4
/16
ネットワークのサブネット マスクは です1111.1111.0000.0000
。つまり、最初の 2 オクテットはネットワーク ID であり、最後のオクテットはホスト ID の割り当てに使用されます (使用可能な ID は 65536 個ですが、通常はいくつかが予約されています)。
の場合/32
、アドレスはネットワーク ID とホスト ID の両方であるため、これは適用されません。/31
アドレスもすべてホスト ID であり、0 番目のアドレスは予約されていません。
答え3
答え4
あなたが見ているのはサブネットマスクではありませんこれらはルーティング テーブル¹ プレフィックスの長さを示します。
ルーティング テーブルの単純な実装では、すべての可能性のある IP アドレスがリストされるため、任意の IP アドレスを指定すると、その IP アドレスを正確に検索し、それに関連付けられたルーティング情報² を取得できます。
明らかに何らかの圧縮が必要です。ルーティング情報の性質上、隣接するアドレスは同じ情報を使用する可能性が高いため、次のような形式を使用できます。基数木これらを圧縮します。簡単にその仕組みを説明します。
0 から 7 までの数字を 2 進数で表すと次のようになります。
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
ここで、アドレス 0 と 1 用とアドレス 2 と 3 用の 2 つのルーティング テーブル エントリがある場合、これらを共有するバイナリ プレフィックスの下にそれらを保存できます。.
プレフィックスの末尾の後の「未使用」ビットを示すために a を使用すると、00.
範囲 0 ~ 1 には 、
01.
範囲 2 ~ 3 には が存在します。
これを表す標準的な方法は、範囲の最小の数字に続いてプレフィックスの長さを指定することです。この場合、0/2
範囲は 0 ~ 1 で、2/2
範囲は 2 ~ 3 になります。
しかし、アドレス 6 のルーティング情報を検索する場合はどうなるでしょうか。通常は、プレフィックス0/0
(つまり、任意のビットに一致するもの) を含むルーティング情報の「デフォルト」セットを追加し、検索時に最も具体的な情報 (つまり、見つけられる最も長いプレフィックス) を検索します。したがって、先ほど説明した完全なルーティング テーブルは次のようになります。
0/2 00. Matches addresses 1 and 2.
2/2 01. Matches addresses 3 and 4.
0/0 ... Matches any address.
サブネットマスクも同様にプレフィックスで記述できるため、この方式がよく使用されます。ただし、この方式ができるサブネットの説明に使用されるということは、のみサブネットを記述します。
ルーティング テーブル プレフィックスがサブネットではない例として、2 つのネットワーク インターフェイスを同じネットワーク (たとえば、192.168.2.0/24) に接続することができます。(これは、2 つの別々のネットワーク カードをそれぞれ独自のケーブルで同じスイッチに接続することで実装できます。) 次に、2 つのルーティング テーブル エントリを使用して、2 つのインターフェイス間で送信トラフィックを「分散」するようにルーティング テーブルを設定できます。
192.168.2.0/25 eth0 # range ...2.0 to ...2.127
192.168.2.128/25 eth1 # range ...2.128 to ...2.255
これにより、そのネットワークのアドレス 0 ~ 127 宛てのパケットは out に送信されますeth0
が、そのネットワークのアドレス 128 ~ 255 宛てのパケットは out に送信eth1
されます。これは、これを行う方法としては適切ではありませんが (理由はここでは説明しません)、ルーティング プレフィックスとネットワーク アドレスが一致しない可能性があることを示しています。
¹ Wikipediaの記事ルーティングテーブル残念ながら、プレフィックス フィールドには「ネットワーク ID」が保持されると書かれています。これは、ルーティング テーブルの特定の実装では当てはまるかもしれませんが、一般的なケースでは、あなたが提供した例と、この回答の後半にある私の例の両方でわかるように、必ずしもネットワーク ID であるとは限りません。
²このルーティング情報には通常、使用するインターフェイス、そのインターフェイスで接続するルーター (存在する場合)、そのインターフェイスを介して直接到達可能なホストの MAC アドレス、ホストに複数の送信元アドレスがある場合にパケットに含める送信元アドレス、セキュリティ情報などが含まれます。 そこには多種多様なデータが含まれる可能性がありますが、この説明では、特定のアドレスの正しいデータ セットを検索する方法についてのみ説明しており、データ セット自体の内容については説明していないため、そのどれも重要ではありません。