私のアプリケーションでは、特定の TCP/IP パケットをインターセプトし、カスタム通信リンク (イーサネットではない) を介して別のデバイスにルーティングする必要があります。すべての TCP 制御パケットと完全なヘッダーが必要です。raw ソケットを使用してこれらを取得する方法を見つけましたsocket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));
。
ただし、Linux もこれらのパケットを認識します。デフォルトでは、未知の TCP ポート番号にパケットを受信すると、RST を送信します。後で自分から返信を返す予定なので、それではダメです。socket(PF_INET, SOCK_STREAM, 0);
同じポートで andを使用して 2 番目の「通常の」ソケットを開くlisten()
と、Linux は着信 TCP パケットに ACK を送信します。これらのオプションはどちらも私が望むものではありません。自分ですべてを処理できるように、これらのパケットを何も処理しないようにします。どうすればこれを達成できますか?