電子書籍の厳選無料作品が豊富!

javaでtcpヘッダを自前で作成する方法

こんにちは。

javaでtcpヘッダを自前で作成する方法を探しています。
例えばsynやrstのみ出力するですとか、シーケンス番号を自分で決めてTCPヘッダとデータを作っていくことです。
tcpコネクションを自動で確立してくれるものではありません。
実験用にfinだけ付けたパケット1つだけ飛ばし、対向の機器がどのような反応をするかを見るためのものです。
Cでは方法はあるようなのですが、私にはCよりもJavaの方がとっつきやすいので、Javaでできる方法を探しています。
例えばどのようなクラス(java.io.*など?)をインポートしてどのような関数を使えばよいでしょうか。

何卒よろしくお願いします。

A 回答 (4件)

たぶんJpcapでできると思いますよ。


http://netresearch.ics.uci.edu/kfujii/jpcap/doc/ …

見れば分かると思いますが、サンプルも、
http://netresearch.ics.uci.edu/kfujii/jpcap/samp …
    • good
    • 0
この回答へのお礼

mintia007さん、ありがとうございます!
まさしくこのようなものを探していました。
さっそく使ってみます。

お礼日時:2010/04/05 21:12

多くのOSはTCPの実装をOS側が持っているので、そこを変更したいのであれば


RAW Socketを使うか、ドライバレベルで変更するしかありません。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/ …
JavaではRAW/ICMP SOCKETSをサポートしていないと書かれていますね。(実装はC/C++で書いてJNIで呼び出すとかしかないようです。)

>例えばsynやrstのみ出力するですとか、シーケンス番号を自分で決めてTCPヘッダとデータを作っていくことです。
TCPの偽装が目的でなく、そのような制御を実装したいのであればUDPで可能かと思います。

ちなみにRAW Socketを扱う場合WindowsならAdmin権限、UNIX系ではRoot権限が必要になります。
    • good
    • 0

jpcapでググってみてください。


もしかしたら出来るかもしれません。
(としか言えませんが・・・)
    • good
    • 0

ネットワーク通信関係のクラスはjava.netにありますが、Javaではそのレベルでの制御は難しいんじゃないのかな。


http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
    • good
    • 0

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