ブロードキャストアドレスについて

こんにちは、ブロードキャストについて疑問があるので質問させてください。
例として、
マシンA 192.168.1.141/22 
マシンB 192.168.1.142/22
マシンC 192.168.2.102/22
マシンD 192.168.3.103/22
としているマシンがあるのですが、
マシンBから、192.168.1.255 というあて先でパケットを投げたところ、
マシンA、マシンBともこのパケットが流れたことを確認できました。
マシンCから、192.168.2.255 というあて先でパケットを投げたところ、
マシンCでのみパケットが流れたことが確認できました。
この環境の場合、ブロードキャストアドレスは 192.168.3.255 ですよね?
192.168.2.255 というアドレスは、192.168.2.xxxだけのブロードキャスト
なのでしょうか。192.168.1.xxxにはパケットは流れないのでしょうか。
192.168.3.255との違いがわかりません。
ご指南お願いいたします。

名前: 
あまる
日時: 
03/04/07 14:14

コメント

>この環境の場合、ブロードキャストアドレスは 192.168.3.255 ですよね?

そうです。

>192.168.2.255 というアドレスは、192.168.2.xxxだけのブロードキャスト
>なのでしょうか。

いえ,そうではなくて,ユニキャストアドレス,つまり,
ブロードキャストではなく,特定のノードを指すアドレスとなります。
ビット列に直して考えると,
192.168.2.255/22というアドレスは,
ネットワーク番号:11000000.10101000.000000
ホスト番号:10.11111111
となります。
そして,ホスト番号部分のビットには0と1の両方がありますから,
ユニキャストアドレスだということですね。

>192.168.1.xxxにはパケットは流れないのでしょうか。

192.168.2.255は特定のノードを表すだけですから,
そのノードにパケットが届くだけです。

>192.168.3.255との違いがわかりません。

こちらはビット列にすると
ネットワーク番号:11000000.10101000.000000
ホスト番号:11.11111111
となり,ホスト番号部分のビットが全部1ですから,
ブロードキャストアドレスになります。

ただし,そのネットワーク上のマシンのネットマスク値設定が正しくないと,
ブロードキャストを正しく扱えません。
動きがおかしいようだったら,ネットマスク値の設定が誤っているかもしれません。
ちなみに,/22のネットマスク値は255.255.252.0です。
そこを確認した方がいいでしょう。

戸根勤さま
お返事ありがとうございます。ちょっと質問の文面にいたらないところがあった
ため、再び質問させてください。

[409]の例の環境に加え、
マシンC’192.168.2.112/22 から、192.168.2.255 にパケットを
投げたところ、マシンC、マシンC’にてパケットが受け取れました。
マシンA、B、Dではパケットは流れませんでした。
また、192.168.2.255 というアドレスが振られたマシンは存在しませんが、
pingはとおります。
この現象は、なにかで規定されているものなのでしょうか。
ご教授お願いいたします。

>マシンC’192.168.2.112/22 から、192.168.2.255 にパケットを
>投げたところ、マシンC、マシンC’にてパケットが受け取れました。

マシンC’192.168.2.112/22のネットマスク値が正しく設定されていれば,
192.168.2.255宛てにパケットを送ろうとすると,
まず,ARPでMACアドレスを調べて,そのMACアドレス宛てに
ユニキャストで送るはずですし,
それが,マシンC(192.168.2.102/22)に届くことはないはずなんです。
でも,それがマシンCに届くということは,
設定がおかしいのではないかと思うんです。

マシンCとC'のネットマスク値設定はどうなっていますか?

戸根勤さま
たびたびお手を煩わせてしまい、申し訳ありません。
ネットマスクの設定にミスがあるとは思えないため、もしかしたら
仕様?なのではと思い、GoogleでRFC関連のトピックスを検索したところ
ヒントになりそうなURLを見つけました。

RFC922
http://www2s.biglobe.ne.jp/~hig/rfc/Broadcast_Subnet.html
RFC1122
http://www2s.biglobe.ne.jp/~hig/tcpip/HostReq_Comm.html

まだ読んでいる途中なのですが、どうやら疑問は解決しそうです。
貴重なお時間を割いていただき、ありがとうございます。
RFCに対する認識を新たにしました。

>RFC922
>http://www2s.biglobe.ne.jp/~hig/rfc/Broadcast_Subnet.html
>RFC1122
>http://www2s.biglobe.ne.jp/~hig/tcpip/HostReq_Comm.html

この二つの仕様は,アドレスクラスが有効だった時代の考え方に基づいたもので,
今使われているクラスレス(CIDR)の仕様には適合しません。
つまり,このRFCのブロードキャストの部分の記述は,もう時代遅れなんです。

で,ひょっとしたらと思い,Windows 2000とXPで試してみたら,
やはり,Windowsの動きは変でした。
ネットマスクの値を255.255.0.0~255.255.252.0まで
変えて試してみたのですが,どのネットマスクでも,
192.168.2.255にpingするとブロードキャストになってしまいます。
192.168.1.255,192.168.3.255,192.168.4.255,192.168.5.255などは,
いずれもネットマスクの値によって,
ユニキャストとなるべきときはユニキャストとなり,
ブロードキャストとなるべきときはブロードキャストになるんですけどね。
ちなみに,Linuxは192.168.2.255も正しく動きます。

# これってFAQなのかしら,それとも新発見なのかしらん???