1

問題:
1-クライアント1はサブネットAのIPをリッスンします
。2-サーバーはサブネットBにブロードキャストメッセージを送信します
。3-クライアント1もサブネットAにあるIPを介してこのメ​​ッセージを読み取ります。-
メッセージがブロードキャストされない場合、そのような状況はありません。しかし、ユニキャスト。

単一のネットワークインターフェイスで定義されているいくつかのIPとポートをリッスンするJavaアプリケーションを作成しようとしています。以下に私のネットワーク構成の例を示します。

netsh interface ip>show address

Configuration for interface "Local Area Connection"
DHCP enabled: No
IP Address: 22.108.131.1
SubnetMask: 255.255.255.0
IP Address: 22.108.132.1
SubnetMask: 255.255.255.0
IP Address: 22.108.133.1
SubnetMask: 255.255.255.0
InterfaceMetric: 0

データグラムチャネルを開いて、これらのIPアドレスにバインドしています。IPごとに、チャネルからのメッセージに応答するための異なるスレッドがあります。

つまり、サーバーはUDPブロードキャストメッセージをに送信します

22.108.131.25522.108.132.255
など

ただし、たとえば22.108.131.1をリッスンするために作成されたスレッドでは、22.108.132.255宛てのブロードキャストメッセージを受信して​​います。Wiresharkを使用して着信メッセージを確認すると、メッセージは22.108.132.255として正しく届くと表示されますが、私のアプリケーションでは、メッセージのエンドポイントがリスニングスレッドである22.108.131.1であることがわかります。

最初は私の実装が間違っていると思いましたが、もっと驚くべき問題は非ブロードキャストメッセージの着信です。つまり、メッセージの宛先が22.108.131.1の場合、22.108.132.1はそれを受信しません。これは、明らかにそうあるべきです。しかし、私が理解していないのは、それがブロードキャストメッセージに関するものである場合、なぜそれが本来のように実行されないのかということです。

問題の原因がWindowsの複数のIP構成であるかどうかはわかりません。しかし、私が観察しているのは、オペレーティングシステムがサブネットAのブロードキャストメッセージをサブネットBに配信することです。

手がかりになるかもしれないもう一つのことはこれです、私は22.108.133.1も定義しましたが、私は上記の22.108.131.1と22.108.132.1についてのみ話しました。そのIPのデータグラムチャネルを開かなくても、他のIPからそのサブネットのブロードキャストメッセージを読み取ることができます。

だから私はここで何かが欠けていますか?それとも、Windowsのネットワーク処理の性質ですか?

4

1 に答える 1

0

255 で終わる IP は、ネットワーク内のすべてのノードで受信されるブロードキャスト メッセージです。

于 2013-01-25T00:52:13.397 に答える