web-dev-qa-db-ja.com

IPv4サブネットはどのように機能しますか?

これはIPv4サブネットについての 標準的な質問 です。

関連:

サブネット化はどのように行われ、どのように行われますか手でまたは頭の中で概念といくつかの例の両方で説明しますか? Server Faultはサブネット化された宿題の質問をたくさん受け取るので、Server Fault自体にそれらをポイントするための回答を使用できます。

  • ネットワークを持っている場合、どのように分割するのかをどうやって理解するのですか?
  • ネットマスクが与えられた場合、そのネットワーク範囲がどのようになっているのかをどのようにして知ることができますか?
  • スラッシュの後に番号が続く場合がありますが、その番号は何ですか?
  • サブネットマスクだけでなくワイルドカードマスクもある場合、それらは同じように見えますが異なりますか?
  • 誰かがこのためのバイナリを知っていることについて何か言及しましたか?
442
Kyle Brandt

ルーターがパケットの適切な宛先を選択できるように、IPサブネットが存在します。 IPサブネットを使用して、論理的な理由(ファイアウォールなど)または物理的な必要性(小さなブロードキャストドメインなど)のために、より大きなネットワークを分割できます。

ただし、簡単に言うと、IPルーターはIPサブネットを使用してルーティングを決定します。これらの決定がどのように機能するかを理解し、IPサブネットを計画する方法を理解できます。

1に数えます

すでにバイナリ(base 2)表記に堪能な場合は、このセクションをスキップできます。

残されたあなたのために:バイナリ表記に堪能でないことをあなたに恥!

ええ、それは少し厳しいかもしれません。バイナリでカウントすること、そしてバイナリを10進数に変換したり逆にしたりするためのショートカットを学ぶことは、本当に、本当に簡単です。あなたは本当にそれを行う方法を知っている必要があります。

1に数える方法を知っていればよいので、バイナリでのカウントはとても簡単です。

従来のオドメーターとは異なり、各桁は0から1までしかカウントできないことを除いて、車の「オドメーター」を考えてみてください。車が工場から出荷された時点で、オドメーターは「00000000」を読み取ります。

最初の1マイルを走行すると、走行距離計は「00000001」を読み取ります。ここまでは順調ですね。

2マイル走行すると、走行距離計の最初の桁が「0」に戻り(最大値は「1」であるため)、走行距離計の2桁目が「1」に戻り、走行距離計は「 00000010 "。これは10進表記では10のように見えますが、2進表記では実際には2(これまでに車を運転したマイルの数)です。

オドメーターの最初の桁が再び回転するため、3マイル走行すると、オドメーターは「00000011」になります。バイナリ表記の「11」は、10進数の3と同じです。

最後に、4マイルを運転すると、両方の桁(3マイルの終わりに「1」を読んでいた)がゼロ位置にロールバックし、3桁目が「1」位置にロールアップして、「 00000100」。これが10進数4の2進数表現です。

必要に応じて、これらすべてを記憶することができますが、カウントする数値が大きくなるにつれて、方法小さな走行距離計が「ロールオーバー」することを本当に理解するだけで済みます。これは、従来の10進オドメーターの操作とまったく同じですが、架空の「2進オドメーター」では各桁を「0」または「1」にしかできません。

10進数を2進数に変換するには、走行距離計を前方に1ティックずつ進み、2進数に変換する10進数に等しい回数だけ声を出してカウントします。オウトメーターに表示されているのは、そのすべての回転と回転がカウントアップした10進数の2進数表現になった後です。

オドメーターがどのように前進するかを理解しているので、オドメーターがどのように後退するかも理解できます。オドメーターに表示された2進数を10進数に戻すには、オドメーターを一度に1ティックずつ戻し、オドメーターが「00000000」と表示されるまで読み上げます。すべてのカウントとローリングが完了すると、最後に声に出して言うのは、オドメーターが開始した2進数の10進数表現になります。

この方法で2進数と10進数の間で値を変換することは、 very 退屈な作業になります。あなたはそれを行うことができますが、それは非常に効率的ではありません。少しアルゴリズムを習得する方が簡単です。

さておき、2進数の各桁は「ビット」と呼ばれます。それは「バイナリ」の「b」と「数字」の「it」です。ビットは2進数です。

たとえば、「1101011」のような2進数を10進数に変換することは、便利な小さなアルゴリズムを使用した単純なプロセスです。

2進数のビット数を数えることから始めます。この場合、7枚あります。1枚の紙に(あなたの心の中で、テキストファイルなどで)7つの区分を作成し、右から左に記入を始めます。一番右のスロットに、数字の「1」を入力します。これは、常に「1」から始まるためです。左側の次のスロットで、右側のスロットの値を2倍に入力し(次のスロットでは「2」、次のスロットでは「4」)、すべてのスロットがいっぱいになるまで続けます。 (これらの数は2のべき乗であり、次第に記憶していくことになります。頭の中で私は131,072まで大丈夫ですが、その後は通常、電卓または紙が必要です)。

だから、あなたはあなたの小さなスロットのあなたの紙に次のものを持っているべきです。

 64    |    32    |    16    |    8    |    4    |    2    |    1    |

次のように、スロットの下の2進数からビットを転記します。

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
  1          1          0         1         0         1         1

次に、いくつかの記号を追加して、問題の答えを計算します。

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
       +          +          +         +         +         +         =

すべての数学をやって、あなたは思いつくはずです:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
 64    +    32    +     0    +    8    +    0    +    2    +    1    =   107

それで終わりです。 10進数の「1101011」は107です。これは、単純なステップと簡単な計算です。

10進数から2進数への変換も同じくらい簡単で、基本的なアルゴリズムは同じですが、逆に実行します。

218を2進数に変換するとします。紙面の右側から「1」と書いてください。左側に、その値を2倍にして(つまり、「2」)、最後の値を2倍にして、紙の左側に向かって移動を続けます。書き込もうとしている数値が変換中の数値より大きい場合は、書き込みを停止します。それ以外の場合は、前の数字を2倍にして書き続けます。 (このアルゴリズムを使用して、34,157,216,092のような大きな数を2進数に変換するのは少々面倒ですが、それは確かに可能です。)

だから、あなたはあなたの紙に持っているべきです:

 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |

128を2倍にすると256になるため、変換する数値(218)よりも大きいため、128での数値の書き込みを停止しました。

左端の番号から始めて、その上に「218」と書き(128)、「218は128以上ですか?」と自問してください。答えが「はい」の場合、「128」の下の「1」をスクラッチします。 「64」の上に、218-128(90)の結果を書き込みます。

「64」を見て、「90は64以上か?」と自問してください。そのため、「64」の下に「1」を書き込み、次に90から64を引いて、「32」の上に書き込みます(26)。

ただし、「32」に到達すると、32は26以下であることがわかります。この場合、「32」の下に「0」を書き込み、数値(26)を32の上から「上」にコピーします16インチ、残りの数字で同じ質問を続けます。

すべて完了したら、次のものが必要です。

 218         90         26         26        10         2         2         0
 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |
   1          1          0          1         1         0         1         0

上部の数字は計算で使用されたメモに過ぎず、私たちにとってあまり意味がありません。ただし、下部には2進数の「11011010」が表示されます。案の定、バイナリに変換された218は「11011010」です。

これらの非常に簡単な手順に従って、バイナリを10進数に変換し、電卓なしで再び元に戻すことができます。数学はすべて非常に単純であり、ルールはほんの少しの練習で記憶することができます。

アドレスの分割

ピザの配達のようなIPルーティングを考えてください。

「123 Main Street」にピザを配達するように求められたとき、人間として、「Main Street」という名前の番地にある「123」という番号の建物に行きたいことは明らかです。建物番号は100〜199で、ほとんどの街区には数百の番号が付いているため、メインストリートの100ブロックに行く必要があることは簡単にわかります。アドレスを分割する方法を「知っている」だけです。

ルーターはピザではなくパケットを配信します。彼らの仕事はピザの運転手と同じです。貨物(パケット)をできるだけ目的地に近づけることです。ルーターが2つ以上のIPサブネットに接続されている(まったく役立つ)。ルーターは、パケットドライバのように、パケットの宛先IPアドレスを調べ、それらの宛先アドレスを「番地」と「建物番号」のコンポーネントに分解して、配信に関する決定を行う必要があります。

IPネットワーク上の各コンピューター(または「ホスト」)は、固有のIPアドレスとサブネットマスクで構成されます。そのIPアドレスは、「ホストID」と呼ばれる「ビルディングナンバー」コンポーネント(上記の例では「123」のような)と呼ばれる「ストリート名」コンポーネント(上記の例の「メインストリート」のように)に分割できます。 「ネットワークID」。人間の目では、建物の番号と通りの名前が「123 Main Street」のどこにあるかは簡単にわかりますが、「10.13.216.41」では、サブネットマスクが255.255.192.0 "の場合、その分割がわかりにくいのです。

IPルーターは、ルーティングの決定を行うために、IPアドレスをこれらのコンポーネント部分に分割する方法を「知っている」だけです。 IPパケットのルーティング方法を理解することは、このプロセスを理解することにかかっているため、IPアドレスを分割する方法も知る必要があります。さいわい、IPアドレスとサブネットマスクからホストIDとネットワークIDを抽出するのは、実際には非常に簡単です。

バイナリでIPアドレスを書き出すことから始めます(まだ頭でこれを習得していない場合は計算機を使用しますが、その方法を覚えておいてください-それは本当に、本当に簡単で、異性に印象づけますパーティー):

      10.      13.     216.      41
00001010.00001101.11011000.00101001

サブネットマスクもバイナリで記述します。

     255.     255.     192.       0
11111111.11111111.11000000.00000000

横に並べると、「1」が停止するサブネットマスクのポイントが、IPアドレスのポイントに「整列」していることがわかります。これが、ネットワークIDとホストIDが分かれている点です。したがって、この場合:

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1's in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

ルーターは、サブネットマスクを使用して、IPアドレスの1でカバーされるビットを「マスクアウト」して(「マスクアウト」されていないビットを0に置き換えて)、ネットワークIDを抽出します。

      10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

同様に、サブネットマスクを使用して、IPアドレスの0でカバーされるビットを「マスクアウト」する(「マスクアウト」されていないビットを再び0に置き換える)ことで、ルーターはホストIDを抽出できます。

       0.       0.      24.      41
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

ピザの配達中に物理アドレスの「ビルディング番号」と「ストリート名」の間のように、ネットワークIDとホストIDの間の「区切り」を人間の目で見るのは簡単ではありませんが、最終的な効果は同じ。

IPアドレスとサブネットマスクをホストIDとネットワークIDに分割できるようになったので、ルーターと同じようにIPをルーティングできます。

その他の用語

サブネットマスクは、インターネット全体およびこの回答の残り全体で(IP /番号)として書き込まれます。この表記は、「クラスレスドメイン間ルーティング」(CIDR)表記として知られています。 「255.255.255.0」は、最初は24ビットの1で構成されており、「255.255.255.0」よりも「/ 24」と書く方が高速です。 CIDR番号( "/ 16"など)をドット付き10進数のサブネットマスクに変換するには、その数の1を書き出し、8ビットのグループに分割して、10進数に変換します。 (たとえば、「/ 16」は「255.255.0.0」です。)

「昔」に戻ると、サブネットマスクは指定されていませんでしたが、IPアドレスの特定のビットを調べることによって導き出されました。たとえば、0〜127で始まるIPアドレスには、255.0.0.0の暗黙のサブネットマスクがありました(「クラスA」IPアドレスと呼ばれます)。

これらの暗黙のサブネットマスクは現在使用されていません。クラスレスIPアドレッシングをサポートしていない非常に古い機器や古いプロトコル(RIPv1など)に対処するという不幸がない限り、これらについて学ぶことはお勧めしません。これらのアドレスの「クラス」については、これ以上は触れません。今日では適用できず、混乱を招く可能性があるためです。

一部のデバイスでは、「ワイルドカードマスク」と呼ばれる表記法を使用しています。 「ワイルドカードマスク」は、1の場合はすべて0、0の場合は1のサブネットマスクにすぎません。/26の「ワイルドカードマスク」は次のとおりです。

 11111111.11111111.11111111.11000000 - /26 subnet mask
 00000000.00000000.00000000.00111111 - /26 "wildcard mask"

通常、アクセス制御リストまたはファイアウォールルールでホストIDの照合に使用される「ワイルドカードマスク」が表示されます。ここではそれらについてこれ以上説明しません。

ルーターの仕組み

前に述べたように、IPルーターはピザの配達ドライバーと同じような仕事をしていて、貨物(パケット)を宛先に届ける必要があります。 IPルーターは、アドレス192.168.10.2にバインドされたパケットを提示された場合、そのパケットを宛先に近づけるのに最適なネットワークインターフェイスを決定する必要があります。

あなたがIPルーターであり、番号が付けられたインターフェースが接続されているとします。

  • イーサネット0-192.168.20.1、サブネットマスク/ 24
  • イーサネット1-192.168.10.1、サブネットマスク/ 24

「192.168.10.2」の宛先アドレスで配信するパケットを受信した場合、Ethernet1インターフェイスアドレスがパケットの宛先に対応しているため、パケットをインターフェイスEthernet1から送信する必要があることを(人間の目で)簡単に判断できます。住所。 Ethernet1インターフェースに接続されているすべてのコンピューターには、「Ethernet 192.168.10。」で始まるIPアドレスが割り当てられます。これは、Ethernet1インターフェースに割り当てられたIPアドレスのネットワークIDが「192.168.10.0」であるためです。

ルーターの場合、このルート選択プロセスは、ルーティングテーブルを作成し、パケットが配信されるたびにテーブルを参照することによって行われます。ルーティングテーブルには、ネットワークIDと宛先インターフェイス名が含まれています。 IPアドレスとサブネットマスクからネットワークIDを取得する方法はすでに知っているので、ルーティングテーブルを作成する準備が整いました。このルーターのルーティングテーブルは次のとおりです。

  • ネットワークID:192.168.20.0(11000000.10101000.00010100.00000000)-24ビットのサブネットマスク-インターフェイスEthernet0
  • ネットワークID:192.168.10.0(11000000.10101000.00001010.00000000)-24ビットのサブネットマスク-インターフェイスイーサネット1

「192.168.10.2」にバインドされた着信パケットの場合、そのパケットのアドレスをバイナリに変換するだけで(人間として、ルーターは最初にネットワークからバイナリとして取得します)、ルーティング内の各アドレスに一致させます。エントリと一致するまでテーブル(サブネットマスクのビット数まで)。

  • 着信パケットの宛先:11000000.10101000.00001010.00000010

それをルーティングテーブルのエントリと比較します。

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00010100.00000000 - Interface Ethernet0
!!!!!!!!.!!!!!!!!.!!!????!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00001010.00000000 - Interface Ethernet1, 24 bit subnet mask
!!!!!!!!.!!!!!!!!.!!!!!!!!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

Ethernet0のエントリは最初の19ビットに一致しますが、その後一致しなくなります。つまり、適切な宛先インターフェースではありません。インターフェイスEthernet1が宛先アドレスの24ビットと一致していることがわかります。ああ、ハ!パケットはインターフェースEthernet1にバインドされます。

実際のルーターでは、ルーティングテーブルは、最長のサブネットマスクが最初に一致するかどうか(つまり、最も具体的なルート)がチェックされ、一致が見つかるとすぐにパケットをルーティングできるように並べ替えられます。さらにマッチングを試行する必要はありません(つまり、192.168.10.0が最初にリストされ、192.168.20.0がチェックされることはありません)。ここでは、少し簡略化しています。凝ったデータ構造とアルゴリズムはより高速なIPルーターを作成しますが、単純なアルゴリズムでも同じ結果が得られます。

静的ルート

ここまで、ネットワークに直接接続されている仮想ルーターについて説明しました。それは明らかに、世界が実際に機能する方法ではありません。ピザを運転するアナロジーでは、ドライバーがフロントデスクよりも建物の中に入ることが許可されず、最終受信者に配達するためにピザを誰かに渡す必要がある場合があります(不信を保留して、私と一緒にいる間は我慢してください)アナロジーを伸ばしてください)。

最初の例からルーターを「ルーターA」と呼ぶことから始めましょう。次のように、RouterAのルーティングテーブルをすでに知っています。

  • ネットワークID:192.168.20.0(11000000.10101000.00010100.00000000)-サブネットマスク/ 24-インターフェイスRouterA-Ethernet0
  • ネットワークID:192.168.10.0(11000000.10101000.00001010.00000000)-サブネットマスク/ 24-インターフェイスRouterA-Ethernet1

Ethernet0およびEthernet1インターフェイスに割り当てられたIPアドレス192.168.10.254/24および192.168.30.1/24を持つ別のルーター「ルーターB」があるとします。次のルーティングテーブルがあります。

  • ネットワークID:192.168.10.0(11000000.10101000.00001010.00000000)-サブネットマスク/ 24-インターフェイスRouterB-Ethernet0
  • ネットワークID:192.168.30.0(11000000.10101000.00011110.00000000)-サブネットマスク/ 24-インターフェイスRouterB-Ethernet1

Pretty ASCII artでは、ネットワークは次のようになります。

               Interface                      Interface
               Ethernet1                      Ethernet1
               192.168.10.1/24                192.168.30.254/24
     __________  V                  __________  V
    |          | V                 |          | V
----| ROUTER A |------- /// -------| ROUTER B |----
  ^ |__________|                 ^ |__________|
  ^                              ^
Interface                      Interface
Ethernet0                      Ethernet0
192.168.20.1/24                192.168.10.254/24

ルーターBは、ルーターAが何も知らないネットワーク192.168.30.0/24に「到達する」方法を知っていることがわかります。

ルータAのEthernet0インターフェイスに接続されたネットワークに接続されたIPアドレス192.168.20.13のPCが、配信のためにパケットをルータAに送信するとします。架空のパケットの宛先はIPアドレス192.168.30.46です。これは、ルーターBのEthernet1インターフェイスに接続されているネットワークに接続されているデバイスです。

上記のルーティングテーブルでは、ルーターAのルーティングテーブルのいずれのエントリも宛先192.168.30.46と一致しないため、ルーターAはメッセージ「Destination network unreachable」とともに送信側PCにパケットを返します。

ルーターAに192.168.30.0/24ネットワークの存在を認識させるために、ルーターAのルーティングテーブルに次のエントリを追加します。

  • ネットワークID:192.168.30.0(11000000.10101000.00011110.00000000)-サブネットマスク/ 24-192.168.10.254経由でアクセス可能

このようにして、ルータAには、サンプルパケットの宛先192.168.30.46と一致するルーティングテーブルエントリがあります。このルーティングテーブルエントリは、「192.168.30.0/24にバインドされたパケットを受け取った場合、その処理方法を知っているので、192.168.10.254に送信する」と効果的に言っています。これは、前述の「フロントでピザを渡す」アクションに似ています。目的地に近づける方法を知っている誰かにパケットを渡します。

「手動」でエントリをルーティングテーブルに追加することは、「静的ルート」を追加することと呼ばれます。

ルーターBがパケットを192.168.20.0サブネットマスク255.255.255.0ネットワークに配信する場合、ルーティングテーブルにもエントリが必要です。

  • ネットワークID:192.168.20.0(11000000.10101000.00010100.00000000)-サブネットマスク/ 24-アクセス可能:192.168.10.1(192.168.10.0ネットワーク内のルーターAのIPアドレス)

これにより、192.168.30.0/24ネットワークと192.168.20.0/24ネットワークの間で、これらのルーター間の192.168.10.0/24ネットワークを介して配信するためのパスが作成されます。

このような「インタースティシャルネットワーク」の両側にあるルーターに、「遠端」ネットワーク用のルーティングテーブルエントリがあることを常に確認する必要があります。この例のルータBに、ルータAに接続された「遠端」ネットワーク192.168.20.0/24のルーティングテーブルエントリがない場合、192.168.20.13のPCからの架空のパケット would 192.168.30.46で宛先デバイスに到達しますが、192.168.30.46が送り返そうとした応答は、ルーターBによって「宛先ネットワークに到達できません」として返されます。一方向通信は一般に望ましくありません。コンピュータネットワークでの通信について考えるときは、常に both 方向に流れるトラフィックについて考えるようにしてください。

静的ルートから多くの走行距離を得ることができます。 EIGRP、RIPなどの動的ルーティングプロトコルは、実際にはルーターが相互にルーティング情報を交換する方法にすぎず、実際には静的ルートで構成できます。ただし、スタティックルートよりもダイナミックルーティングプロトコルを使用する大きな利点の1つは、ダイナミックルーティングプロトコルがネットワークの状態(帯域幅の使用率、インターフェイスの「ダウン」)に基づいてルーティングテーブルを動的に変更できることです。など)、したがって、動的ルーティングプロトコルを使用すると、ネットワークインフラストラクチャの障害やボトルネックを「迂回する」構成になる可能性があります。 (ただし、動的ルーティングプロトコルは [〜#〜] way [〜#〜] この回答の範囲外です。)

ここからそこにたどり着けない

例のルーターAの場合、「172.16.31.92」宛てのパケットが着信するとどうなりますか?

ルーターAのルーティングテーブルを見ると、宛先インターフェイスも静的ルートも172.18.31.92の最初の24ビット(10101100.00010000.00011111.01011100、BTW)と一致していません。

すでに知っているように、ルーターAは「宛先ネットワークに到達できません」メッセージを介して送信者にパケットを返します。

アドレス「192.168.20.254」に座っている別のルーター(ルーターC)があるとします。ルーターCはインターネットに接続されています!

                              Interface                      Interface                      Interface
                              Ethernet1                      Ethernet1                      Ethernet1
                              192.168.20.254/24              192.168.10.1/24                192.168.30.254/24
                    __________  V                  __________  V                  __________  V
((  heap o  ))     |          | V                 |          | V                 |          | V
(( internet )) ----| ROUTER C |------- /// -------| ROUTER A |------- /// -------| ROUTER B |----
((   w00t!  ))   ^ |__________|                 ^ |__________|                 ^ |__________|
                 ^                              ^                              ^
               Interface                      Interface                      Interface
               Ethernet0                      Ethernet0                      Ethernet0
               10.35.1.1/30                   192.168.20.1/24                192.168.10.254/24

ルーターAがローカルインターフェイスに一致しないパケットをルーターCまでルーティングし、ルーターCがインターネットにパケットを送信できるようにするとよいでしょう。 「デフォルトゲートウェイ」ルートを入力します。

次のように、ルーティングテーブルの最後にエントリを追加します。

  • ネットワークID:0.0.0.0(00000000.00000000.00000000.00000000)-サブネットマスク/ 0-宛先ルーター:192.168.20.254

「172.16.31.92」をルーティングテーブルの各エントリに一致させようとすると、この新しいエントリに到達します。最初は少し困惑します。宛先アドレスのゼロビットと一致するように探しています...待って...何ですか?ゼロビットに一致しますか?したがって、私たちは一致をまったく探していません。このルーティングテーブルエントリは、基本的には、「配信をあきらめるのではなく、ここに到着した場合は、パケットを192.168.20.254のルーターに送信して処理させる」と言っています。

192.168.20.254は、 [〜#〜] do [〜#〜] がパケットを配信する方法を知っている宛先です。特定のルーティングテーブルエントリがない宛先に向かうパケットに直面した場合、この「デフォルトゲートウェイ」エントリは常に一致し(宛先アドレスのゼロビットに一致するため)、「最後の手段」となる場所を提供します。配信のためにパケットを送信します。 「最後の手段のゲートウェイ」と呼ばれるデフォルトゲートウェイが聞こえることがあります。

デフォルトゲートウェイルートを有効にするには、ルーティングテーブルの他のエントリを使用して到達可能なルーターを参照する必要があります。たとえば、ルーターAでデフォルトゲートウェイ192.168.50.254を指定しようとすると、そのようなデフォルトゲートウェイへの配信は失敗します。 192.168.50.254は、ルーターAがルーティングテーブル内の他のルートを使用してパケットを配信する方法を知っているアドレスではないため、このようなアドレスはデフォルトゲートウェイとしては無効です。これは簡潔に述べることができます。デフォルトゲートウェイは、ルーティングテーブル内の別のルートを使用してすでに到達可能なアドレスに設定する必要があります。

実際のルーターは通常、デフォルトゲートウェイをルーティングテーブルの最後のルートとして格納し、テーブル内の他のすべてのエントリとの一致に失敗した後にパケットと一致するようにします。

都市計画とIPルーティング

IPサブネットをより小さなIPサブネットに分割することは、都市計画です。都市計画では、ゾーニングを使用して、景観の自然の特徴(川、湖など)に適応し、都市のさまざまな部分間の交通量に影響を与え、さまざまなタイプの土地利用(産業、住宅など)を分離します。 IPサブネット化は、ほとんど同じです。

ネットワークをサブネット化する主な理由は3つあります。

  • 異なる通信メディアを介して通信したい場合があります。 T1がある場合WAN 2つの建物間の接続は、IPルーターをこれらの接続の両端に配置して、T1を介した通信を容易にすることができます。両端のネットワーク(および「インタースティシャル」ネットワーク) T1自体)は一意のIPサブネットに割り当てられるため、ルータはT1回線を介してどのトラフィックを送信するかを決定できます。

  • イーサネットネットワークでは、サブネット化を使用して、ネットワークの特定の部分のブロードキャストトラフィックの量を制限できます。アプリケーション層プロトコルは、非常に便利な目的でイーサネットのブロードキャスト機能を使用します。ただし、同じイーサネットネットワークにホストを詰め込むにつれて、有線(またはワイヤレスイーサネットでは空中)のブロードキャストトラフィックの割合が増加して、非ブロードキャストトラフィックの配信に問題が発生する可能性があります。 (昔は、ブロードキャストトラフィックはホストに各ブロードキャストパケットの検査を強制することにより、CPUを圧倒する可能性がありました。今日ではそうなる可能性は低いです。)スイッチドイーサネット上の過剰なトラフィックは、「不明な宛先へのフレームのフラッディング」の形でも発生します。この状態は、イーサネットスイッチがネットワーク上のすべての宛先を追跡できないために発生し、スイッチドイーサネットネットワークが無数のホストに拡張できない理由です。不明な宛先へのフレームのフラッディングの影響は、サブネット化の目的で、過剰なブロードキャストトラフィックの影響に似ています。

  • ホストの異なるグループ間を流れるトラフィックのタイプを「ポリシング」したい場合があります。おそらく、プリントサーバーデバイスがあり、承認されたプリントキューサーバーコンピューターだけにジョブを送信したいとします。プリントサーバーデバイスサブネットへのフローを許可するトラフィックを制限することにより、ユーザーはPCを構成して、プリントサーバーデバイスと直接通信して印刷アカウンティングをバイパスすることができません。プリントサーバーデバイスをすべてサブネットにして、そのサブネットに接続されているルーターまたはファイアウォールにルールを作成して、プリントサーバーデバイスへのトラフィックの送信を許可するホストのリストを制御できます。 (通常、ルーターとファイアウォールの両方が、パケットの送信元アドレスと宛先アドレスに基づいて、パケットを配信する方法とかどうかを決定できます。ファイアウォールは通常、強迫的なパーソナリティを持つルーターの亜種です。非常に非常に懸念することができます。ルーターは通常、ペイロードを無視し、パケットを配信するだけですが、パケットのペイロード。

都市の計画では、道路が互いにどのように交差するかを計画し、ターン専用道路、一方通行、行き止まりの道路を使用して、交通の流れに影響を与えることができます。メインストリートの長さを30ブロックにして、各ブロックにそれぞれ最大99の建物を含めることができます。メインストリートの各ブロックに、ブロックごとに100ずつ増加するストリート番号の範囲があるように、ストリート番号を計画するのは非常に簡単です。後続の各ブロックの「開始番号」が何であるかを知るのは非常に簡単です。

IPサブネットの計画では、適切な数のサブネット(街路)を適切な数の利用可能なホストID(建物番号)で構築し、ルーターを使用してサブネットを相互に接続する(交差)ことに関心があります。ルーターで指定された許可された送信元アドレスと宛先アドレスに関するルールは、トラフィックのフローをさらに制御できます。ファイアウォールは、強迫的な交通警官のように機能することができます。

この回答の目的のために、サブネットの構築は私たちの唯一の主要な関心事です。都市計画の場合のように10進数で作業するのではなく、2進数で作業して各サブネットの境界を記述します。

続き: IPv4サブネットの仕組み

(はい...回答の最大サイズ(30000文字)に達しました。)

655
Evan Anderson

続き: IPv4サブネットはどのように機能しますか?

ISPは、ネットワークID 192.168.40.0/24(11000000.10101000.00101000.00000000)の範囲を提供します。ファイアウォール/ルーターデバイスを使用して、ネットワークのさまざまな部分(サーバー、クライアントコンピューター、ネットワーク機器)間の通信を制限したい場合、ネットワークのさまざまな部分を分割したい場合IPサブネット(ファイアウォール/ルーターデバイス間でルーティングできる)。

あなたが持っている:

  • 12台のサーバーコンピューター、ただし最大50%増加する可能性があります
  • 9スイッチ
  • 97台のクライアントコンピューターが、さらに多くの

192.168.40.0/24をこれらの部分に分割する良い方法は何ですか?

2の累乗で考え、より多くの可能なデバイスで作業すると、次のことが可能になります。

  • 18台のサーバーコンピュータ-次に大きい2台の電力は32台です
  • 9スイッチ-2の次に大きい電力は16です。
  • 97台のクライアントコンピュータ-次に大きい2の累乗は128です

特定のIPサブネットには、有効なデバイスIPアドレスとして使用できない2つのアドレスが予約されています。ホストID部分がすべてゼロのアドレスと、ホストID部分がすべて1のアドレスです。そのため、特定のIPサブネットでは、使用可能なホストアドレスの数は、32からサブネットマスクのビット数を引いた数-2の2乗です。したがって、192.168.40.0/24の場合、サブネットマスクが24ビットであることがわかります。これにより、ホストIDに8ビットが使用可能になります。 2の8乗は256であることはわかっています。つまり、ビットの256の可能な組み合わせが8ビット幅のスロットに収まります。これらの8ビットの「11111111」と「00000000」の組み合わせはホストIDでは許可されないため、192.168.40.0/24ネットワークで割り当てることができる254の可能なホストが残ります。

これらの254台のホストのうち、クライアントコンピュータ、スイッチ、およびサーバーコンピュータをそのスペースに収めることができるようです。やってみよう。

「遊ぶ」ための8ビットのサブネットマスクがある(IPアドレス192.168.40.0/24の残りの8ビットは、ISPが提供するサブネットマスクでカバーされていない)。これらの8ビットを使用して、上記のデバイスに対応できる多数の一意のネットワークIDを作成する方法を考え出す必要があります。

最大のネットワークであるクライアントコンピューターから始めます。可能なデバイスの数から次の2のべき乗が128であることを知っています。128のバイナリでは、「10000000」です。幸いなことに、これは空き8ビットスロットに収まります(収まらない場合は、開始サブネットが小さすぎてすべてのデバイスに対応できないことを示しています)。

ISPから提供されたネットワークIDを取得し、それに1ビットのサブネットマスクを追加して、2つのネットワークに分割します。

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.00000000 - Old subnet mask (/24)

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

それが理にかなっているまでそれを見てください。サブネットマスクの長さを1ビット増やし、ネットワークIDがホストIDに使用されるはずの1ビットをカバーするようにしました。この1ビットは0または1のいずれかになるため、192.168.40.0ネットワークを2つのネットワークに効果的に分割しています。 192.168.40.0/25ネットワークの最初の有効なIPアドレスは、右端のビットが「1」の最初のホストIDになります。

11000000.10101000.00101000.00000001 - 192.168.40.1 - First valid Host in the 192.168.40.0/25 network

同様に、192.168.40.128ネットワークの最初の有効なホストは、右端のビットが「1」の最初のホストIDになります。

11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid Host in the 192.168.40.128/25 network

各ネットワークの最後の有効なホストは、右端のビットが「1」に設定されたすべてのビット以外のホストID(== --- ==)です。

11000000.10101000.00101000.01111110 - 192.168.40.126 - Last valid Host in the 192.168.40.0/25 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid Host in the 192.168.40.128/25 network

したがって、この方法で、クライアントコンピューターを保持するのに十分な規模のネットワークと、同じ原理を適用してさらに小さなネットワークに分割できる2番目のネットワークを作成しました。メモしましょう:

  • クライアントコンピューター-192.168.40.0/25-有効なIP:192.168.40.1-192.168.40.126

次に、サーバーとスイッチの2番目のネットワークを分割するために、同じことを行います。

サーバーコンピュータは12台ありますが、さらに6台まで購入する可能性があります。次の2のべき乗を32として残す18を計画しましょう。バイナリでは、32は「100000」、つまり6ビット長です。 192.168.40.128/25には7ビットのサブネットマスクが残っているため、「再生」を続行するのに十分なビットがあります。サブネットマスクを1ビット追加すると、さらに2つのネットワークが得られます。

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - Old subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid Host in the 192.168.40.128/26 network
11000000.10101000.00101000.10111110 - 192.168.40.190 - Last valid Host in the 192.168.40.128/26 network

11000000.10101000.00101000.11000000 - 192.168.40.192 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.11000001 - 192.168.40.193 - First valid Host in the 192.168.40.192/26 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid Host in the 192.168.40.192/26 network

したがって、192.168.40.128/25をさらに2つのネットワークに分割しました。それぞれのネットワークには、26ビットのサブネットマスク、または合計62の可能なホストIDがあります-2 ^(32-26)-2。

つまり、これらの両方のネットワークには、サーバーとスイッチに十分なアドレスがあります。メモを書きましょう:

  • サーバー-192.168.40.128/26-有効なIP:192.168.40.129-192.168.40.190
  • スイッチ-192.168.40.192/26-有効なIP:192.168.40.193-192.168.40.254

この手法は可変長サブネットマスキング(VLSM)と呼ばれ、適切に適用されると、「コアルーター」のルーティングテーブルが小さくなります(「ルート要約」と呼ばれるプロセスを使用)。この例のISPの場合、192.168.40.0/24をどのようにサブネット化したかにまったく気付かない可能性があります。ルーターのパケットが192.168.40.206にバインドされている場合(スイッチの1つ)、ルーターにパケットを渡すことだけが必要です(ルーターのルーティングテーブルで192.168.40.206がネットワークIDとサブネットマスク192.168.40.0/24に一致するため) )そして私たちのルーターはそれを宛先に送ります。これにより、サブネットルートがルーティングテーブルから除外されます。 (ここでは簡略化していますが、アイデアはわかります。)

これと同じ方法で、非常に地理的に大きなネットワークを計画できます。適切な「都市計画」を事前に行う限り(各サブネットワーク内のホストの数をある程度正確に予測し、将来を見据えて)、コアルーターで「要約」する大規模なルーティング階層を作成できます。 「非常に少数のルートに。上記で見たように、ルーターのルーティングテーブルに含まれるルートが多いほど、ジョブの実行が遅くなります。 VLSMでIPネットワークを設計し、ルーティングテーブルを小さく保つことは、Good Thing(tm)です。

例の非現実性

この答えの架空の世界は、明らかに架空のものです。通常、254を超えるホストを使用する最新のスイッチドイーサネットでサブネットを作成できます(トラフィックプロファイルに依存)。コメントで指摘されているように、ルーター間で/ 24ネットワークを使用することは、Real Life(tm)と一貫性がありません。これはかわいい例ですが、アドレス空間の無駄です。通常、/ 30または/ 31(/ 31の動作の詳細については http://www.faqs.org/rfcs/rfc3021.html を参照してください。これらはこの回答の範囲外です)確かに)ネットワークは、2つのルーター間で厳密にポイントツーポイントのリンクで使用されます。

144
Joseph Kern

サブネット化

サブネット化は難しいことではありませんが、恐ろしいかもしれません。それでは、可能な限り簡単なステップから始めましょう。バイナリでカウントすることを学びます。

バイナリ

Binaryは、base 2カウントシステムです。 2つの数値のみで構成されます(1と0)。カウントはこのように進行します。

1 = 001 ( 0 + 0 + 1 = 1)
2 = 010 ( 0 + 2 + 0 = 2)
3 = 011 ( 0 + 2 + 1 = 3)
4 = 100 ( 4 + 0 + 0 = 4)
5 = 101 ( 4 + 0 + 1 = 5)

したがって、各1が値のプレースホルダーであると想像した場合(すべてのバイナリ値は2の累乗です)

1     1     1     1     1 = 31
16  + 8  +  4  +  2  +  1 = 31

だから... 100000 =32。そして10000000 =128。そして11111111 = 255。

「255.255.255.0のサブネットマスクを持っている」と言ったとき、「11111111.11111111.11111111.00000000のサブネットマスクを持っている」という意味です。省略形としてサブネットを使用します。

アドレスのピリオドは、8桁の2進数(オクテット)ごとに区切られます。これが、IPv4が32ビット(8 * 4)アドレス空間として知られている理由です。

なぜサブネット?

IPv4アドレス(192.168.1.1)は不足しています。サブネット化により、使用可能なネットワーク(またはホスト)の量を増やすことができます。これは、管理上の理由と技術的な理由によるものです。

各IPアドレスは、ネットワークとホストの2つの部分に分かれています。デフォルトでは、クラスCアドレス(192.168.1.1)は、アドレスのネットワーク部分に最初の3オクテット(192.168.1)を使用します。 4番目のオクテット(.1)をホスト部分として使用します。

デフォルトでは、クラスCアドレスのIPアドレスとサブネットマスクは次のようになります。

IP     192.168.1.1 
Subnet 255.255.255.0

このようなバイナリで

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

バイナリの例をもう一度見てください。最初の3つのオクテットがネットワークに使用されていると言ったことに注意してください。ネットワーク部分がすべて1であることに注意してください。それがすべてのサブネット化です。拡大しましょう。

ホスト部分(上記の例)に単一のオクテットがあると仮定します。私はこれまで256個のホストしか持つことができません(256は0から数えてオクテットの最大値です)。しかし、もう1つの小さなトリックがあります。利用可能なアドレス(現在は256)から2つのホストアドレスを引く必要があります。範囲の最初のアドレスはネットワーク用(192.168.1.0)、範囲の最後のアドレスはブロードキャスト用(192.168.1.255)です。したがって、1つのネットワーク内のホストには実際に254の使用可能なアドレスがあります。

ケーススタディ

次の紙を渡したとしましょう。

Create 4 networks with 192.168.1.0/24.

これを見てみましょう。/24はCIDR表記と呼ばれます。 255.255.255.0を参照するのではなく、ネットワークに必要なビットを参照するだけです。この場合、32ビットアドレスから24ビット(3 * 8)が必要です。これをバイナリで書き出す

11111111.11111111.11111111.00000000 = 255.255.255.0
8bits   + 8bits  + 8bits  + 0bits   = 24bits

次に、必要なサブネットの数を把握する必要があります。 4のように見えます。さらにネットワークを作成する必要があるため(現在は1つしかありません)、いくつかのビットを反転させます。

11111111.11111111.11111111.00000000 = 255.255.255.0   = 1 Network OR /24
11111111.11111111.11111111.10000000 = 255.255.255.128 = 2 Networks OR /25
11111111.11111111.11111111.11000000 = 255.255.255.192 = 4 Networks (remember powers of 2!) OR /26

/ 26を決定したので、ホストの割り当てを始めましょう。少し簡単な数学:

32(bits) - 26(bits) = 6(bits) for Host addresses.

ホスト用に各ネットワークに割り当てる6ビットがあります。ネットワークごとに2を引く必要があることを思い出してください。

h = Host bits    
2^h - 2 = hosts available

2^6 - 2 = 62 hosts 

Finally we have 62 hosts in 4 networks, 192.168.1.0/26

次に、ホストがどこに行くのかを理解する必要があります。バイナリに戻ります!

11111111.11111111.11111111.00,000000 [the comma is the new network/hosts division]

Begin to calculate:

11000000.10101000.00000001.00,000000 = 192.168.1.0 [First IP = Network Adress]
11000000.10101000.00000001.00,000001 = 192.168.1.1 [First Host IP]
11000000.10101000.00000001.00,000010 = 192.168.1.2 [Second Host IP]
11000000.10101000.00000001.00,000011 = 192.168.1.3 [Third Host IP]

And so on ... until ...

11000000.10101000.00000001.00,111110 = 192.168.1.62 [Sixty Second Host IP]
11000000.10101000.00000001.00,111111 = 192.168.1.63 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.01,000000 = 192.168.1.64 [First IP = Network Address]
11000000.10101000.00000001.01,000001 = 192.168.1.65 [First Host IP]
11000000.10101000.00000001.01,000010 = 192.168.1.66 [Second Host IP]

And so on ... until ...

11000000.10101000.00000001.01,111110 = 192.168.1.126 [Sixty Second Host IP]
11000000.10101000.00000001.01,111111 = 192.168.1.127 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.10,000000 = 192.168.1.128 [First IP = Network Address]
11000000.10101000.00000001.10,000001 = 192.168.1.129 [First Host IP]

Etc ...

このようにして、サブネット全体を計算できます。

ワイルドカードワイルドカードマスクは、反転したサブネットマスクです。

11111111.11111111.11111111.11000000 = 255.255.255.192 [Subnet]
00000000.00000000.00000000.00111111 = 0.0.0.63 [Wild Card]

さらに

より高度なトピックについては、「スーパーネット」および「VLSM(可変長サブネットマスク)」という用語のGoogle。

応答に時間がかかりすぎていることがわかります... ため息

78
Joseph Kern

簡単な歴史の教訓:当初、ユニキャストIPv4アドレスは3つのクラスに分割され、それぞれに「デフォルト」のマスク長(クラスフルサブネットマスクと呼ばれる)が関連付けられていました

  • クラスA:1.0.0.0-> 127.255.255.255の範囲のすべて。 255.0.0.0のクラスフルサブネットマスク(CIDR表記では/ 8)
  • クラスB:128.0.0.0-> 191.255.255.255の範囲のすべて。 255.255.0.0のクラスフルサブネットマスク(CIDR表記では/ 16)
  • クラスC:192.0.0.0-> 223.255.255.255の範囲のすべて。 255.255.255.0のクラスフルサブネットマスク(CIDR表記では/ 24)

IPアドレス空間を効率的に使用するために、異なるサイズの組織に異なるクラスのIPアドレスを割り当てることができるという考えでした。

ただし、IPネットワークが成長するにつれて、このアプローチには問題があることが明らかになりました。名前を3つ挙げると:

クラスフルな世界では、すべてのサブネットには/ 8、/ 16、または/ 24のマスクが必要です。つまり、構成できる最小のサブネットは/ 24で、これにより254のホストアドレスが許可されました(ネットワークアドレスおよびブロードキャストアドレスとしてそれぞれ.0および.255が予約されています)。これは、特にルーターが2つしか接続されていないポイントツーポイントリンクで、非常に無駄になりました。

この制限が緩和された後でも、以前のルーティングプロトコル(例: RIPv1 )は、IPプレフィックスに関連付けられたマスク長を通知しませんでした。特定のマスクがない場合、同じクラスフルネットワーク内の直接接続されたインターフェイスのマスクを使用するか、またはクラスフルマスクの使用にフォールバックします。たとえば、/ 30マスクを使用したルーター間リンクにネットワーク172.16.0.0を使用する場合、172.16.0.0から172.16までのallサブネットを使用します。 255.255には/ 30マスクが必要です(16384のサブネット、それぞれに2つの使用可能なIPがあります)。

インターネットルーターのルーティングテーブルは、ますます多くのメモリを消費し始めました。これは「ルーティングテーブルの爆発」として知られています。たとえば、プロバイダーに16の連続した/ 24ネットワークがある場合、プロバイダーは、範囲全体をカバーする単一のサマリーではなく、16のプレフィックスすべてをアドバタイズする必要があります。

2つの 関連する改良 により、上記の制限を超えることができました。

  1. 可変長サブネットマスク(VLSM)
  2. CIDR(クラスレスドメイン間ルーティング)

VLSMは、同じクラスフルネットワーク内で異なるサブネットマスクをサポートするルーティングプロトコルの機能を指します。例えば:

192.168.1.0/24

次のように分割できます:

192.168.1.0/25
192.168.1.128/26
192.168.1.192/27
192.168.1.224/27

これにより、アドレス空間をより効率的に使用できるようになりました。サブネットは、それらに接続されるホスト/ルーターの数に合わせて適切なサイズにすることができます。

CIDRはVLSMを取得し、それを別の方法で拡張します。 CIDRでは、単一のクラスフルネットワークを小さなサブネットに分割するだけでなく、複数のクラスフルネットワークを単一のサマリーに集約することもできます。たとえば、次のクラスB(/ 16)ネットワーク:

172.16.0.0/16
172.17.0.0/16
172.18.0.0/16
172.19.0.0/16

単一のプレフィックスで集約/要約できます:

172.16.0.0/14

サブネット化に関しては、サブネットマスクは32ビット長です。マスク長は、アドレスのネットワーク部分を識別するビット数を示します。例えば:

10.1.1.0/24
  • クラスフルサブネットマスクは/ 8です
  • 実際のサブネットマスクは/ 24です
  • 16ビット(24-8)は、サブネットを使用するために「借用」されています。

つまり、10.0.0.0/8ネットワーク全体が/ 24にサブネット化されているとすると、この範囲内には65536(2 ^ 16)のサブネットがあることになります。 (これは、使用しているプラ​​ットフォームが0と255のサブネット番号をサポートしていることを前提としています。シスコのip subnet-zeroを参照してください)。

アドレスの「ホスト部分」には残りの8ビットがあります。つまり、256の使用可能なIPアドレス(2 ^ 8)があり、そのうち2つは予約されています(10.1.1.0はネットワークアドレス、10.1.1.255はサブネット向けのブロードキャストアドレスです)。これにより、このサブネットに254の使用可能なIPアドレスが残ります。 ((2 ^ 8)-2)

34
Murali Suriar

ネットワーク範囲:ネットワークは常に2つの数値で参照されます。1つはネットワークを判別するためのもので、もう1つはそのネットワーク上にあるコンピューター(またはホスト)を判別するためのものです。各ネットワークアドレスは32ビット長であるため、両方の数値はこれらの32ビットに収まる必要があります。

ネットワーク番号付けは重要です。これは、ネットワークIP範囲を要求したときにICANNから提供されるためです。私たちが持っていなければ、誰も私のネットワークとAT&Tの違いを見分けることができません。したがって、これらの番号は一意である必要がありますが、自分のネットワーク上のホストに番号を割り当てようとする人は他にいません。したがって、分割-最初の部分はネットワークの人々によって管理され、2番目の部分はすべて私が欲しいマシンに与えるためのものです。

ネットワーク番号は特定のビット数に固定されていません。たとえば、自分で管理できるマシンが200台しかない場合、24ビットを使用するネットワーク番号で完全に満足し、自分用に8ビットしか残しません。 -これは最大255台のホストに十分です。ネットワーク番号は24ビットを使用しているので、ネットワークの数を増やすことができます。つまり、多くの人が独自のネットワークを持つことができます。

以前は、これはクラスCネットワークと呼ばれていました。 (クラスBはネットワーク番号に16ビットを使用し、クラスAは8ビットを使用したため、クラスAネットワークはわずかしか存在しません)。

今日、この命名規則は時代遅れになっています。 CIDRと呼ばれる概念に置き換えられました。 CIDRは、ホストのビット数をスラッシュの後に明示的に配置します。したがって、上記の例(クラスC)はCIDR/24と呼ばれます。

これにより、柔軟性が少し向上します。300台のホストを管理する必要がある場合は、クラスBネットワークが必要になります。今、私は/ 23 CIDRを取得できるので、9ビットとネットワーク番号用の23ビットを持っています。 ICANNはこれらの種類のネットワークを提供していない場合がありますが、内部ネットワークがある場合、またはISPから部分的なネットワークをレンタルしている場合、特にすべての顧客に/ 29を与えることができるため、管理が容易になります(私を離れます。 。3ビットまたは最大8台のマシン)。これにより、より多くの人々が使用可能なIPアドレスの独自の小さなスライスを持つことができます。 IPv6を入手するまで、これは非常に重要です。


しかし.../24 CIDRは古いクラスCネットワークと同等であり、/ 16はクラスBであり、/ 8はクラスAです...でも/ 22を計算しようとして困惑しています私の頭。幸い、私のためにこれを行うツールがあります:)

ただし、ホストで/ 24が8ビット(ネットワークで24ビット)であることがわかっている場合は、/ 23でホストの数が2倍になるビットが1つ増えることがわかります。

7
gbjbaanb

途中で、いくつかの関連する質問にポーズを付けて回答します。

  • なぜあなたは255.255.255.0をそんなに頻繁に見るのですか?
  • なぜ192.168.0.1
  • なぜ127.0.0.1

なぜそのような奇妙な数字— 255、192、168、127ですか?


8 + 8 + 8 + 8ビットのドット付き10進数

194.60.38.10のようなインターネットアドレスドット付き10進表記を使用して、32ビットを8 + 8 + 8 + 8ビットに分割します。ドット付き10進数は変換 各数値を2進数にしてから、0で左パディングします。

たとえば、.60.→60 = 32 + 16 + 8 + 4→111100.00111100.

したがって、38→11000010.00111100.00100110.00001010、10→100110などのように、194.60.38.10は4×8 = 32ビットアドレス1010のドット付き10進数です。 194では8ビットすべてが必要です。残りは埋め込まれます。

padded

8ビットのバイナリで255、192、127について考えると、特定の10進数が一般的である理由がより簡単に理解できます。

  • 255 = 11111111
  • 192 = 11000000
  • 127 = _1111111
  • 128 = 10000000

これらの10進数は、■■■■■■■■、■□□□□□□□、および□■■■■■■■のような視覚的に便利な8ビットブロックを表します。したがって、8ビットの制限のため、256 =2⁹を見たことはありません。127= 128−1 = 2⁸−1は、2の累乗のビットフリップであり、2の累乗は10………00000はバイナリです。

  • 168 = 10101000

サブネットマスク:自分のものは自分のもの+自分のものは自分のもの

サブネットマスク次に、各32ビットインターネットアドレスをネットワークIDとホストIDに分割します。インターネットアドレスには1と0を混在させることができますが、サブネットマスクは1だけで始まり、0だけで終わります。

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□□ subnet

最初の8 + 8 + 8 = 24ビットをブラックアウトし、最後の8ビットをホワイトアウトすることは、IPを分割する方法です。■■□□□□■□|□□■■■■□□|□□■□□■ ■□|□□□□■□■□を2つに分割:

■■□□□□■□|□□■■■■□□|□□■□□■■□          network
                             □□□□■□■□ Host

サブネットワークの所有者(たとえば、 OmniCorp )がより多くの内部IPを必要とする場合、次のように、ネットワークの右側にさらに多く(たとえば、8 + 8 = 16ビット)を購入できます。

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|□□□□□□□□|□□□□□□□□ subnet
■■□□□□■□ □□■■■■□□                    network
                   □□■□□■■□ □□□□■□■□ Host

明らかに、32ビット=2³²= 4,294,967,296オプションのアドレス空間にはトレードオフがあります。より多くのネットワークID(左側)を購入すると、内部ネットワークに割り当てるホストID(右側)が増えます。

安い人はそれゆえのサブネットマスクを持っています

255.255.255.0 =■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□□。

さらに安い人が持っています

255.255.255.128 =■■■■■■■■|■■■■■■■■|■■■■■■■■|■□□□□□□□

または255.255.255.192 =■■■■■■■■|■■■■■■■■|■■■■■■■■|■■□□□□□□。

民間伝承によると、それは実際にはロジャーミラーではなく、元々 King of the Road を書いた、255.255.255.254マスクを持つ控えめなシステム管理者でした。 「私はタバコを持っていません」の「サブネット」。

I smoke my cigarettes down to the butt

(なぜ低いのマスクがこのように高い数字で埋められているのですか?ミラーのナレーターのように、サブネットマスクはあなたがしないのすべてのものを数えるからです。)


IPの後のスラッシュはどういう意味ですか? (例:194.60.38.10/24)

サブネットマスク( "theirs"を "ours"か​​ら分ける)は常に1 'sで始まり、2のべき乗を最初に計算することよりも2のべき乗を合計することは嫌いなので、誰かがCIDR(IPの後のスラッシュ)を発明しました。

194.60.38.10/24は、「サブマスクに24個のマスクがあり、残りはゼロ」であることを意味します。

■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□□「8」+ 8 + 8ビットが「それら」に属し、8ビット「私たち」に属しています。

上記のホーボーの国歌を逆にして、

  • /31はソングライターです
  • /24はミドルクラス(255.255.255.0 =■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□ □
  • /16は豊富です■■■■■■■■|■■■■■■■■|□□□□□□□□|□□□□□□□□
  • /8は非常に豊富です■■■■■■■■|□□□□□□□□|□□□□□□□□|□□□□□□□□
  • /1または/0は、IANAまたは何かになります。





†たとえば、bc -l; obase=10; 60を使用します。

5
isomorphismes

上記は正しいですが(申し訳ありませんが、TL; DR)、サブネットの計算は依然として多くのネットワーク管理者に多大な悲しみを引き起こします。実際にサブネット計算を行うには非常に簡単な方法があり、そのほとんどは頭の中で行うことができ、覚える必要はほとんどありません。ほとんどのアプリケーションでは、バイナリ表現を理解する必要はありませんが、サブネット化を完全に理解するには役立ちます。ここではIPv4についてのみ説明します。 IPv6はこの説明の範囲外です。

これを覚えて:

覚えておくべき3つの重要な点があります。すべてのサブネットは2の累乗に基づいており、2つの重要な番号があります。256と32です。詳細は後で説明します。

まず、2のべき乗を含むテーブルを見てみましょう。

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256

2の累乗の計算は簡単です。累乗の整数の増加ごとに結果が2倍になります。 1 + 1 = 2、2 + 2 = 4、4 + 4 = 8、8 + 8 = 16など。 サブネット内のアドレスの総数は常に2の累乗でなければなりません

IPv4サブネットの各オクテットは最大256になるため、256は非常に重要な数値であり、残りの数学の基礎となります。

サブネットのサイズ設定

"マスクが255.255.255.248の場合、サブネット内のアドレス数はいくつですか?"最初の3つのオクテットは無視します今のところ、最後を見てください。これは非常に簡単です。256から248を減算します。256から248を引いた値は8です。8つのアドレスが利用できます(ネットワークアドレスとブロードキャストアドレスを含む)。逆も機能します。「16個のアドレスを持つサブネットが必要な場合、サブネットマスクはどうなりますか?」 256マイナス16は240に相当します。サブネットマスクは255.255.255.248になります。

256アドレスを超えて拡張したい場合(歴史的には「クラスC」)、最後のオクテットが0で、3番目のオクテットが240(255.255.240.0)の場合は、ほんの少し複雑になります。 3番目のオクテットで計算を行うと、16のアドレスがあることがわかります。したがって、16に256(最後のオクテットのアドレスの数)を掛けて、4,096になります。最後の2つのオクテットが両方とも0(例:255.240.0.0)の場合、2番目のオクテット(再び16であると言います)から減算結果を取得し、乗算しますが、256(3番目のオクテットのアドレス)を乗算し、さらに乗算します256(最後のオクテットのアドレス)は、1,048,576のアドレスを取得します。そんなに簡単! (OK、その逆は少し難しいです。1,048,576のアドレスを持つサブネットが必要な場合、256から数えられる数を得るために、その数を256で数回除算する必要があります。)

ネットワークアドレス

サブネットマスクの計算方法がわかったので、ネットワークアドレスを特定するにはどうすればよいですか。それは簡単です。それは常に、サブネット内のアドレス数の倍数です。したがって、サブネットに16個のアドレスがある場合、可能なネットワークアドレスは0、16、32、48、64のようになり、最大で240になります(0は、任意の数に0は0と同じです。)

そしてもちろん、ブロードキャストアドレスはスコープの最後のアドレスになります。したがって、サブネットに16個のアドレスがあり、ネットワークアドレス10.3.54.64を選択した場合、ブロードキャストアドレスは(64 + 16-1 = 79)10.3.54.79になります。

CIDR表記

では、CIDR表記についてはどうでしょうか。それをIPv4スタイルのサブネットマスクとの間でどのように変換しますか?

2つの力を覚えていますか?さて、256以外に覚えておくべきキー番号がもう1つあります。32です。CIDR表記はIPv4アドレスの有効ビット数を示し、IPv4アドレスには32ビットがあり、各オクテットごとに8です。したがって、サブネットマスクが255.255.255.240の場合、これは16アドレスです。上記の「2の累乗」の表を見ると、16は2の4乗(2 ^ 4)であることがわかります。したがって、32からその電力数(4)を引いて28を取得します。255.255.255.240のサブネットマスクのCIDR表記では、CIDR表記は/ 28です。

/ CIDRが/ 28の場合、32から(28)を引いて4を取得します。 2をその(4の)乗(2 ^ 4)に上げて16にします。次に、256から(16)を減算して240を取得します。または255.255.255.240。

4
Jonathan J

また、NATについては、少なくとも現在のネットワークではサブネットの代わりに非常に一般的に使用されているため、IPv4アドレスが枯渇しているため、NATについては少なくとも言及する必要があると思います。 (また、私が初めてサブネットについて学習したとき、サブネットがWiFiルーターによって作成されたネットワークとどのように関連しているかについて、私は非常に混乱していました)。

NAT(ネットワークアドレス変換)は、(一般に)1つのアドレス空間(IP:ポート)を別のアドレス空間にマッピングしてプライベートネットワークを作成するために使用される手法です。主に、これは1つのパブリックアドレスの背後に複数のプライベートIPのプライベートネットワークを作成するために使用されます。たとえば、Wifiルーター、組織(大学や企業など)、またはISPによって使用されます。

実際のアドレス変換は、透過的に行われますNAT対応ノード、通常はルーターです。多くの形式があり、完全なコーン、アドレス制限、ポート制限など、またはこれらの混合。ノード全体の接続を開始する方法を決定します。

詳細は Wikipedia で確認できますが、たとえば、2台のデバイスが接続されたWifiルーターについて考えてみます。ルーターのパブリックIPは10.9.20.21/24で、デバイス(プライベートIP)のIPはA: 192.168.0.2B: 192.168.0.3で、ルーターのIPはR: 192.168.0.1です。したがって、AがサーバーS: 10.9.24.5/24に接続する場合(これは実際には、ここではルーターと異なるサブネット上にあります):

  1. AはR(デフォルトゲートウェイになる)に、送信元IP 192.168.0.2、srcポート(たとえば)14567、宛先IPを含むIPパケットを送信します:10.9.24.5 (ただし、ポートは実際にはTCPヘッダーの一部です)。
  2. ルーター(NAT対応)は、ポート14567をデバイスAにマップし、IPパケットのソースを10.9.20.21(これはこれは、上記のサブネット化とは対照的です(== --- ==)。IPパケットは実際には変更されません
  3. Sは一連のTCPパケット(src IP:10.9.20.21、src Port:14567)を受け取り、それらの値を含む応答パケットを宛先フィールド。
  4. R14567である宛先ポートをチェックし、パケットをAに転送します。
  5. Aは応答パケットを受信します。

上記の状況で、Bが同じソースポート(14567)で接続を開こうとした場合、Rによって別のポートにマップされます(および送信パケットが変更された)Sに送信する前。つまり、IPだけでなく、ポート変換も行われます。

ここで注意すべき2つの点:

  1. このアドレス変換により、いくつかの特別な技術を使用せずにプライベートネットワーク内のデバイスへの接続を開始することは、多くの場合不可能です。
  2. TCP同じデバイスからサーバーへの接続数(65536 = 2 ^ 16))の制限は、NAT =上記で使用したフォーム。
2
forumulator