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


439

これは、IPv4サブネットに関する標準的な質問です。

関連する:

サブネットはどのように機能しますか?また、手作業または頭の中でどのように行いますか? 誰かが概念的にもいくつかの例を使って説明できますか?Server Faultにはサブネット化に関する多くの宿題の質問があります。そのため、回答を使用してServer Fault自体にそれらを示すことができます。

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

この2つの部分から成る回答は、IPv4アドレスの計算などについて知りたいことをすべて説明しています。
ロンMaupinの

回答:


648

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

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

1にカウント

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

残っているあなたのために:バイナリ表記に堪能ではないのは恥です!

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

バイナリでカウントするのはとても簡単です。1にカウントする方法を知っているだけでよいからです!

車の「走行距離計」について考えてみましょう。ただし、従来の走行距離計とは異なり、各桁は0から1までしかカウントできません。車が工場から新鮮なとき、走行距離計は「00000000」を読み取ります。

最初の1マイルを走行すると、走行距離計に「00000001」と表示されます。ここまでは順調ですね。

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

3マイルを走行すると、走行距離計の最初の桁が再び回転するため、走行距離計は「00000011」を読み取ります。2進表記の「11」は、10進数の3と同じです。

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

必要に応じてこれらすべてを記憶できますが、実際には、カウントしている数値が大きくなるにつれて小さな走行距離計がどのように「ロールオーバー」するを理解する必要があります。これは、従来の10進オドメーターの操作とまったく同じですが、架空の「バイナリオドメーター」では各桁が「0」または「1」にしかなれない点が異なります。

10進数を2進数に変換するには、走行距離計を1ティックずつ進め、2進数に変換する10進数と同じ回数だけ回転するまで声を出してカウントします。走行距離計に表示されるものはすべて、その計算とローリングがカウントアップした10進数のバイナリ表現になります。

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

この方法で値を2進数と10進数の間で変換するのは非常に面倒です。できますが、あまり効率的ではありません。少しアルゴリズムを習得する方が簡単です。

余談: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番をバイナリに変換したいとします。紙の右側から始めて、数字の「1」を書きます。左側で、その値を2倍(つまり「2」)にし、最後の値を2倍にして紙の左に向かって移動し続けます。書き込もうとしている数字が変換中の数字より大きい場合、書き込みを停止します。それ以外の場合は、前の番号を2倍にして書き込みを続けます。(このアルゴリズムを使用して、34,157,216,092のような大きな数値をバイナリに変換するのは少し面倒ですが、確かに可能です。)

だから、あなたはあなたの論文にあるべきです:

 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」を書き、32の上から「26」をコピーします。 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」と呼ばれる「通り名」コンポーネント(上記の例では「Main Street」 「ネットワーク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ルーターであり、接続されたインターフェースに番号が付けられているとしましょう:

  • Ethernet0-192.168.20.1、サブネットマスク/ 24
  • Ethernet1-192.168.10.1、サブネットマスク/ 24

宛先アドレス「192.168.10.2」で配信するパケットを受信した場合、Ethernet1インターフェースアドレスはパケットの宛先に対応するため、パケットがインターフェースEthernet1に送信されることを(人間の目で)簡単に伝えることができます。住所。Ethernet1インターフェースに接続されているすべてのコンピューターには、「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ビットサブネットマスク-インターフェースEthernet1

「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

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

               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がネットワーク192.168.30.0/24に「到達する」方法を知っていること、ルーターAが何も知らないことがわかります。

ルーター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.10.0/24ネットワークを介して、192.168.30.0 / 24ネットワークと192.168.20.0/24ネットワーク間の配信パスが作成されます。

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

静的ルートから多くの燃費を得ることができます。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

ルーターCがインターネットに送信できるように、ルーターAがローカルインターフェイスに一致しないパケットをルーター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つあります。

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

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

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

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

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

この答えの目的のために、私たちのサブネットを構築することが私たちの唯一の大きな関心事です。都市計画のように10進数で作業する代わりに、バイナリで作業して各サブネットの境界を記述します。

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

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


13
@ジョセフ:それは私が自分の利益のために何回も提供しすぎた講義です。> smile <バイナリセクションを見ていきます。私は数学があまり得意ではないので、数学について教えることを嫌います(これは実際にバイナリを理解することです-基数2で数えます)。
エヴァンアンダーソン

2
答えを壊す/ wの私の唯一の問題は、1つのサブネットは、理由を理解する必要があるということである存在(IPルーティングを)1が効果的にサブネットにIPネットワークを分割する方法を理解することができます前に。あるトピックを他のトピックと切り離して議論する良い方法を見つけたことがありません。(実際、VLSMを使用してIPネットワークを設計することは、IPルーティングを理解した後は当然であり、「理にかなっています」)
Evan Anderson

28
分解しないでください。
ジョセフカーン

3
serverfaultでこれまでに見られた中で最も包括的な投稿に対して+1
Scott Lundberg

3
オドメーターの比phorにのみ賛成。これで、バイナリがどのように機能するかを人々に説明する方法がわかりました。
phuzion

142

続き: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番目の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ビットはゼロまたは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台まで購入できます。18を考えてみましょう。これにより、次に高い2のべき乗が32になります。バイナリでは、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ネットワークを設計し、ルーティングテーブルを小さく保つことは良いことです。

例の非現実性

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


小さなエラー:「最後の有効なホスト...」の直後のコードは、「最初の有効なホスト」の呼び出しに戻ります。まだ「最後」と言っているはずです。
JoeCool1986

@ JoeCool1986-良いキャッチ。
エヴァンアンダーソン

2
この回答に賛成票を投じて、2つの回答が適切に保持されるようにします。
l46kok

192.168.40.128から2つのサブネットを作成し、192.168.40.192のネットワークIDを作成する部分で、192はどこから来たのですか?
user6607

@ user6607サブネットは逆方向にカウントされます(ギャップなし)。たとえば、最初のサブネット0はとして表され00000000ます。2番目のサブネットは128そうで10000000あり、3番目のサブネット19211000000などとして表されます。逆方向に数え続けて新しいサブネットを見つけてください。
ジョセフカーン

76

サブネット化

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

バイナリ

バイナリは、基数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.11111111111.11111111.00000000のサブネットマスクがあります」という意味です。ショートハンドとしてサブネットを使用します。

アドレスのピリオドは、8桁ごとに区切られます(オクテット)。これが、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。

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


1
「ホスト部分に1つのオクテットがあることを考えます(上記の例)。255個のホストしか持てません(255はオクテットの最大値です)。しかし、もう1つの小さなトリックがあります。範囲内の最初のアドレスはネットワーク用(192.168.1.0)、範囲内の最後のアドレスはブロードキャスト(192.168.1.255)になります。 1つのネットワーク内のホスト。 "...これは誤りです。
joeqwerty

1
オクテットには256の可能な値があります:0から255、合計256。256-2(ネットワークおよびブロードキャストアドレス)= 254の可能なホストアドレス。
joeqwerty

おっと。ありがとう!:-)少しずつ、私はその特定の偉業をどのように管理したかわかりません。
ジョセフカーン

1
-1申し訳ありませんが、1993年のRFC 1519以降「クラス」は存在していません。歴史的な文脈の外でそれらについて話すべきではありません。それらは混乱し、多くの誤解を引き起こします。
クリスS

クリスはおそらく正しいでしょうが、クラスはまだCCNAとほとんどの学部レベルのコースで2000年代前半まで教えられていました。
ジョセフカーン

34

簡単な歴史の教訓:もともと、ユニキャスト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プレフィックスに関連付けられたマスク長をアドバタイズしませんでした。特定のマスクがない場合は、同じクラスフルネットワーク内の直接接続されたインターフェイスのマスクを使用するか、クラスフルマスクの使用にフォールバックします。たとえば、ネットワーク172.16.0.0を/ 30マスクを使用したルーター間リンクに使用する場合、172.16.0.0〜172.16.255.255のすべてのサブネットには/ 30マスクが必要です(16384サブネット、それぞれ使用可能なIPが2つ) )。

インターネットルーターのルーティングテーブルは、ますます多くのメモリを使用し始めました。これは「ルーティングテーブルの爆発」として知られていました。たとえば、プロバイダーに16の連続した/ 24ネットワークがある場合、範囲全体をカバーする1つのサマリーではなく、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ネットワーク全体が/ 24sにサブネット化されていると仮定すると、この範囲内に65536(2 ^ 16)のサブネットが存在することになります。(これは、使用しているプラ​​ットフォームが0と255のサブネット番号をサポートしていることを前提としています。Ciscoのip subnet-zeroを参照してください)。

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


4
実際には5つのクラスがありました。
dbasnett

5
確かに、「サブネットの紹介」の質問のために、マルチキャストと予約クラスEのアドレス指定を実際に行う必要がありますか?:)
Murali Suriar

2
あなたは歴史をイントロの質問に持ち込みました...それから不完全なままにしておきました。どちらが悪いかわかりません。
クリスS

7

ネットワーク範囲:ネットワークは常に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申し訳ありませんが、最近では「歴史的」参照以外のクラスに言及することは不適切です。彼らは1993年にRFC 1519によって公式に廃止された「流行遅れ」ではありませんでした。それらはすべて混乱し、多くの誤解を引き起こしています。
クリスS

動的ルーティングプロトコルの一部の実装は、クラスフルな境界に沿って要約するため、それらを知ることは依然として役立ちます。
ベン

5

途中でいくつかの関連する質問に答えて回答します。

  • なぜ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's で左詰めすることを意味します。

.60.→60 = 32 + 16 + 8 + 4 111100→→ .00111100.

したがって、194.60.38.10は、4 11000010.00111100.00100110.00001010→ 8 = 32ビットアドレスの場合、38→ 100110、10→ 1010などのようにドット付き10進数です。194では、8ビットすべてが必要です。残りはパディングされます。

パッド入り

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 =■■■■■■■■|■■■■■■■■|■■■■■■■■■|■■□□□□□□。

民間伝承によると、それは実際にロジャー・ミラーが、元々書い255.255.255.254マスクと卑しいシステム管理者ではなかった道路の王を私はタバコを持っていないされていない」ため「私は大規模なサブネットを持っていない」置き換えて、 」。

タバコを吸います

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


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

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

194.60.38.10/24は「サブマスクには24個の1があり、残りは0である」ことを意味するため、

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

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

  • /31 ソングライターです
  • /24は中流階級(255.255.255.0=■■■■■■■■||■■■■■■■■|■■■■■■■■■|□□□□□□□□□
  • /16 豊かな■■■■■■■■|■■■■■■■■■|□□□□□□□□|□□□□□□□□□
  • /8 超豊富です■■■■■■■■||□□□□□□□□||□□□□□□□□|□□□□□□□□□
  • /1または/0、IANAまたは何かになります。





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


答えとの関係は、その中の写真ですか?答えに集中するだけですか?:)
simhumileco

4

上記は正しいのですが(申し訳ありませんが、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個のアドレスを取得します。簡単!(わかりました。そのため、逆の方が少し難しくなります。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以外に覚えておくべきキー番号が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です。

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


ありがとうございます。しかし、PCがサブネットマスクをどのように使用するかについてはまだあいまいです。PC上のアプリケーションがデータを送信する場合、データをパケットにカプセル化します。サブネットマスクは、パケットのカプセル化方法を決定しますか?例えば、PCがローカルネット上のパケットを送信したい場合は、イーサネット・フレーム使用するen.wikipedia.org/wiki/Ethernet_frameをし、それがネットワークの外たい場合には、TCPパケット使用するen.wikipedia.org/wikiを/…
アクアグレムリン

基本的に、PCがデータの送信先を決定する方法を知りません。イーサネットネットワークはバスのようなもので、どこにでも行きます。PCのイーサネットジャックからパケットを送信することは一般的なイベントであるため、パケット自体が誰に応答するかを判断する必要があります。ローカルデバイス(LAN上のスイッチまたは他のPC)によってピックアップされる予定のパケットは、ルーターによってピックアップされるパケットとは異なって見える必要があります。
アクアグレムリン

これは、TCPの下のレイヤーで発生します。各デバイスには、各デバイスのARPテーブルのIPアドレスに関連付けられたハードウェアアドレス(MAC)があります。これはディスカバリーによって構築されます。パケットがローカルネットワーク上のホスト宛ての場合、宛先デバイスのMACでタグ付けされます。パケットがリモートホスト宛ての場合、ローカルネットワーク上のルーターのMACでタグ付けされます。MACがルーターを通過するときに、MACは削除され、次ホップルーターのMACでタグ付けされます。サブネットは、ローカルネットワークの範囲を定義するだけです。(これは500文字未満の単純なバージョンです。)
ジョナサンJ

2

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

NAT(ネットワークアドレス変換)は、(一般的に)1つのアドレス空間(IP:Port)を別のアドレス空間にマッピングすることによりプライベートネットワークを作成するために使用される技術です。主に、これは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です。したがって、Aserverに接続したい場合はS: 10.9.24.5/24(実際には、ルーターとは異なるサブネット上にあります):

  1. IPパケットを送信R元IPと(デフォルトゲートウェイされるであろう)192.168.0.2、SRCポート(例えば)14567:、及び宛先IP 10.9.24.5(ポートが実際にTCPヘッダの一部であるが)。
  2. ルーター(NAT対応)はポート14567をデバイスにマップAし、IPパケットのソースを10.9.20.21(ルーターのパブリックIP)に変更します。これは、IPパケットが実際に変更されることのない上記のサブネット化とは対照的です。
  3. S一連のTCPパケット(src IP:10.9.20.21、src Port :)を14567受信し、宛先フィールドにこれらの値を持つ応答パケットを送信します。
  4. R宛先ポートをチェックします。宛先ポートは14567、パケットをに転送しAます。
  5. A 応答パケットを受信します。

上記の状況でB、同じ送信元ポート(14567)で接続を開こうとするRと、に送信する前に(および発信パケットのポートが変更されて)別のポートにマッピングされSます。つまり、単なるIPの代わりにポート変換もあります。

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

  1. このアドレス変換のため、特別な手法を使用しないと、プライベートネットワーク内のデバイスへの接続を開始できないことがよくあります。
  2. 同じデバイスからサーバーへの合計TCP接続の制限(65536 = 2 ^ 16)は、上記で使用されたNAT形式で、NATの背後にあるすべてのデバイスにまとめて適用されるようになりました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.