LinuxでC言語を使用しているのですが、パケットのデータ部分を合成するプログラムのを教えてください。
具体的な例として、
端末A,B,Cがあり、AはBを中継して、CにUDPパケットを2個送信します。
中継端末のBは2個のUDPパケットをバッファリングした後、データ部分のみを1個のパケットにまとめてCに送信します。(ヘッダ部分はAが送信したときと同じにしたい)
Cは2個分のデータが入ったUDPパケットを1個受信する。
この例の端末Bでのプログラムを書くとするとどのようにすればいいのでしょうか??
よろしくお願いしますm(_ _)m
No.3ベストアンサー
- 回答日時:
「パケットのpayloadを合成する」という機能が必要なだけでしたら、Click Modular Router
http://www.read.cs.ucla.edu/click/ を使用してみるのはいかがでしょうか。複数の要素をかちゃかちゃと組み合わせるだけで、色々なルーティングを可能にするシステムです。
このシステムには、ARPだけ選ぶもの、送信優先度を低くするもの、ひとつのパケットを二つに増殖させて二つの場所に送るものなどといった小さな機能要素があります。こういった要素を順番に並べていくことで、「ARPの送信優先度を低くして、二箇所に送る(他は変化なし)」などの複雑なルーティングを、簡単に作ることが出来ます。
二つのペイロードの合成も多分出来たんじゃないかと思います。なかったとしても、新しいモジュールを付け加えることはそんなに難しいことではありません。(C++でClickモジュールを書くことになります)
要素一覧 : http://www.read.cs.ucla.edu/click/elements
手動で作成するとなると、いわゆるRaw Socketを作ることになりますが・・・、まともに使えるものを作るつもりでしたら、かなり面倒が多いですよね。
ありがとうございます!!
そんなシステムがあるのですか!?
これはなんらかのシミュレーションではなく、パソコンにインストールすれば実際のルータとして使用できるということですかね??
No.2
- 回答日時:
Linux で UDP 通信をするなら、「socket.h」を使えばよいでしょう。
いくつか参考になりそうなサイトを挙げておきます。
Manpage of SOCKET
http://www.linux.or.jp/JM/html/LDP_man-pages/man …
Geekなぺーじ [インターネット技術メモ]
http://www.geekpage.jp/
Winsock Programmer's FAQ
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/index.html
返信ありがとうございます。
説明が不足していたのですが、中継点Bと言ったのですが、実際はルータのことで、Aから見ると、Bには中継しているとは気づかないで、Cに届くというイメージです。
基本的なUDP通信のプログラムは私もGeekなページを参照しています(^-^;)
No.1
- 回答日時:
・ルータを作っているのですか、それともオーバーレイネットワークを作っているのですか?
・ネットワーク的にどのような構成になっていますか?
・「Bを中継する」際のIPヘッダはどのようになっているのですか?
素早い返信ありがとうございます。
>・ルータを作っているのですか、それともオーバーレイネットワークを作っているのですか?
中継する端末表記しましたが、実際はルータのことです。PCでルータを作成し、その中でパケットを合成するようなプログラムが欲しいです。
>・ネットワーク的にどのような構成になっていますか?
A→(無線接続)→ルータ(Bのこと)→(有線接続)→C
という風に接続されています。
>・「Bを中継する」際のIPヘッダはどのようになっているのですか?
Bはルータなので、AのIPヘッダには、Cのアドレスとポート番号の情報のみです。
最初からルータを使用するをいったほうがよかったですね(^-^;)
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10進数からN進数に変換するプロ...
-
VisualStudioでC++クラスを追加...
-
大量のデータを読み込んで表示...
-
どうして+3
-
c#のTLS1.2での通信について
-
プログラム言語について c言語...
-
C++でデスクトップGUIアプリ開...
-
int16_t の _t は何?
-
c言語
-
プログラミング 素数か素数では...
-
C#でTreeViewのCheckBoxのサイ...
-
gcc13.2のバグ?
-
C言語って古いですか?
-
QT(C++)の学習方法について
-
C言語について。
-
【C言語】全角文字の配列を、全...
-
パソコン
-
今ってプログラミング言語は何...
-
2つほどお聞きしたいことがあり...
-
プログラミング言語についてc++...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ゲームプログラミングのネット...
-
ネットワークカード2枚挿し TC...
-
C言語でTCPの3way handshake
-
ネットワーク上に存在しないIP...
-
パケット生成ソフト
-
LinuxでIPモジュールとデバイス...
-
パケットの中身について。 始点...
-
パケット数のカウント方法
-
Windows端末でのsyslog受信につ...
-
ファイアーウォールで上りUDPの...
-
簡単なパケットキャプチャーソフト
-
ソケットを使ったプログラムに...
-
任意のTCPパケットを送信するプ...
-
Wi-Fiが繋がらなくなりました N...
-
構造体のメンバをfor文で回したい
-
mailto:の本文に文字数制限はあ...
-
batファイルでtelnetを起動⇒文...
-
アクセスで有給休暇管理表を作...
-
Oculus Riftが映らない。セット...
-
RTX810でローカルルータとして...
おすすめ情報