web-dev-qa-db-ja.com

サブネットは常に連続した1ですか?

255.255.255.0などのサブネットマスクの背後にある基本的な前提を理解しています。しかし、私が見たすべてのサブネットの例は(左から右に)連続した1(HIビット)でした。たとえば、255.255.0.0/16)は次のオクテットに変換されます。

11111111 . 11111111 . 00000000 . 00000000

I 信じるこれらのビット必須は連続している、というのはサブネット化の全体のポイントはホストIDと利用可能なデバイスIDの範囲を導き出すことだからです。しかし、私は疑問に思っています。たとえば、255.17.255.0のサブネットマスクがあったら、

11111111 . 00010001 . 11111111 . 00000000
  • これは起こりますか?または、隣接する1がなければサブネットは存在できないのでしょうか?もしそうなら、なぜですか?
  • そうでなければ、これが可能であるなら、なぜあなたは(いくつかの具体的な例)をしますか?
25

[〜#〜] rfc [〜#〜] のセクション3.1は、クラスレスドメイン間ルーティングで許可されるマスクを示しています。ルーティングが正しく機能するには、ビットが隣接している必要があります。

また、論理的に考える場合、奇妙なランダムネットワークマスクを使用しても意味がありません。

18
Sami Kuhmonen

はい、簡単に考えると、サブネットマスクは最初は常に1です。サブネットサイズインジケータのバイナリ表現の先頭に1がない場合、サブネットサイズインジケータは、最新の標準を使用した適切な「サブネットマスク」ではないと言えます。

RFC 1219 は、以前のRFC 950が非連続ビットを許可することを示しています。実際、 RFC 950 15ページ (セクション3)には、「連続していないサブネットビットを示している」例がありますが、そのようなサブネットをCIDR表記に変換する方法はありません。CIDRスタイルの表記IPv6が使用しているものです(少なくとも RFC 1884ページ7 、セクション2.4の最初の文以降)。したがって、IPv6ネットワークで非連続ビットが広くサポートされることはありませんでした RFC 1219 の方法では、「サブネットビット(マスク= 1)は、最上位ビットから最下位ビットに向かって割り当てられる」と指定されています。 ( RFC 4632セクション3.1 は、Samiの回答で言及されており、CIDR表記を論じている公式の標準を指しています。)

RFC 1878 2ページ は、/0を除くすべてのIPv4サブネットの標準の「サブネットマスク」表記を示しています。

ただし、Samiの回答について少し詳しく説明し、「理由」を調べます(質問で求められていた具体的な例を示します)...

一部のプロ仕様のシスコ機器は、ビットを反転させる「ワイルドカードマスク」と呼ばれるものをサポートしています。したがって、通常のサブネットは00000000.00000000.00000000.11111111と呼ばれるもので表すことができます。

シスコのワイルドカードマスクを使用すると、すべてのゼロを最初にする必要があるという規則はありませんでした。したがって、00000000.00000000.00000000.11111110を使用できます。

その結果、すべての偶数番号のIPアドレスを含むグループが作成されます。

これは、シスコのトレーニングでカバーされていたため、実際に知っておくことが重要でした。そのため、シスコのプロフェッショナル認定資格の審査プロセスでは、そのようなことについて質問される場合があります。

しかし、ほとんど役に立たなかったと思います。偶数アドレスまたは奇数アドレスを使用してネットワークを半分に分割する代わりに、通常のサブネットを半分の大きさにすることで、小さい番号のアドレスと高い番号のアドレスを使用してネットワークを半分に分割することができます。

連続していないビットを含むワイルドカードマスクはそれほど有用ではなく、操作するのがより困難になる可能性があります。サブネットマスクビットが1に設定されている点は、ビットがデバイスがどのサブネットにあるかを識別するのに役立つということです。これらのビットをアドレス全体に広げるのではなく、アドレスの先頭でそれらをうまくグループ化する理由はありません。 。その結果、これらのタイプのマスクをサポートすることにより、複雑さが増し、大きなメリットはありませんでした。

シスコは、「ワイルドカードマスク」のサポートを最終的に廃止したため、そのような非従来型のサブネットマスクに意味がないことに最終的に同意したと思います。古いPixファイアウォールは「ワイルドカードマスク」をサポートしますが、新しいASAユニットは標準の「サブネットマスク」を代わりに使用します。

多くのソフトウェアは新しいトレンド/標準に従い、そのようなネットワーク設計を拒否するため、マスクに不連続な「サブネットビット」を含むネットワークを作成しようとはしません。古いソフトウェアを使用していたとしても、ネットワークを簡単に変更して、ネットワークを再設計することなく新しいソフトウェアを使用できるようにしたいと思うでしょう。したがって、隣接する「サブネットビット」が唯一の方法です。

テストで質問された場合、すべての1がアドレスの先頭にある必要があると私は自信を持って言います。これは、正気のテスターであれば、大多数の学生がこの日と年齢で学習することを望んでいることです。

28
TOOGAM

RFC 95 2.2章で:

 To support subnets, it is necessary to store one more 32-bit
  quantity, called my_ip_mask.  This is a bit-mask with bits set in
  the fields corresponding to the IP network number, and additional
  bits set corresponding to the subnet number field.

 The code then becomes:

   IF bitwise_and(dg.ip_dest, my_ip_mask)
                               = bitwise_and(my_ip_addr, my_ip_mask)
         THEN
             send_dg_locally(dg, dg.ip_dest)
         ELSE
             send_dg_locally(dg,
                    gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))

したがって、この提案は、隣接するビットを気にしない単純なビット操作に関するものでした。

1985年には、CPUとメモリがはるかに制限されたため、より複雑な操作は単に時間に収まりませんでした。

第3章でさらに明確になります。

また、ネットワークでは3ビットのサブネットフィールドが使用されています(01011000)。つまり、アドレスマスクは255.255.255.88です。

ただし、これらのRFCは古くなっているようです。たとえばWindows 7 SP1では、このようなサブネットマスクを設定することはできません。

Contiguous subnet mask required on Windows 7

WindowsでもXP SP2、これは不可能でした:

Subnet mask Windows XP SP2

ただし、Windows 98クローンReactOSでは、「奇妙な」ネットマスクを設定できます。

ReactOS subnet mask

2
Thomas Weller

@Sami Kuhmonenの回答に同意します。

RFCのセクション3.1は、クラスレスドメイン間ルーティングで許可されるマスクを示しています。ルーティングが正しく機能するには、ビットが隣接している必要があります。また、論理的に考える場合、奇妙なランダムネットワークマスクを使用しても意味がありません。

ただし、それが望ましくない場合や許可されていない場合でも、連続しない1のサブネットマスクを定義することは可能です。この背後にある理由:
ネットワークIDおよびホストIDは、バイナリ演算ANDおよびXORを使用して、IPアドレスおよびサブネットマスクから計算されます。他のすべては無関係です。

私はその数年前にWin 2000でテストしましたが、動作します。両方のコンピューターに255.160.0.0マスクがありました。それらはルーターのないLANにあったので、ルーターの動作については言えません(通常、ルーターのマスクは、それを拒否するWebインターフェイスでのみ設定できます)。
このような「無効な」サブネットマスクをネットワーク設定の対応するフィールドに入力することもできません。 GUIはそれを取ることを拒否します。しかし、レジストリで直接変更することで、カンニングすることができます。その後、リブートするか、NIC= enableを無効にして有効にし、変更をアクティブにします。
そのすべての目的:ええと、おそらくなし。

1
Tobias Knauss