実際、同じIPアドレスで複数のRAWソケットを作成すると. それらすべてをバインドでき、その結果、パケットはすべてのソケットで受信されます。
同じIPアドレスをバインドしようとしている他のプロセスがエラーを受け取るなど、回避できる方法はありますか?
生のソケットを使用しています
#include <sys/socket.h>
#include <netinet/in.h>
raw_socket = socket(AF_INET, SOCK_RAW, int protocol);
マンページ raw(7)
bind(2) 呼び出しを使用して、生のソケットを特定のローカル アドレスにバインドできます。バインドされていない場合、指定された IP プロトコルを持つすべてのパケットが受信されます。さらに、SO_BINDTODEVICE を使用して RAW ソケットを特定のネットワーク デバイスにバインドできます。socket(7) を参照してください。
「ポート」はIPではなくTCPおよびUDPの概念であるため、生のソケットを特定のポートにバインドすることはできません。これら 3 つのプロトコルのヘッダー図をちょっと見てみると、明らかになるはずです。私は、ポートの概念が不明な下位レベルで作業しています。これは、ポート番号に関して私が理解していることです。