限定しりとり

RedHat Linux9上で、g++3.2を使用して、ソケット通信の
プログラムを作成していますが、UDPやTCPパケットを受信した際に
各パケットのIPヘッダを取得したいのですが、どのように行えばよいのでしょうか?

RAWソケットを使用すればできるかとも思ったのですが、下記のURLに
「IPPROTO_RAW 経由でのあらゆる IP プロトコルの受信は、
raw ソケットを用いては行えない。」と書かれています。

http://www.linux.or.jp/JM/html/LDP_man-pages/man …

上記のURLには、下記のようにも書かれていました。
packetソケットを使用しなければ実現できないのでしょうか?
もし、そうならばpacketソケットのサンプルがありましたら、
教えていただけないでしょうか。

「IPPROTO_RAW ソケットは送信専用である。もしどうしてもすべての
IP パケットを受信したい場合は、 packet(7) ソケットを ETH_P_IP
プロトコルで用いること。」

A 回答 (1件)

ちょっと的外れになるかもしれないのですが、自力でやろうとはせずに公開されているライブラリを使うというのは駄目でしょうか?



libpcap というものを使いますと、簡単にパケットをキャプチャすることが出来ます。
これにフィルタを設定すると、目的のパケットのみを簡単に取得することもできますので、とても便利です。

本家サイトは英語ですが、libpcap で検索をすると日本語での解説サイトも出てくると思いますので、そちらを参照してください。

参考URL:http://www.tcpdump.org/
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!