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


25

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

11111111 . 11111111 . 00000000 . 00000000

サブネット化のポイントは、ホストIDと利用可能なデバイスIDの範囲を導出することなので、これらのビット連続している必要がある思います。しかし、たとえば、または、のサブネットマスクを持っているかもしれません。255.17.255.0

11111111 . 00010001 . 11111111 . 00000000
  • これは起こりますか?または、連続した1なしでサブネットが存在することは不可能ですか?もしそうなら、なぜですか?
  • それ以外の場合、これを行うことが可能であれば、なぜ(いくつかの具体的な例)だろうか?

@MSaltersご存知のように、自動コメントが「...の重複の可能性」と言うように変更されたため、手動でコメントを入力する必要がなくなりました。;-)
クリスジェスターヤング

簡単な答え:はい、あなたは正しいです。
タコ

回答:


18

RFCのセクション3.1は、クラスレスドメイン間ルーティングで許可されるマスクを示しています。ルーティングが適切に機能するには、ビットが連続している必要があります。

また、論理的に考えるとき、奇妙なランダムネットワークマスクを持つことは実際には意味がありません。


28

はい、考えられる簡単な方法は、サブネットマスクは常に最初は1であるということです。subnet-size-indicatorのバイナリ表現の先頭に1がない場合、subnet-size-indicatorは現代の標準を使用した適切な「サブネットマスク」ではないと言えます。

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

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

ただし、サミの答えについて少し詳しく説明し、「なぜ」を調べます(具体的な例を使って、質問が尋ねたように)...

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

シスコのワイルドカードマスクでは、すべてのゼロを最初に実行する必要があるというルールはありませんでした。だからあなたは使うことができます00000000.00000000.00000000.11111110

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

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

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

連続していないビットを含むワイルドカードマスクはそれほど有用ではなく、使用するのがより困難になる可能性があります。サブネットマスクビットが1に設定されている点は、ビットがデバイスがどのサブネットにあるかを識別するのに役立つと言うことです。 。その結果、これらのタイプのマスクをサポートすることは、それほど大きな利益をもたらさずに複雑さを増すことになりました。

シスコは、最終的に「ワイルドカードマスク」のサポートをやめたため、このような非伝統的なサブネットマスクに意味がないことに同意したと思います。 。

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

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


+1-末尾にすべて1が付いていないワイルドカードマスクが使用されているのは、誤って入力されたマスクのみです。
マークヘンダーソン

2

RFC 950では、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では、このようなサブネットマスクを設定することはできません。

Windows 7で必要な連続したサブネットマスク

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

サブネットマスクWindows XP SP2

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

ReactOSサブネットマスク


1

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

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

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

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


共有していただきありがとうございますが、これはスタンドアロンの回答とはみなされません。それはサミ・クフモネンの答えに対するコメントであるべきです。
-agtoever

2
コメントするには長すぎます...また、回答としてマークされるとは思いません。
トビアスナウス

@agtoever:詳細を編集および追加した後、他の回答の一部ではない多くの情報を持っているため、今ではスタンドアロンの回答として適格だと思います。
トビアスナウス

ただし、「1つの実装で動作する」は良い答えではありません。また、「1つのOSで動作する」だけでなく、1つの特定のPCを(重要な)1つのネットワークでテストしたようです。つまり、Windows 2000のサブネットルーティングコードが実際に機能するかどうかを確認していないため、ネットワークIDが正確に必要なのです。隣接していない2つの255.160.0.0ネットワーク間をルーティングできますか?
–MSalters

@MSalters が1つの実装で機能するということは、それが機能することを意味します。私は、構成のすべての可能なOSについて話すと主張しませんでした。また、あるPCから別のPCにパケットがどのように届くと思いますか?コンピューターはルートを知る必要があります。したがって、ターゲットコンピューターが同じサブネットにある(パケットを直接送信する)か、遠くにある(構成されたゲートウェイにルートを照会する)かを計算する必要があります。//いいえ、これらのサブネットマスクは使用するためのものではないため、このようなルーティングができるとは思いません。私はそれが機能したが、異なるサブネットなしでケースを示しました。作品は、あまりにも、誰が知っているかもしれないことを...
トビアスKnauss
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.