• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:任意のTCPパケットを送信するプログラムの実装)

任意のTCPパケットを送信するプログラムの実装

tthe_mineの回答

  • tthe_mine
  • ベストアンサー率46% (19/41)
回答No.3

> 例えば、userland で動く TCP スタックをご存知であれば教えてください。 私も探さないで書いてしまったのですが、あまり見当たらないですね ^^; 参考URLに書いた MuXTCP という python のプログラムはユーザランドで動きそうですよ。

参考URL:
http://kybkreis.org/wiki/MuXTCP
kaito834
質問者

お礼

ご回答ありがとうございます。 MuXTCP がどんなものか確認してみました。 ちょうど自分の望むことができそうです。 まだ開発途中のようですので、今後に期待ですね(^^

関連するQ&A

  • C言語でTCPの3way handshake

    (C言語)Linuxのpacket socket(socket(AF?PACKET, SOCK_DGRAM, htons(ETH_P_IP))) を使ってTCPの3way handshakeをOSのプロトコルスタックに頼らず自力で挑戦しています。 RFCやほかの技術本をよんでIPヘッダやTCPヘッダの実装は一応できたのですが、肝心のsynパケットを送った後のackパケットが返ってきません。 wiresharkでは問題なくsynパケットと認識できているのですが、きっとどこかに不備があるはずです。 そこでC, C++ Javaでもいいのでこのプログラムの実装例が載っているサイトなどを教えてください。(英語でもかまいません)

  • TCPヘッダのチェックサムについて

    通信エラーが発生し、 エラーが発生した時のパケットのTCPヘッダの チェックサムが"FFFF"だったのですが チェックサムで"FFFF"はありえるのでしょうか?

  • 無線LANで任意のパケットを作成し送信する方法について

    無線LANで任意のパケットを作成し送信する方法について linux(ubuntu)を使用しています。C言語を使い無線LANで、有線みたいにパケットを作成して目的のアドレス宛に送信したいと考えています。ですが、どのようにしたらよいのかよく分かりません。(IP、TCPヘッダーを作成できた様に無線LANでも同じことが出来るのですか?) プログラムの仕方等、どなたか分かる方教えていただけませんか? なにかそのようなことが載っているサイトや本はご存知ないですか? どうぞよろしくお願いします。

  • TCP/IPで同じパケットが2つ送信される。なぜ?

    Windows8 PC上のブラウザから、LAN上の機器(HTTPサーバ)にアクセスしようとしています。 Wiresharkでそのときの通信を覗いてみると、PCから送信されるパケットはなぜか2回同じものが短時間の間に連続して送信されているようです。その理由に心当たりがある方がいらっしゃいましたら、教えて下さいませんか? また、設定で回避できるのであれば、その設定項目などもわかるとありがたいです。 詳しい状況です。Wiresharkのキャプチャ画像と合わせて見て下さい。 *PC側IPは192.168.0.12、HTTPサーバは192.168.0.18です。 *Wiresharkでは、パケット6と7、9と11、10と12、14と15は内容的に同じパケットのようです(seqとackが同じ) *同じパケットのうち、前の方のパケットではIPパケットのチェックサムが0000hとなっているようです(チェックサムオフロード?)。後の方のパケットには、具体的なチェックサムの値が入っています。 *前のパケットが短い場合(54バイトとか)、後のパケットにはパディングとして00hが追加されて、60バイト長となるようです。それ以上の長さのパケットは、前述のチェックサム以外には違いは見られません。 *同じ2つのパケットは、極短い期間で連続して送信されているので、HTTPサーバからの応答タイムアウトで再送しているという風には思えないです。 *PC側のブラウザは、ChromeでもIEでも同じように2つの同じパケットが送信されていました。しかし、LANの外(ルーター外のインターネット)に接続するときは、このように2つの同じパケットはWiresharkで見ると出ていないようです。 *ちなみに、PC側のLANはRealtekのGigabit Ether(有線)です。 よろしくお願いいたします。

  • パケットを送信しているプログラムを特定するには?

    パケットを送信しているプログラムを特定するソフト等はありますか? tcp モニタでパケットを覗いたところ、どうも色々なホストに接続を 試みているプログラムが走っているようなのですが。 一応ワームウェアやウィルスチェックはしています。

  • パケットの捕捉

    ターゲットとなるパケットの送信元IP、送信先IP、シーケンス番号を補足するようなプログラムCでを実装したいのですが、どのようにすればよいのでしょうか? ソケットライブラリを使用するつもりでしたが、ソケットではパケットのヘッダを捕捉できない感じだったので...。 すいませんが、よろしくお願い致します。

  • パケット受信 recvfrom( )について

    お世話になります。 WinSockを用いてUDPパケット受信プログラムを作成しています。 環境はVC++です。ダイアログベースで、 STARTボタンを押すと受信開始します。 送信側よりパケットを1000個送信した場合、受信側では、 int num; SOCKET sock; char buf[1500]; //ソケットの設定は省略 while(1){ num = recvfrom(sock, buf, sizeof(buf), 0, NULL, NULL);  printf("%d",num ); if( num == SOCKET_ERROR){ break; } } recvfrom()で受信していますが、送信側で送信が完了しても while()を抜けないのか、応答なし(フリーズ)してしまいます。 printf()で表示してみると、 ちゃんと送信パケット個数回表示されています。 送信パケット数は変動するため、受信側のプログラムには 個数がわかりませんため、while()でループしています。 while()を抜ける条件はどうしたらいいのでしょうか? ちなみにrecvfrom()の戻り値として SOCKET_ERROR,0を指定してもエラーになります。 長くなりましたが、どうぞよろしくお願い致します。

  • データ送信のためにかかるパケット通信について

     質問です。書籍やWEBで検索しても一向に分かりませんでした。 問題 MTUが1500バイトの通信回線システムにおいて、300KBのデータを送信することを考える。このとき下記の問いに答えなさい。ただし、1KB=1024Bとして計算しなさい。 (1)IPヘッダに20バイト、TCPヘッダに20バイト付加して送信する。すべてのデータを送るためには、何パケットに分割すればよいか。 以上のような問題なのですが、教えていただけるとありがたいです。

  • パケット通信時の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 プロトコルで用いること。」

  • パケットのフィルタリング

    どうぞお知恵をお貸しください。 別プロセスからインターネット上のサーバ宛に送信されるパケットを監視し、 データ部に特定の文字列が含まれる場合、パケットをブロック(破棄)したいと考えております。 WPE Pro と言うソフトのフィルタ機能が、まさに理想なのですが 実現するにはどのような方法を取ればよいのか悩んでおります。 現在、C#のSocketクラスを使い、以下の流れまでは出来たのですが、 送信パケットをブロックする方法が分からず困っております。 アダプタ(IPアドレス)の取得 -> RAWソケットの作成 -> 非ブロッキングモードの設定 -> ネットワークカードをプロミスキャスモードに設定 -> パケットの取得 -> ヘッダ&データ部の解析 言語・開発環境は問いません。 何かヒントだけでも与えて頂ければ幸いです。