ネットワークカードが受信したフレームは、ドライバによって処理され、Linuxカーネルによってプロトコルスタックの上位レイヤに渡されます。カーネルがパケットをネットワーク層に渡さないようにするには?
カーネルがパケットをネットワークレイヤに渡さないようにする簡単な方法はありますか?私はデータリンク層からフレームを受け取って、すべてのパケットを自分で処理することができます(おそらくアプリケーションレイヤプログラムは書き直されます)。
私はカーネルを再コンパイルする必要があります。これはsoftirqやnetif_rxなどの関数やcpu単位のリストキューのコードを修正することで行うべきでしょうか?
実際、いくつかのクラスメートと私は、演習のためにユーザー空間にTCP/IPプロトコルスタックの簡略化されたバージョンを実装しようとしています。私はUNP、APUE2、TCP/IP v1、v2、Linuxネットワーキング・アーキテクチャー、Linuxソース・コードなどの書籍を読んでいます。私は他のいくつかの問題を抱えていますが、別の質問を投稿する必要がありますか?
何をしますか?カーネルを変更するのは簡単ではないかもしれません。 – prehistoricpenguin
あなたは本当にあなたが解決しようとしている問題を記述するべきです。以下の答えの1つは、netfilterを示唆しています。別のオプションは、rawパケットを直接取得するためにpcapライブラリを使用することです。実際に解決しようとしている問題がわかるまで、正しい答えが何であるかわかりません。 – chetan
私は私の質問を編集し、実際にはさらにいくつかの提案を期待しています。 –