IPアドレスのホスト部分のすべてのゼロをホストに使用できないのはなぜですか?


21

ネットワークがある場合、83.23.159.0/24254の使用可能なホストIPアドレスがあることを知っています。

83.23.159.0      (in binary: host portion all zeros) is the subnet address
83.23.159.1-254  are host addresses
83.23.159.255    (in binary: host portion all ones) is the broadcast address

ブロードキャストアドレスの使用方法は理解していますが、サブネットアドレスの用途はわかりません。IPパケットの宛先アドレスがサブネットアドレスに設定される理由がわからないので、サブネットがAN IPフローのエンドポイントにならない場合、サブネット自体にアドレスが必要なのはなぜですか?私には、このアドレスをホストアドレスとして使用できないようにするのは無駄に思えます。

要約すると、私の質問は次のとおりです。

  1. IPパケットの宛先は、サブネットIPアドレスに設定されていますか?
  2. はいの場合、どのような場合に、なぜですか?
  3. いいえの場合、使用するホスト用にそのアドレスを解放しないのはなぜですか?

2
ifconfig24ネットのホストアドレスを0または255に設定しても不満はありません。使用してみてください。
ott--

2
やった。.0で機能するようです。ただし、古いソフトウェアが破損する可能性があります。.255は、ブロードキャストを必要とするプロトコルを使用しない場合にも機能します。すべてのコンピューターで永続アドレスを使用してARPテーブルを手動で構成すると、セットアップできると思いますが、問題ありません
ヘネス


1
私はそのジョンに同意しません。私はそれを再確認しましたが、尋ねられた特定の質問には対応していません。どちらかというとエッジケースです。
ヘネス

1
この質問は現在、または新しいネットワークエンジニアリングサイトでも行われています。それらの回答(http://networkengineering.stackexchange.com/questions/11200/what-is-the-purpose-of-network-address-aka-subnet-address)には、Server Faultの投稿にはまだない情報があります
ヘネス14

回答:


12

IPパケットの宛先は、サブネットIPアドレスに設定されていますか?

はい。有効なIPなので、使用できます。

はいの場合、どのような場合に、なぜですか?

/ 24内の255個の使用可能なIPの1つです。

いいえの場合、使用するホスト用にそのアドレスを解放しないのはなぜですか?

あなたが持っている場合は、古代のハードウェアを、あなたはそれが最初またはネットワークアドレスとして最後のアドレスを使用しているかどうかを確認する必要があります。(マスクFF.FF.FF.00のネットワークの場合は.0または.255)

これにより、そのIPをスキップすることをお勧めします。そして、ずっと前に学んだ習慣は無視するのが難しいです。

そして、背景を知らない人は、「他の人もそれを使用しないので、それを使用するのは間違っているに違いない」または「0」が最初の数になり得ることに気付かないため、それを使用しません。

[編集] Grezzoは、WindowsネットワークGUIがこの設定を「助けて」防いでいるWindows XPでテストしました。Windows 7にも同じ動作があります。それから、Windows以外のホストで試してみました。Windowsを使用する場合は、IPconfigを使用してネットワークを手動で構成して、すべてゼロに設定する必要がある場合があります。

192.168.1.0_on_win7 192.168.1.0_on_FreeBSD

[編集2]

これで長く働くほど、混乱します。

Rfc4632-クラスレスドメイン間ルーティング はそれを禁止しているようには見えませんが、明示的に許可していません。

このServerFaultの投稿には、「歴史的な理由により、多くのOSが最初のアドレスをブロードキャストとして扱います。たとえば、ローカル(/ 24)ネットワーク上のOS X、Linux、およびSolarisからxxx0をpingすると、応答が返されます。デフォルトでは最初のアドレスですが、SetIPUseZeroBroadcast WMIメソッドを使用して有効にすることができる場合があります。すべてのWindowsネットワークでホストアドレスとして.0を使用して逃げることができるかどうか疑問に思います。」

それは同じ質問ですが、答えではありません。

ネットワークアドレスは、ルーティングテーブルでも使用されます。しかし、そのためになぜ機能しないのかはわかりません。ルーティングテーブル内の同じ表記は、適切なネットワークにルーティングされます。適切なネットワークに接続すると、IP 0のPCに到達します。

(これは192.168.1 / 24のすべて
です。192.168.0/ 23を使用した場合、192.168.1.0は範囲の中央で有効で安全な値になります)

[編集3]

同じ質問へのもう1つのリンク。スタック交換ではやや人気があるようです:

/superuser/379451/why-can-a-network-address-not-be-a-valid-host-address

そして1つの考え:

Destination_IPは、ルーティングテーブルのエントリと比較される前に、おそらくネットワークマストとAND ed(ハードウェアでの高速操作)されます。しかし:

(セミランダムIP)192.168.0.42および255.255.255.0は192.168.0.0を生成しますが
、192.168.0.0および255.255.255.0も192.168.0.0を生成します


[編集4-この回答が書かれたずっと後- この新しい情報のために投稿全体を書き直す必要があるかもしれない]

RFC923は3ページに次のように述べています。

  In certain contexts, it is useful to have fixed addresses with
  functional significance rather than as identifiers of specific
  hosts.  When such usage is called for, the address zero is to be
  interpreted as meaning "this", as in "this network".  The address
  of all ones are to be interpreted as meaning "all", as in "all
  hosts".  For example, the address 128.9.255.255 could be
  interpreted as meaning all hosts on the network 128.9.  Or, the
  address 0.0.0.37 could be interpreted as meaning host 37 on this
  network.

ネットワークエンジニアリングサイトで@ylearnを引用

私はから来ているの最初の文書と信じRFC950参照RFC943(廃止RFC923を超えるが、特殊なアドレスに同じ言語を使用していますが):

     It is useful to preserve and extend the interpretation of these
     special addresses in subnetted networks.  This means the values
     of all zeros and all ones in the subnet field should not be
     assigned to actual (physical) subnets.

明確にするために、xxx0 / 24 ホストの有効なIPアドレスであると言っていますか?その場合、なぜ(IPアドレスを255.255.255.0のネットマスクで192.168.1.0に設定しようとすると)Windows XPは「IPアドレスとサブネットマスクの組み合わせが無効です。すべてのビットがIPアドレスのホストアドレス部分IPアドレスとサブネットマスクの有効な組み合わせを入力してください0に設定されている。
グレッゾ

3
Windowsが間違っています。(または、あまり力を入れずに言った:Windowsは、システムの任意の組み合わせで動作するように過度に慎重です)。Windows 7システムでこれを試したところ、同じエラーが発生しました。クリーンなFreeBSDシステムをインストールし、動作する場所でテストしました。(これを投稿に追加します)
ヘネス

ありがとう、本当に助かりました。OS XのGUIでもそれを実行できないことを追加したかっただけですが、ifconfigはそうだと思います。m0ntassarの答えがなぜ投票数を増やしたのか理解できません-私の質問に答えようともしません もう一つ; 「古代のハードウェアをお持ちの場合、ネットワークアドレスとして最初または最後のアドレスを使用しているかどうかを確認する必要があります」と言う場合、ブロードキャストアドレスを意味しますか。
グレッツォ

はい、ブロードキャストアドレスを意味しました。くそー、「5分以上前のコメントを編集」ボタンはどこにありますか。
ヘネス

甘い、私はちょうど.0と.255にpingを試みました。両方の時間で私のPS3は.65から応答しました(他のすべてはワイヤレスなので、最初にそこに着いた理由だと思います)。なぜ(通常は)実際のホストアドレスにも使用すべきではありません。
グレッツォ

15

ホスト部分がすべてゼロのアドレスは、特定のホストではなくネットワーク自体を指します。

歴史的に、このゼロホストアドレスは代替ブロードキャストアドレスとして機能しており、デバイスは引き続きそのように応答します。

したがって、他のいくつかの答えに同意する必要があります。いいえ、ゼロは完全に使用可能なホストアドレスではありません。254を超えるアドレスが必要な場合は、より大きなサブネットを作成する必要があります。

私のLinksysルーターを見てください。アドレスはの.1pingに応答し.0ます。(ネットマスクは255.255.255.0ですので、最後のオクテットはホスト番号に対応します。)

webserver:~# ping  192.168.1.0
Do you want to ping broadcast? Then -b
webserver:~# ping -b 192.168.1.0
WARNING: pinging broadcast address
PING 192.168.1.0 (192.168.1.0) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.46 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.812 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.819 ms

.0あるホストにアドレスを割り当てた場合、その応答もルーターが鳴らない限り、pingを実行できません。ご覧のとおり、そのルーターのバージョンのようないくつかのツールはブロードキャストとしてping扱います0

すべてのプロトコルスタックおよびそのような曲げの影響を受ける他のソフトウェアにパッチを適用する場合は、ルールを曲げることができます。それ以外の場合は、ルールに従ってください。

適例。

私は、14スロットシャーシに組み込まれたネットワークノードを設計している会社で働いていました。複数の種類のカードで多数の独立したOSイメージを実行し、すべてバックプレーン経由で通信しました。バックプレーン上に、127.X.0.YスロットXのノードYの内部IPアドレス(すべて1から番号が付けられている)の規則でネットワーク設定がありました。

基本的に、ループバックアドレスは独自の目的でサブネット化しました。それを機能させるには、あちこちでLinuxカーネルにパッチを適用し、IIRCに少しのユーザースペースをパッチする必要がありました。

そのネットワークはボックス内でのみ使用され、ループバックを必要とするほとんどのプログラムは127.0.*ネットワーク(および実際には特定のアドレス127.0.0.1)を使用するため、正常に動作し続けたため、すべてがクールでした。


7

実際には、ネットマスクに依存します。たとえば、ネットワーク83.23.159.0/23の場合、83.23.159.0は完全に使用可能なIPアドレスです。


3
+1-83.23.158.255も有効なホストアドレスです。サブネットマスクを考慮せずに、0番と255番のルールにハングアップします。
joeqwerty

1
xxx0アドレスは/ 24未満のネットマスクで有効であることは承知していますが、私の質問では/ 24ネットマスクを指定しているため、あなたは私の質問に答えていません。私は、最後のカルテット/バイトのすべての0または255について話したのではなく、IPアドレスの「ホスト部分」のすべての0または255を言いました。これには、ネットマスクが考慮されます。
グレッツォ

2
@Grezzo簡単な答え:非CIDRとレガシーなものは.0で壊れます、MSはそれを完全に禁止します。しかし、IPv6が差し迫っているので、なぜわずらわしいのか ;)
Sammitch

2
質問は実際にはドット表記の数秘術ではなく、任意の幅のサブネットのホストアドレス0のステータス/意味に関するものなので、これは実際には答えではありません。
カズ

2
この回答になぜ多くの賛成票があるのか​​わかりません。83.23.159.0/23は「技術的に」有効なネットワークではありません。23マスクを使用した83.23.159.0は、実際には83.23.158.0/23ネットワークの真ん中にあるipです。問題は、「IPの最後に.0を使用できない理由」ではなく、「ホスト部分がすべてゼロのアドレスを使用できない理由」でした。あなたの例では、「すべてのホストゼロ」アドレスは83.23.158.0になります。他の回答で述べたように、これは歴史的には使用できないアドレス(「ネットワークアドレス」)であり、一部のOSでは動作する可能性がありますが、試して使用することはお勧めできません。
マット

3

ここでは、基本的なネットワークと少し混乱しているように聞こえます。

応答の1つで参照される「古代のハードウェア」はIPサブネットゼロを使用しません-/ 24 CIDRまたは255.255.255.0サブネットマスク用に設定されたネットワークでIPアドレスxxx0を使用することは、まったく別の問題です。

IPサブネットゼロ

  • 古いハードウェアはIPサブネットゼロを使用しません。つまり、マルチサブネットネットワークシステムで最初のサブネットを使用しません。したがって、/ 23または255.255.254.0ネットワークでは、サブネットXXX0とそのすべてのアドレスは使用されません。最新のルーターにはこの制限はありませんが、必要に応じて、サブネット0を使用しないこの古いモデルIEを使用するように構成できます。

サブネット上の使用可能なホストIPアドレス

  • 基本的なネットワーク:
    • / 24の場合、つまり255.255.255.0のサブネットマスク
    • xxx0はネットワークアドレスとして予約されています。ルーターおよびルーティングプロトコル(EIGRP、RIP2など)は、ネットワークアドレスを使用して、ネットワークネットワーク境界内およびネットワークネットワーク境界を越えてパケットを移動するためのネットワークセグメントを定義します。
    • xxx255はブロードキャストアドレス用に予約されています
    • 253の使用可能なIP番号を残すために、ルーターでアドレス.1または.254を使用するのが一般的な方法です。

ネットワークアドレスとブロードキャストアドレスの両方が予約されており、(現在および以前のネットワーク標準に​​より)デバイスに割り当てることはできません。/ 24システムのホストアドレスにxxx0を使用するのは間違っています。Linuxが使用を許可しても、それが正しいことを意味するわけではありませんが、それはLinuxがあなたが何をしているのかを知っていると考えることを意味します。

システムがホストにxxx0をIP4アドレスとして割り当てさせており、動作しているように見える場合-特定のホストがそのネットワーク上の任意のデバイスをターゲットとするすべてのトラフィックを受信して​​いる可能性があり、そのためネットワークはおそらく最適に動作していません。


1
xxx0はネットワークアドレスとして予約されています(グローバルアドレスまたはサブネット全体へのポインタと考えてください)」と言っていますが、実際に使用される理由は説明されていないため、ホストに使用できない理由は説明されていません
グレッツォ

2
投稿を更新しました。結論として、デバイスへのネットワークアドレスの割り当ては仕様に反するものであり、小さなスタブネットワークで使用することで逃げることができても、ルーターがソフトウェアの更新を取得する場合(またはルーターを変更する場合は、 )デバイスまたはネットワーク全体が正常に機能しなくなる可能性があること。
TheSteven

3

RFC 1122(「インターネットホストの要件-通信層」)で禁止されています。

IPアドレスは、<Host-number>、<Network-number>、または<Subnet- number>フィールドのいずれに対しても値0または-1を持つことは許可されていません


1
それが行く限り本当。しかし、アドバイスされているように実際にセクション3.3.6に進むと、完全な説明が得られます。
マイケルハンプトン

@MichaelHampton BSD 4.2はブロードキャストとして0を使用するためですか?
グレッツォ14

3
@Grezzoかなり。80年代は死ぬことはないので、これにこだわっています。
マイケル・ハンプトン

0

実際、答えはサブネット化の基本です。サブネットの「すべてゼロ」のIPとネットワークIDを組み合わせて、パケットの送信先を計算します。

この例では、255.255.255.0のサブネットがあります。TCP / IPプロトコルを知っているデバイスは、IPアドレスと組み合わされたネットマスクを使用して、パケットがローカルネットワーク宛てであるか(論理AND演算を実行するか)、またはゲートウェイ/ルーターを介して送信する必要があるかどうかを計算します。

したがって、IPを使用できない理由は、設計によってネットマスクと共にネットワーク境界を「定義」するためにすでに使用されているためだと思います。


TCP / IPプロトコルを知っているデバイスはすべて、IPアドレスと組み合わせたネットマスクを使用して、パケットがローカルネットワーク宛てかどうかを計算します(論理AND演算を実行)」と言いますが、83.23.159.0と255.255のAND .255.0と83.23.159.1と255.255.255.0のANDの結果は同じ結果(83.23.159.0)であるため、この計算を使用して、ホストが.0アドレスを持っている場合でもネットワークまたはルーター宛てかどうかを判断します
Grezzo

0

NetworkEngineeringから回答を再投稿するように要求されたので、このサイトを少し変更して再投稿します。

RFC919、それがネットワークアドレスの一般的な受け入れの参照を行います

However, as a notational convention, we refer to
networks (as opposed to hosts) by using addresses with zero fields.
For example, 36.0.0.0 means "network number 36"

これにより、誰かが「10.1.2.0」をネットワーク上のホストではなくネットワークとして言及した場合の理解を明確にするための規則が提供されます。

そこから、IPアドレスでの「0」の使用はRFC923で定義され、次のRFCで引き継がれました。

Special Addresses:

  In certain contexts, it is useful to have fixed addresses with
  functional significance rather than as identifiers of specific
  hosts.  When such usage is called for, the address zero is to be
  interpreted as meaning "this", as in "this network".  The address
  of all ones are to be interpreted as meaning "all", as in "all
  hosts".  For example, the address 128.9.255.255 could be
  interpreted as meaning all hosts on the network 128.9.  Or, the
  address 0.0.0.37 could be interpreted as meaning host 37 on this
  network.

この例では、アドレスのネットワーク部分に0を使用することにより、現在のネットワーク(0.0.0.37)上の特定のホストを提供しますが、実際には反対のケース(アドレスのホスト部分に0)を明確にしません。ただし、「0」を「this」として定義しました。

RFC1060アドレス「0.0.0.0」は明確に「このネットワーク上でこのホスト」として説明されていました:

     (a)   {0, 0}

        This host on this network.  Can only be used as a source
        address (see note later).

アドレスのホスト部分のゼロはすべて「このホスト」を意味するため、論理的にはホストアドレスとしては使用できません。

質問に直接回答することに戻る:

  1. IPパケットの宛先は、サブネットIPアドレスに設定されていますか?
  2. はいの場合、どのような場合に、なぜですか?
  3. いいえの場合、使用するホスト用にそのアドレスを解放しないのはなぜですか?

RFCで見つけたものによると、これは使用すべきではありません。私はそれが私が望むほど明確に指定されていないことを認めますが、それは多くの標準で一般的です。ある点で基準がやや堅い場合、業界は一般に受け入れられている解釈に「落ち着く」ように見えます。

さらに、RFCソフトウェアの内容に基づいて、このアドレスが特定のホストではなくネットワークのアドレス指定に使用されると想定するように記述される場合があります。または、文字通り「ループバック」のようなもの(つまり、指定されたネットワーク上のこのホスト)。

それでは、なぜ一部のOSでは使用が明らかに許可されているのでしょうか?開発者の時間/リソースに帰着することや、妥当性チェックを追加することを誰も本当に考えていないことが多くのことのように想像できます。より大きなサブネット(/ 23以上)には.255および.0の有効なIPアドレスが含まれる(つまり、10.1.2.0 / 23には両方の有効なIPが含まれるため) 10.1.2.255および10.1.3.0のアドレス)。一部の組織では、最新のサブネット化を正しくサポートしていないソフトウェアの奇妙な問題を回避するために、より大きなサブネットでの有効なアドレスの使用も回避しています。

その1つのIPアドレスを解放しない理由については、単純にコスト/利益になります。サブネットごとに1つのIPアドレスを取得するためにこの変更を行うには多くの時間と労力がかかりますが、追加のIPアドレスが必要な場合、1つのアドレスで十分ですか?2つ目のサブネットを追加したり、現在のサブネットを拡大したりすることははるかに簡単です。1つのソフトウェアではなく、多くのアドレスを使用できるようになります。

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