IPv4サブネット化はどのように機能しますか?[閉まっている]


0

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

  • クラスレスルーティングとは何ですか?また、クラスベースルーティングは廃止されるのはなぜですか?
  • ネットワークがある場合、それをどのように分割するかをどのように把握すればよいですか?
  • ネットマスクが与えられた場合、そのネットワーク範囲がどのようにわかるのですか?
  • スラッシュの後に数字が続く場合があります。その数は何ですか?
  • サブネットマスクだけでなく、ワイルドカードマスクもある場合があります。それらは同じように見えますが、違いますか?
  • 誰かがこれのバイナリを知ることについて何か言及しましたか?
  • NAT(ネットワークアドレス変換)とは何ですか?

この質問に関するメモ

ここ数年で、私はServer Faultに関するこの質問にサブネット化についてかなりの数の質問を示しました。これは、IPv4とサブネット化に関する彼らの標準的な質問です。

残念ながら、スーパーユーザーに関するVTCの質問は、技術的には別のサイトであるため、その質問の複製としてはできません。

[暫定]ソリューションとして、ここでその質問/回答をコピーし、それがスーパーユーザーの標準的な質問/回答になることを期待しています。

改善できる場合は、回答を投稿するかコメントを残してください。


4
コミュニティFAQの質問はCWにすべきではありませんか?
カナダのルーク

2
同じ質問に、NATとは何か、IPv4サブネットとは何かを含めるのはばかげています。彼らは両方とも大きな主題であり、同じ答えで実際に扱われるべきではありません
-barlop


3
いくつかの考え:1)あなたはこれに多大な労力を費やしたので、ありがとう。2)質問内の2つの部分の回答を帰属させますが、回答はそれぞれ著者への帰属で始まる必要があります。3)これが標準的なスレッドになる場合は、少し広くする必要がありますが、SUにとっての質問は非常に広いようです。1つの質問と「1つの」回答で主題に関連するすべてを網羅することは、主題に関する一般的な知識の教科書であり、サイトのモデルにはあま​​り合いません。(私は、投票しませんでした、BTW)
fixer1234

3
ネットワーク内の別のサイトからコピー-パスタは、ほぼ最小すべてがここにソースを言及して提供する免責事項を必要として... SEのコンテンツの卸売をリーチのサイトよりも、私にはより悪い感じ固体原作者の帰属を、より良いだろうオリジナルの著者が投稿し、壮大なQ&Aに値する敬意を払っています。この種のCopy-Pasteが受け入れられるかどうか、またmetaで何をすべきかを尋ねました。
木梅

回答:


6

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

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

1にカウント

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

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

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

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

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

最初のマイルを走行すると、走行距離計に「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進数オドメーターの操作とまったく同じです。ただし、架空の「2進オドメーター」では各桁が「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」のどこにあるかは簡単にわかりますが、「255.255.192.0のサブネットマスクを使用した「10.13.216.41」ではその区分がわかりにくいです。

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進数で作業する代わりに、バイナリで作業して各サブネットの境界を記述します。

続き:https : //serverfault.com/questions/49765/how-does-subnetting-work/226445#226445

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


1
「(はい...回答の最大サイズ(30000文字)に達しました。)」と書きます。<---それは、おそらく質問が尋ねられたので、あまりにも多くの主題に対処しようとしたことを示唆しています。バイナリを知らない人にサブネット化を教える..バイナリに関するレッスンを絞って、ばかげている
-barlop

4

これは非常に簡単な見方で、Subnettingを初めて使用する人は簡単に理解できます。

したがって、ネットワークが与えられ、それらをより小さなネットワークに分割するように指示されます。

Letsは、172.18.0.0 / 16ネットワークがあり、それをより小さなネットワークに分割したいと考えています。そのためには、特定のネットワークからいくつかのホストビットを借用する必要があります。現在、ネットワークビットは172.18オクテットであり、ホストビットは0.0オクテットです。バイナリでは、これは1と0の束になりますが、これを視覚的に確認できるように、ネットワークにはNを、ホストビットにはHを使用します。

nnnnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhhになります。ネットワークを小さくするには、これらの「h」ビットの一部を取り、「n」ビットにする必要があります。この式は2 ^ nです。その後、これにより、いくつのネットワークを作成できるかがわかります。したがって、「h」ビットを1つだけ借りると、2 ^ 1 = 2になります。したがって、現在のオクテットはnnnnnnnn.nnnnnnnn.nhhhhhhh.hhhhhhhhのようになります。オクテットのビット値は128 16 32 16 8 4 2 1になるため、新しいネットワークビットは.128を使用しています。したがって、ネットワークは172.18.0.0 / 17および172.18.128.0 / 17になります。

ネットワークを8つの小さなネットワークに分割するタスクが与えられた場合、2 ^ n = 8を見つける必要があります。2^ 3 = 8なので、3つのホストビットを借用します。これで、ビットはnnnnnnnn.nnnnnnnn.nnnhhhhh.hhhhhhhhのようになります。ネットワークビットは現在32ビットを使用しているため、ネットワークは32ビットになります。したがって、4つのネットワークは172.18.0.0 /19、172.18.32.0 /19、172.18.64.0 / 19などとなり、最後まで到達します。 172.18.224.0/19のネットワーク。

別の例では、10.0.0.0 / 8を4つのサブネットに分割します。繰り返しますが、ビットはnnnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhhのようになります。次に、2 ^ n = 4を見つける必要があります。2^ 2 = 4なので、2つのホストビットを借用し、それらをネットワークビットとして使用します。したがって、オクテットはnnnnnnnn.nnhhhhhh.hhhhhhhh.hhhhhhhhのようになります。そして、ネットワークは10.0.0.0 / 10と10.64.0.0 / 10になります。

ネットワークアドレスがわかったので、ブロードキャストアドレスとサブネットごとのノード数を見つけるのは簡単です。たとえば、最初の172.18.0.0ネットワークは172.18.0.0 / 17で、次のネットワークは172.18.32.0 / 17です。ブロードキャストアドレスは常にサブネットの最後のアドレスなので、172.18.0.0ネットワークの場合は172.18.31.255になります。172.18.32.0ネットワークの場合、172.18.63.255になります。

ノードの数を調べるには、長くて難しい方法で2 ^ hかかります。Hは、ホストのビット数です。したがって、172.18.0.0 / 17ネットワークの場合、15ビットのホストビットがあるため、2 ^ 15 = 32768になります。

全体的なサブネット化がどのように行われているかはわかりませんが、いくつかのショートカットがあります。サブネットの数を知りたい場合は、128 64 32 16 8 4 2 1のいずれかのビット値を取得し、256で除算します。上記の例では、8つのサブネットが必要です。あなたがしなければならないのは、256/32 = 8です。その後、32値ビットを使用しているので、ネットワークを32でカウントします。

ネットワークごとのノードの数を見つけるには、数を2倍にするだけです。/ 30には合計4つのホストがあり、2つが使用可能です。/ 29には8、/ 28には16などがあります。最後のオクテットは実際にはビット値で移動するため、128 64 32 16 8 4 2 1になります。これはホストの合計数であり、2を引いた場合は使用可能なホストの数になります。

その後、/ 23に到達すると、前のオクテットから2倍になります。/ 24は256、/ 23は512、/ 22 1024です。1ビット値を増やすたびに2倍になります。


簡単にフォローできます。しかし、再び、サブネット化の仕組みを知っています。
ヘネス

-1クラスレスという言葉を使用したことがないので、彼の質問に明確に答えていないことは明らかです
-barlop

@Hennesサブネット化を理解しているため、私も簡単にフォローできます(笑)。しかし、私は完全に混乱した人々のために説明を使いました、そして、上の説明の後にそれを拾うことができました。
-DrZoo

1
@barlop質問は、回答を投稿してから10分後に編集されました。回答を投稿するときに存在しなかった質問に対処することはできません。現在、質問は複数の質問を行っていますが、これは技術的には質問のガイドラインに反しています。
DrZoo

@DrZoo罰金、あなたの答えから削除された投票
barlop

2

続き:https : //serverfault.com/questions/49765/how-does-subnetting-work/49836#49836

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

あなたが持っている:

  • 12台のサーバーコンピューターですが、最大50%増加する可能性があります
  • 9つのスイッチ
  • 97クライアントコンピューター

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

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

  • 18台のサーバーコンピューター-2番目の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は6ビット長の「100000」です。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つのルーター間で厳密にポイントツーポイントであるリンク。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.