現在、プログラミングの課題に取り組んでいます。割り当ては、クライアント、ネットワーク エミュレーター、およびサーバーを実装することです。クライアントはパケットをネットワーク エミュレーターに渡し、ネットワーク エミュレーターはサーバーに渡します。その逆も同様に適用されます。割り当ての前提条件は、生のソケットのみを使用できることです。そこで、独自の IP ヘッダーと UDP ヘッダーを作成します。Wireshark でパケットをテストしました。それらはすべて正しく、適切な形式です (正しく読み取ります)。
もう 1 つの要件は、エミュレーター、クライアント、およびサーバーのすべてに、バインドする必要がある特定のポートがあることです。現在、生のソケットを特定のポートにバインドする方法がわかりません。すべての raw ソケットは、バインドされているホスト アドレスですべてのトラフィックを受信します。man ページや、Richard Stevens による「Unix Network Programming」を含むインターネット上のあらゆる場所によると、これが本来の動作方法です。先生は私のメールに返事をくれていません。おそらく火曜日まで先生に質問することはできないでしょう。私の前に 2 つの選択肢があります。最初に、libpcap を使用して特定のデバイスからフィルタリングし、生のソケットに出力できます。しかし、これは私たちの任務の範囲外だと思います。または、ソケットから受け取った後にそれらをフィルタリングできます。すべてのパケットがカーネルを介してコピー/移動されるため、これには明らかに多くのオーバーヘッドがあります。少なくとも、それは私の理解です(間違っている場合はお気軽に修正してください)。
だから私の質問は:それらはオプションですか、それとも私が設定できるものですか?raw ソケットがポートにバインドされる場所は? 明らかな何かを見逃しましたか?
お時間をいただきありがとうございます。
--