- 1 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 21:07:24 ]
- 主にソケットに関しての質疑応答スレッドです。
Programming UNIX Socket FAQ (日本語訳) www.kt.rim.or.jp/~ksk/sock-faq/indexj.html Winsock Programmer's FAQ (日本語訳) www.kt.rim.or.jp/~ksk/wskfaq-ja/ 関連リンクは>>2-10辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port22 pc11.2ch.net/test/read.cgi/tech/1222603744/ 関連スレ Java ネットワークプログラミング 【教えて!】 pc11.2ch.net/test/read.cgi/tech/1086238859/
- 116 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:29:02 ]
- iostreamはともかく
stdioのFILEとして扱うのはそれなりには使われてるってば。
- 117 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:29:55 ]
- >>116
それはブロッキングでやってfdopen()して タイムアウトはalarm()でって古式ゆかしき方法だよな
- 118 名前:デフォルトの名無しさん [2009/01/11(日) 21:50:21 ]
- >>115
重複IOを活かす為の苦心が感じ取れるが、複雑化してしまった感じ。
- 119 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:51:19 ]
- >>118
ああ、早い話が綺麗じゃないってことか
- 120 名前:デフォルトの名無しさん [2009/01/13(火) 18:39:57 ]
- socketでサーバライブラリ的なものを作ってます。
Accept後にThread作ってそこで受信応答を行うという、 ごく一般的な方法なのですが、 現状では、階層の一番深いところで受信した データの解釈と応答データの作成が必要になってしまい、 ライブラリとして意味がなくなってしまいます。 ライブラリには送受信だけさせ、 受信データの解釈と応答バッファの作成は もっと上の階層で行いたいのですが、 一般的にはどういう方法で行うのでしょうか?
- 121 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 19:40:06 ]
- 他人に通じる文章書くようにしましょう。
階層の深いところって何の階層だ? ライブラリとして意味がなくなるのが自明みたいに書いてるが、 他人にはさっぱり
- 122 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 19:51:24 ]
- サーバークラスなりが、コールバック動作をするコードになってないってことじゃね。
- 123 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:35:09 ]
- >>120
こういうのを一般化する時の問題はデータの区切りの判定です。 どこがデータの区切りで、どこまでデータを読んでから上層に渡せばいいかは プロトコル依存だからです。 パケットのヘッダに長さが埋め込まれている場合、 CR/LFでメッセージの区切りが指定されている場合等、ひどい場合は階層構造の データを深くパージングしないと切れ目が分からないなどと言う物も。 >>122 が言う様に普通はコールバックを上層が用意し、データの区切りの判断を これらのコールバックを呼んで判断するという方法です。 区切りの方法によって どういうコールバックのインターフェースを用意すればいいかは自分で考えましょう。
- 124 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:32:59 ]
- コールバックって・・・
クラスって書いてんじゃん
- 125 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:51:22 ]
- >>124
もしかしてプログラミング初心者? 例えばイベントハンドラで何か動作をさせる、という時に イベント制御ルーチンにイベントハンドラを登録して そのイベントハンドラに制御を移すことを「コールバック動作」と言うんだよ。
- 126 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:09:20 ]
- 例えばC++で書くなら
class EventLister { virtual int OnAccept() = 0; virtual int OnReveive() = 0; ... }; class Server { EventListerner& handler; AsyncServer(EventListerner& handler) : handler(handler) {} void receiveexec() { // select後に呼び出される handler.OnReceived(); } }; のような造りがコールバック動作でしょ。 これで、EventListenerを継承して自分のやりたいことをやるものを作り コンストラクタに渡すようにすれば、 必要なときにServerからコールバックされるように出来るでしょ。
- 127 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:17:13 ]
- メッセージのクラスと応答のクラスを作ればいいんじゃね
- 128 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 02:57:49 ]
- >>123
SOCK_STREAMじゃなくてSOCK_RAWを使ってるってこと?
- 129 名前:デフォルトの名無しさん [2009/01/14(水) 09:07:00 ]
- ふぁひょふっへって、でへばいいべおいいんじゃねぇぇっぇええぇええの?
- 130 名前:123 mailto:sage [2009/01/14(水) 09:41:10 ]
- >>124
あ、ごめん、 そうだね。 じゃ、C++的には長さ、区切り判定をするメソッドを virtualで定義し、実装をサブクラスで行うのがいいですね。 >>128 TCP(SOCK_STREAM)という前提で私は話してました。 receiveで受け取ったデータはtcpの データグラムと一致している保証もないし、データグラムが上位階層の送信単位と一致する 保証もないので切り分けは上位階層の知識が必要になります。 >>120さんはそこらへんの 必要性は分かっているという印象は受けました。
- 131 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 10:03:27 ]
- >>126
え、それをコールバックって言っちゃうの?
- 132 名前:120 [2009/01/14(水) 10:12:36 ]
- みなさん回答ありがとうございます。Cっぽくコールバックでやろうと思ってましたが
>>126を参考にしたいと思います。
- 133 名前:120 [2009/01/14(水) 10:23:30 ]
- デリミタだけは確定しているため、そこだけはスレッドの中でやってしまうつ
もりです。デリミタが来たら受信を終了しコールバックで解釈、応答バッファを作成しも戻ってきたところで、sendさせます。
- 134 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 10:27:04 ]
- >>131
ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF_(%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6)#.E5.AE.9F.E8.A3.85
- 135 名前:デフォルトの名無しさん [2009/01/14(水) 13:45:30 ]
- Java臭がする糞ースだと思った。
- 136 名前:デフォルトの名無しさん [2009/01/14(水) 16:52:06 ]
- この問題なんですが、解答あってるでしょうか?
msgbox "変数aの値は" & a & " , 変数bの値は" & b この文を先頭から2つ目の&までとその後の部分に分け、正しく2行で記述しなさい。 また、変数a,bの値がそれぞれ10,20である場合に、実行したときに表示される メッセージボックスの中の記述内容を書きなさい。 解答。 msgbox"変数aの値は" & a & msgbox"変数bの値は" &b 変数aの値は 10 変数bの値は 20
- 137 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 16:55:56 ]
- 誤爆か
- 138 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:15:59 ]
- ウンコマン
- 139 名前:デフォルトの名無しさん [2009/01/15(木) 10:24:38 ]
- ネットワークプログラミングの究極の目的は
自分のPCにソフトをインストールしない ということでしょうか? つまり自分のPCにエクセルが入ってなくてもネットワーク経由でエクセルがつかえる のように。 しかし、エクセルの入ってないPCと入っているPCをLANでつないでもエクセルは操作できませんでした。 ところが、詰将棋ソフトはPCに入ってなくてもLAN経由でできました。 これはどういうことなんでしょうか?
- 140 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 11:42:25 ]
-
?
- 141 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 11:44:48 ]
-
?
- 142 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 12:45:19 ]
- >>139
>ネットワークプログラミングの究極の目的は >自分のPCにソフトをインストールしない >ということでしょうか? >つまり自分のPCにエクセルが入ってなくてもネットワーク経由でエクセルがつかえる >のように。 それはただのクラウドコンピューティングの一環。 ネットワークプログラムそのものに目的はないんじゃないか。 目的を達成する手段の一つとしてネットワークプログラミングがあるだけで。 >しかし、エクセルの入ってないPCと入っているPCをLANでつないでもエクセルは操作できませんでした。 >ところが、詰将棋ソフトはPCに入ってなくてもLAN経由でできました。 >これはどういうことなんでしょうか? 知るか。 ソフトの仕様による。 どうしても操作したけりゃRealVNCでも突っ込んどく? チェケラッチョ ttp://www.vector.co.jp/soft/win95/net/se324464.html
- 143 名前:デフォルトの名無しさん [2009/01/15(木) 22:00:55 ]
- 誰かWinsockでUDPで音声を送信して、受信して再生するプログラムのCかC++の
サンプルソースください。 ボイスチャットみたいなものを作ってみたいのです。 UDPで音声データを送信〜受信的なところまでは分かるのですが、 受信したものをどうやって再生するんだよ!という状態です。 1回ファイルに書き込んでそれを再生というのも冗長な気もしますし、 だからと言ってPlaySoundでもメモリ上から〜というのも エンドレスで受信されるデータにどう対応して良いか分かりません。 ググっても、『音声や動画のようなものにはUDP!』というところまでしか出てきません。 ヒントでも参考URLでも良いのでお願い致します。
- 144 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 22:11:36 ]
- 「voice chat 使用言語」でググればいっぱい海外サイト出る
- 145 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 22:47:31 ]
- >>144
ありがとうございます! 母国語以外を無意識に避けていて気付きませんでした! 私のような愚か者がいるから日本の国力が低下するのですね! これからは他のことでも進んで他国語からも情報を得る努力をします! 1人でも国力底上げしてやるぜYEAH!!!!
- 146 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 13:24:15 ]
- YEAH!!!!
- 147 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:14:35 ]
- ふつーwave〜系APIとか、DirectSoundとか
DirectShowとか使うと思う。というか、受信した データをどうするかはスレ違いか。
- 148 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:05:49 ]
- >>143
>>102 javaだけどね。
- 149 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:14:56 ]
- なにを言ってるんだ
- 150 名前:デフォルトの名無しさん [2009/01/17(土) 13:05:27 ]
- 質問です
WindowsのVC++でネットワークのアプリを作成しているのですが、通信速度を制限して通信する方法ってありますか? 例えば最大でも30kbpsまでしか速度を出さないように送受信するにはどうすればよいでしょうか?
- 151 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 13:12:15 ]
- >>150
1秒毎に4kバイトずつsendを呼べばいいんじゃね?
- 152 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 13:14:18 ]
- 1. ネットワークドライバを作る
2. 例えば最大でも30kbpsまでしか速度を出さないように送受信する 3. そんなの作らずにあるもの使えばいいじゃん
- 153 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 13:35:52 ]
- ダウンロードならBITS使うという手があるんだがなー
- 154 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 01:24:29 ]
- >>151-153
d
- 155 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 15:38:38 ]
-
- 156 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 01:28:32 ]
- なんかCやC++で作成してる人が多いみたいだけど、
サーバーで送受信部分をPHPとかで作ってる人って居ないの?
- 157 名前:デフォルトの名無しさん [2009/01/21(水) 10:25:56 ]
- PHPでやる意味がない。
- 158 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:23:26 ]
- そういやレンタル鯖にperlの串置いて踏み台にするとか昔流行ったな
まあphpは板違いだな
- 159 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:54:19 ]
- パケットキャプチャしてみたがIPフラグメントがされてない
あきらかに64kb以上のデータを取得しているのにどうしてなんだ!
- 160 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 21:56:16 ]
- 1パケットって何バイトだった?
- 161 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:04:02 ]
- バケラッタ!
- 162 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:28:43 ]
- TCP送信に関して以下の認識でOK?
「デーーーーーーーータ」 ↓ データを分割 「データ」、「データ」、「データ」 ↓ IP付けて送信 IP head+TCP Head+「データ」 , IP he〜〜〜 それと、 IP head+TCP Head+「データ」から「デーーーーーーーータ」に 再構築するソース教えてくれ
- 163 名前:デフォルトの名無しさん [2009/01/21(水) 22:55:22 ]
- 「デーーーーーーーータ」
↓ データを分割 「デーーー」 、「ーー」、「ーーータ」 ↓ IP付けて送信 IP head+TCP Head+「データ」 , IP he〜〜〜 ↓ 受信 「ーーータ」、「ーー」、「デーーー」
- 164 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:04:55 ]
- TCPはスライド窓だからターデはありえない
- 165 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:16:05 ]
- http〜 001.zipをダウンロードしているとき(web閲覧時も
IPヘッダみてもFlagが分割不可になっているのはなぜ? パケットの取得方法は、PacketFilterExtensionPtr関数。
- 166 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:19:29 ]
- 皆さん如何されているかアイデアを聞かせてほしいんですが
たとえば、不特定多数が使用するクライアント・サーバ型のソフト(MMO等)を作るとして、 データのやり取りはUDPで行うとします。 不正なデータを送られたり、受信したデータから不正な処理をされないためには データを暗号化して通信する必要がありますが、そのキーを何処に隠すとよいと思いますか? クライアント側で暗号化したデータをサーバで復号する、またその逆の場合、 クライアントはサーバと通信する為に、鍵を持っている必要がありますが コード上やリソース上に持たせてしまうと、バイナリエディタなどからバレてしまう可能性があります。 ここで、脅威の対象を仮に ・28歳 男性 独身 ・趣味はネトゲ(botツール常習者) ・プログラミングの知識は大学で習った程度、逆アセンブルなどは出来ない ・バイナリエディタなどでパラメータを触った経験はあり とします。この人にクラックされない仕組みを作りたいです。 色々考えましたが堂々巡りです。 案1)通信確立用のキーをクライアントのコード上、またはリソース上に持たせ、 通信確立はそのキーで行う。その後はサーバで新たなキーを発行する。 →そもそも通信確立用のキーがクラックされれば全く意味が無い 案2)時刻をパラメータに定期的にキーを生成する。 →クライアント・サーバで完全に時刻を同期する必要あり。実現不可能 案3)暗号化部分をdll化し、さらにそのdllを暗号化し、コード上で復号して呼び出す。 dllを暗号化したキーはリソース化し、リンク →トレースされたら意味なし よいアイデアお待ちしてます。
- 167 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:26:50 ]
- 暗号についての教科書でも読め
- 168 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:30:47 ]
- >>166
普通に非対称鍵暗号使えばいいんじゃ
- 169 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:32:48 ]
- 共通鍵方式であれ公開鍵方式であれ鍵の扱い方は教科書には載ってない
- 170 名前:166 mailto:sage [2009/01/22(木) 00:40:06 ]
- >167-169
『コード上に載っている鍵をバイナリエディタなどで不正に読み出し、 正規とは別のデータを暗号化し、サーバからみたら「正常な」データを送りつける』のが BOTツールだと思うので、対象鍵であれ非対象鍵であれ、 暗号化に使う鍵がばれてしまう事自体が問題だと思うんですが。 というか、世に出回っているネットワークプログラムは、どういう対策をとっているのだろうか・・
- 171 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:40:23 ]
- >>166
通信確立用のキーがクラックされることを考えるなら、 復号直後のデータを抜かれるクラックも想定が必要ということ? いずれにしても通信経路上の他人に隠すならともかく、 PCの所有者にその想定で隠すのは無理と思う
- 172 名前:166 mailto:sage [2009/01/22(木) 00:44:55 ]
- >>171
幾ら対策してもMMOにBOTツールやアカウントハックが無くならないのはやはり仕方がないのでしょうか。 どれだけ厳重な金庫にお金を隠しても、金庫の鍵がそこにあれば泥棒は簡単に取っていけますからね。
- 173 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:50:25 ]
- 通信の傍受は防げてもプログラムのクラックはいたちごっこだな
- 174 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 03:48:20 ]
- >>166
正規なクライアントだけが持っている情報は一切全く無い、と仮定 するけど、正規なクライアントだけ通信できるようにしたい、ってのは 原理的に不可能だと思う。 ただ、MMO なら、ユーザごとにアカウントとパスワードで接続してるので それを秘密キーにすれば、正規クライアントかどうか判定はできるんじゃないかな 現実的には案1で十分だと思う。クライアントソフトのクラックは別途対策する (nProtectとか)ことが多いかと
- 175 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 11:13:02 ]
- 中間者攻撃というのがあってだな…。
昔P2Pで適当なループ作って署名付けて二回回すってのを考えたけど 結論覚えてないや(w
- 176 名前:175 mailto:sage [2009/01/22(木) 11:14:40 ]
- 思い出した。↑の方法でも中間者攻撃対策にはならないんだった。
- 177 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 11:25:02 ]
- 正規のクライアントがクラックされてクローンを作られるのは防ぎようがないかな。
どうしても防ぎたければB-CASカードみたいな対タンパ性のあるハードウェアを 使うとか。
- 178 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 19:16:30 ]
- >>168
ここで答え出てるだろ。 クライアントでランダムな非対称鍵作って 暗号化用の鍵を相手に渡す。
- 179 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:43:51 ]
- MMOみたいな延滞厳禁な物に対して
暗号化を施すのも正直どうかと思うけどな
- 180 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:00:40 ]
- 暗号化コストなんて送受信に比べたらカスみたいなもんだろ
- 181 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 23:33:12 ]
- 共通鍵にしろ公開鍵にしろ
強度を高めようとしたら結構負荷がかかるぞ そもそも暗号と高速化は相反する物だし
- 182 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:01:21 ]
- 暗号化コストは結構でかいよ。
LANでギガビットイーサ+SSHだとネットの性能に暗号処理がおいつかない。 性能が必要ならストリーム暗号かね。
- 183 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:36:09 ]
- お前は一体何の話をしてるんだ
- 184 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 17:20:28 ]
- MMOでクライアントからサーバーに巨大なデータは送らない。
- 185 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 17:20:09 ]
- UDPの受信で到着順番が入れ替わる対応をするため
受信データにシーケンシャルなインデックスを入れて 受信時にソートするとする。 その場合、処理してしまったデータより前のデータが飛んできた時の処理って 仕様によるとは思うんだけど、どうするのがいいかな? やっぱ捨てるの?
- 186 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 18:34:50 ]
- 必要なら取り込む、不要なら捨てる
- 187 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:42:57 ]
- 185が自分で言っているように仕様によるとしか言えない。
- 188 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:31:10 ]
- やっぱそうだよなー
でもせっかく届いたデータを捨てるのも勿体無い気がする・・・ 設計自体を変えるしかなさそうだな。 色々試してみるお、ありがと。
- 189 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:38:41 ]
- そこを頑張り過ぎるといつのまにか劣化TCPを作るハメになるぞ
- 190 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:50:27 ]
- 分散コンピューティング環境では思い切りが必要。
- 191 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 14:46:45 ]
- 迷ったら、TCPを使わない理由を考えなしたほうがいい
- 192 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:02:47 ]
- 意味判らんが
UDPの方がプログラマ寄りの考え方だぞ
- 193 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:24:03 ]
- それこそ意味がわからん。
- 194 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:27:12 ]
- プログラマ寄り?
- 195 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:51:09 ]
- まあ生パケットに近い (=プログラマの裁量範囲が大きい) と
言いたかったのではないかとエスパーしてみる。
- 196 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:08:06 ]
- じゃあアセンブラで書けよ。
- 197 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:30:12 ]
- また意味わからん奴が出てきたぞ
- 198 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 08:55:02 ]
- TCPとUDP、この2つで十分というのはおもしろいと思う
- 199 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:31:29 ]
- 十分じゃないからその上の層にも下の層にもプロトコルがあるんだろうが。
tracerouteコマンドのように下の層を直接使うアプリもあるし。
- 200 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 20:28:26 ]
- ネットワークプログラミングに興味を持って始めてみようと思うのですが、
Windowsではwinsockが主流なのでしょうか? 長らく更新されていないようですけど、それだけ完成度が高いということですか?
- 201 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 21:30:45 ]
- うん
- 202 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 21:38:43 ]
- HTTPリクエストだけならWininetAPIの方が楽ちん
- 203 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:09:07 ]
- Winsock以外のプロトコルスタックの実装もあるにはあるけど、実際に使われてるのを
最近は見たことない。Winsockで十分だからね。
- 204 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:30:39 ]
- なんか意外な気もしますが普通に現役なんですね
取っ掛かりは簡単そうだし、少しやってみようと思います
- 205 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:34:01 ]
- ptrace(2)を使うのはほとんどのUNIXでお勧めではない。
詳しくはmanpageを読んでくれ。
- 206 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 03:58:49 ]
- ふつ〜straceだよね
- 207 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:08:04 ]
- tracerouteは
UDPを投げてICMPの戻りを使うタイプのものと ICMPを投げてICMPの戻りを使うものがある この理解であってる?
- 208 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:05:03 ]
- あってる。
Linuxには-Iオプションとかもあるな。
- 209 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:21:46 ]
- ちょっと引くぐらいくだらない質問だと思いますが、教えてください。
TCPやUDPなどにはヘッダの構造が定義されていますが、 ポートからヘッダの構造に従ったパケットを送信しさえすれば 後はヘッダに定義したあて先にパケットが届くということでいいのでしょうか? つまり、大雑把にいうとヘッダ構造にしたがってパケットを送信できれば 一応イーサネットの通信はできるという認識はあっているでしょうか。 (品質やエラー処理などは考慮しないとして)
- 210 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:45:01 ]
- そこいうポートって?
- 211 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:47:25 ]
- 「で」が抜けた
- 212 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:49:15 ]
- あ、すいません。
書き方が悪かったです。 ここでのポートは、組込み開発のボード上にある 物理的なLANポートのことです。
- 213 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:01:21 ]
- >>209
恐らくネットワークの下層の存在を知らないんじゃないかな? TCP, UDP, IPまでは物理的な通信ハードウェアとは隔離されたレベルの 通信規格。 その下層にあるデータリンク層がLANの場合ならIPアドレスから イーサネットのアドレスへの変換、イーサネットヘッダーの追加、 イーサネットチェックサムの計算等をやってくれている。 ここの規格はネットワーク技術によって異なる。 他に 身近なものではwifiとかDSLで使われるPPPoEとか。 で、さらにその下の物理層が具体的な電気信号への変換を行う。
- 214 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:11:50 ]
- >>209
ファーム支援が何もない状態って事だよね? ARPをちゃんと理解しないと、 イーサネット上でIPパケットを出すことは難しいよ。 ルーティングの知識もいる。 > その下層にあるデータリンク層がLANの場合なら ルータの裏蓋程度の中途半端な知識で語るのやめれ
- 215 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:12:12 ]
- >>213
そういうことですか・・・少し理解が進みました。 ありがとうございます。 昨日からあるボードのイーサネットのソース解析を 行っているのですが、まったく知識がない状態で 解析しているので何が何だかわかっていないのです。 確かにソース上で、MACアドレスの取得(ARP?)を行ったり、 イーサネットヘッダの追加やチェックサムの計算を行っていました。 要はその部分がデータリンク層の実装ということですね。 ということは、データリンク層までを実装して そのパケットをLANポートから送信してあげれば イーサネット通信ができるということでいいでしょうか。 ・・・もうソースを見ても何が何だかという感じです。 多少取っ掛かりはみえてきましたが。
- 216 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:16:08 ]
- >>214
そのファームの移植・・・という作業なのです。 (CPUが異なるボードへの移植です) 私はペーペーなので勉強も踏まえてという位置づけなのですが、 できるところまでやってみろという感じで 何とかやり遂げないとまずい状態にいます。 ちょっと憂鬱です。
|

|