ネットワーク内のコンピュータにUDPメッセージを送信する

ネットワーク内のコンピュータにUDPメッセージを送信する

たとえば、ネットワーク内のコンピューターの IP アドレスと MAC アドレスを持っていて、そのコンピューターに UDP メッセージを送信したいとします。送信メッセージの MAC アドレスと IP アドレスを指定されたアドレスに初期化すると、ネットワーク ルーターがメッセージを受信したときに、同じ MAC アドレスを持つコンピューターにメッセージが渡されるはずです... 正しいですか?

私が書いたプログラムがこの制限に対処できないようなので質問します。同じネットワーク上にあるときはうまく動作しますが、そうでない場合は...まったく動作しません。

ありがとう

答え1

UDPソケットを開いて特定のターゲットにトラフィックを送信するアプリを作成する場合、気にする必要があるのはIPアドレスだけです。リスナーがレイヤー2で動作する場合、つまり両方のシステムが同じサブネット上にある場合、ネットワークが正しく設定されている限り、レイヤー3に移動してもまったく同じように動作するはずです。それでもうまくいかない場合は、動作することがわかっているものを使用してテストしてください。診断アプリはたくさんありますが、最も簡単なのはおそらくネットキャットそれをインストールしてこれを試してください:

ターゲットシステムで:

nc -l -u -p 1234 

ソースシステム上

nc -u -p 1234

ポート番号をアプリで使用している番号に変更すると、レイヤー 3 ネットワークが適切に設定され、そのポート上の UDP がブロックされていない場合は、ソースで入力した内容がすべて宛先コンソールに表示されるはずです。

ペイロードに MAC アドレスを埋め込むのであれば、それはそれでよいのですが、イーサネット フレームに埋め込まれた送信元 (および宛先) MAC アドレスはルーターによって変更されます。それが動作の仕組みです。会話の両端で MAC アドレスが同じままであるとアプリが想定している場合は失敗しますが、一般的にはネットワーク スタックをそこまで深く掘り下げるべきではありません。これを構築するのに何を使用していますか?

答え2

2 つのケースがあります:

1- 同じサブネット内のホストにパケットを送信する場合、パケットは宛先マシンの MAC アドレスと IP アドレスを使用して直接送信されます。

2- 別のサブネットのホストに送信する場合は、ルーターに送信する必要があります。したがって、宛先 MAC はルーターの MAC になり、宛先 IP は最終宛先の IP になります。

IP とサブネット マスクを調べると、どちらのケースに該当するかがわかります。

答え3

コンピュータが同じサブネット内にある場合、通信にルーターは必要ありません。ルーターに接続すると、ルーターは送信元 MAC アドレスをルーターの MAC に変更します。ルーターがパケットを受信すると、内部 MAC に戻します。

関連情報