- 締切済み
パケット通信時のIPヘッダの取得方法について
RedHat Linux9上で、g++3.2を使用して、ソケット通信の プログラムを作成していますが、UDPやTCPパケットを受信した際に 各パケットのIPヘッダを取得したいのですが、どのように行えばよいのでしょうか? RAWソケットを使用すればできるかとも思ったのですが、下記のURLに 「IPPROTO_RAW 経由でのあらゆる IP プロトコルの受信は、 raw ソケットを用いては行えない。」と書かれています。 http://www.linux.or.jp/JM/html/LDP_man-pages/man7/raw.7.html 上記のURLには、下記のようにも書かれていました。 packetソケットを使用しなければ実現できないのでしょうか? もし、そうならばpacketソケットのサンプルがありましたら、 教えていただけないでしょうか。 「IPPROTO_RAW ソケットは送信専用である。もしどうしてもすべての IP パケットを受信したい場合は、 packet(7) ソケットを ETH_P_IP プロトコルで用いること。」
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- m_mik
- ベストアンサー率26% (31/117)
回答No.1
ちょっと的外れになるかもしれないのですが、自力でやろうとはせずに公開されているライブラリを使うというのは駄目でしょうか? libpcap というものを使いますと、簡単にパケットをキャプチャすることが出来ます。 これにフィルタを設定すると、目的のパケットのみを簡単に取得することもできますので、とても便利です。 本家サイトは英語ですが、libpcap で検索をすると日本語での解説サイトも出てくると思いますので、そちらを参照してください。
- 参考URL:
- http://www.tcpdump.org/