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/
403 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 11:57:05 ] そだね、最後にちゃんとFINの立ったTCPセグメントを送ってやるって事。 recv側はちゃんとFINの立ったTCPセグメントを食ってやるって事。 それでどちら側もちゃんとshutdownできる。 何も難しいことはやってない。
404 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:23:21 ] 非同期ソケットでFD_READの通知がきたとき int ret = recv(socket , buf , 128 , 0 );//whileループは使わない。 ret == -1はあるきがするのですが(ブロッキングなど) ret == 0はあるのでしょうか? ブロッキングソケットの場合はrecvでとまっているので ret == 0で切断などであるとは思うのですが。
405 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 02:39:11 ] マニュアルにないと書いてなければあると思わなければいけない。
406 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:35:44 ] >>361 ですが、やっとこ、つながりました。一週間でしたね。 サーバー管理している皆様 セキュリティは、ほどほどにお願いします。
407 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:38:02 ] お前氏んでいいよ
408 名前:デフォルトの名無しさん [2009/02/17(火) 12:21:38 ] >>407 おまえの母ちゃんよりマシ。
409 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 12:39:25 ] サーバー管理者から害のあるスクリプトと認定されるものを走らせてアク禁くらって まるでサーバー管理者側が悪いかのような口のきき方すれば 罵声を浴びるに決まってるだろ 人のことをとやかく言う前にまず自分のスキルを上げろって話さ
410 名前:デフォルトの名無しさん [2009/02/17(火) 14:13:00 ] >>409 あっそ
411 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 14:58:21 ] >>410 うん そういうこと
412 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 15:01:41 ] まあ普通にサーバ管理者に問い合わせれば済む話だしな。
413 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 18:00:16 ] 一応書いておきますが、406と408、410は、別人です。 わたしは、どのみちシロウトです。
414 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 18:38:28 ] >>413 の付け足しですが。 >>406 は、ただ最後にちょっと気の利いたことを書いておこうと 思っただけです。 気に障ったらすみません。 でもネットには、けんかを買いたい人が待ち構えてるんだね。 >>408 には、笑った。
415 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 19:40:55 ] ネットにはよそのサイトをDoSしても開き直っている奴いるしね。
416 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:31:15 ] もうやめて!>>361 のHPは0よ!
417 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 20:58:07 ] HPが0なら死ねよ
418 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 22:49:16 ] おまいら、また理解できないことが出てきちゃいました・・・ acceptで取得したソケットにはSourceAddressとPortが設定されています。 これはサーバーのAcceptAddressとPortです。 さらにacceptで取得したソケットにも同じアドレスがbindされています。 通常、複数のソケットに同じアドレスをbindする事はできないと思うのですが なんでacceptはできるの? プログラムで同じように複数のソケットに同じアドレスを bindすることは可能なのですか? 正直使いたくてうらやましいです(´・ω・`)
419 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:01:40 ] 同時じゃないんだからできるだろ
420 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:02:21 ] >>418 > 複数のソケットに同じアドレスをbind されてはいないだろ。 > acceptで取得したソケット はacceptしてるソケットとは別なんだから。 # TCPの接続は<srcIP, srcPort, dstIP, dstPort>の四つ組みで識別される。
421 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:12:26 ] >>419 すいません、何が同時じゃないんですか?(´・ω・`) >>420 acceptで取得したソケットをbindしようとするとEINVALが返ってくるんだけど、 これはbindされてるって事じゃないんですか?(´・ω・`)
422 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:15:06 ] まじめに質問してるのであれば、顔文字やめろ 腹が立つ
423 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:17:58 ] >acceptで取得したソケットをbindしようとすると んん?
424 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:29:31 ] >>422 すいません、マジメに質問してるので顔文字はやめます。 >>423 試しにやってみただけなんですけどEINVALが返ってきました。 bindされていると思った理由は 取得したソケットからgetsocknameでアドレスが取れるので bindされてるのかなと思いました。
425 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:33:36 ] acceptに返された時点で「TCP接続」とbindされてる。
426 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:47:22 ] 別に顔文字使ってもいいよ。真面目かどうかは内容で分かるから。 顔文字の有無で内容が変わって見えるような馬鹿なんかに初めから回答を期待しない方がいい。
427 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:54:31 ] >>424 TCP の 3way handshake を調べて、各 phase で何が渡されるか考えるのが吉
428 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:55:52 ] acceptで生成されたソケットのポートはリスナーのポートじゃねーだろ?
429 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:56:25 ] 顔文字で判断なんて、ココロが広いな 「おまいら」などと言ってる時点で無視だよ
430 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:05:28 ] >>425 そのbindされたアドレスが他のソケットとかぶってるってことなんだけど これはシステム上、srcAddressとPortがかぶるソケットがあっても 問題ないと自分は解釈したんだけど accept以外にプログラムで同じことできないかなと思いました。 >>426 2chで顔文字怒られたのは初めてでした。 不快に思う人も居るって事で。 >>427 どうもです。 3way hand shake調べなおしてみます。 >>428 srcPortはリスナーのポートだと思います。 >>429 ごめんなさい。
431 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:31:36 ] (´・ω・`)おこんなよ (´・ω・`)ちっちぇえな
432 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:00:53 ] >>430 APIで出来るのは、 接続してないソケットにsockaddrをbindすることだけです。 accept以外には、UDP等で使います。
433 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:20:57 ] >>431 煽るなよぅ >>432 システム上できるけどAPIが提供されていないので出来ない という解釈でいいんでしょうか。 あると便利なんだけどなあ・・・
434 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:28:41 ] 便利じゃないです。良く勉強してください。
435 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 02:01:14 ] >>434 便利じゃないのか・・・ 勉強してきます・・・
436 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 07:05:48 ] 3way-handshakeが完了した時点で、 (クライアント:connect成功、サーバ:accept成功) <sIP,dIP,sPort,dPort>の4つ組は決定するわけで、 そのあとで、「やっぱりポート変えたいんだけど」とか TCP的にもありえないよね。
437 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 09:07:23 ] Acceptの返すのはTCP接続が確立したソケットだからね。 Acceptしているソケットは、接続のターゲットになっているわけだから、 同じsockaddrを持つソケットが複数存在しては、 接続要求をどこでこなせばいいか、kernelに分からない。 UDPソケットへの配送についても同様。 複数のソケットに同じsockaddrをbindする必要がない。 だから出来ない。してはいけないことだから出来ない。
438 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:12:34 ] >>436 確かにコネクションが完了した後に変更はありえないですね。 でも、それはbindのEINVAL(もうアドレスが設定してある)みたいにすれば 問題ない気もするんですけど、どうでしょう。 >>437 んー、確かに危険だとは思うのですが。 例えばソケットを2つ作って違う場所にconnectするとして 現状同じsrcAddrとPortをbindすることはできませんよね。 これができると使用するPortが少なくてすむかなと思いました。 少ないと何かいい事あるかどうかはアレですが・・・
439 名前:デフォルトの名無しさん mailto:さげ [2009/02/18(水) 22:15:00 ] >>436 FTP
440 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:20:16 ] >>438 「危険」なんて関係ない。 意味のないことだからできない。 無意味なAPIを提供する意味はない。
441 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:21:20 ] >>439 FTPはデータとコントロールが別接続。 データ接続は複数もって並列にやり取りできる仕様。
442 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:33:39 ] >>438 少しOSの身になって考えてみよう > 例えばソケットを2つ作って違う場所にconnectするとして > 現状同じsrcAddrとPortをbindすることはできませんよね。 外部から入ってきたデータを、 同じsrcAddrとPortを持ってるコネクションのうち、 どっちのコネクションに配送すればいいかを、どうやって決めたらいいんだ?
443 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:40:17 ] それを識別するために、TCP, UDP層の「アドレス」付加分として 新たにポート番号を付加して、配送先を一意に決められるようにしたのに、 30年近くたって>>418 が突然、複数のソケットに付けられないのは不便じゃない?とw 郵便番号も複数の離れた土地に割り当てられたら便利かもね(棒読み)
444 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:59:12 ] 初心者です。質問させてください。 <form action="sso-redirect" method="post" name="loginForm"> と書いてあるとき 、postメソッドで投げる先は https://sec-sso.click-sec.com/loginweb/sso-redirect で間違いないのでしょうか。 よろしくおねがいします。
445 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:00:30 ] 初心者です。質問させてください。 https://sec-sso.click-sec.com/loginweb/で表示されたhtmlに <form action="sso-redirect" method="post" name="loginForm"> と書いてあるとき 、postメソッドで投げる先は https://sec-sso.click-sec.com/loginweb/sso-redirect で間違いないのでしょうか。 よろしくおねがいします。
446 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:07:48 ] >>440 やっぱりこれが一番の問題なんだろうな。 意味がないと理解できていないんですorz >>.442 TCPだとacceptで取得したソケットはこれをやっていて 理由は>>420 さんが書いてるように4組で識別しているからだと理解しています。 >>443 確かに、みんなこれでやってるのに疑問に思うのが問題ですよね・・・ 何かの理解が足りていないと思われるorz なんか長くなってしまったので、ここまでにしたいと思います。 色々勉強になりますた。 答えてくれた方々ありがとー♪
447 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:11:17 ] >>445 正しい場合が多いが、そうでない場合もある。<base>
448 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:13:55 ] TCP/IPのことで聞きたいのですがよろしいですか?
449 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:15:58 ] 質問させていただきます。
450 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:16:36 ] >>448 なに?
451 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:17:23 ] TCPの接続を四つ組で一意に表すと考えたのは誰なんだろ。 うまいこと考えたもんだな。特に非対称の接続の時。
452 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:17:27 ] >>448 よろしいです。
453 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:21:01 ] これから10Mバイトの容量のデジカメ写真のデータをインターネット上の電子メールで送信しようとするところである。 10Mバイトと容量が大きいので、インターネット上をそのまま一つの10Mバイトのデータ送信する事ができない。 TCP/IPではこのデータをどのように分割して処理し、分割したデータのそれぞれが間違いなく送信の相手に届くように保証しているかIPとTCPの送信側、受信側それぞれの役割別に具体的に説明しなさい。 とあるのですが、まったくわかりません;
454 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:21:40 ] >>446 > 確かに、みんなこれでやってるのに疑問に思うのが問題ですよね・・・ つか、疑問に思った君は偉いと思うよ、マジで…
455 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:22:30 ] >>453 わからないのは、君のせいではなく、その文章を書いた人間がバカだからです。 「日本語でおk」と言ってやりなさい。
456 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:23:10 ] >>455 ΣΣΣ 単位がもらえなくな・・・ry
457 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:23:58 ] そんなバカから単位を貰う必要はない。
458 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:24:24 ] 助けてください。
459 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:25:54 ] >>458 RFC 読めばいいと思うよ
460 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:27:32 ] >>459 拝見させていただきます。
461 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:28:58 ] 日本語表記please。
462 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:32:56 ] >>453 バカな問題を好意的に解釈すると、 「分割」はIP、「間違いなく送信の相手に届くように保証」はTCPが行っている。 説明は下記を参照。 @IT:連載 基礎から学ぶWindowsネットワーク 第10回 IPパケットの構造とIPフラグメンテーション 2.IPフラグメンテーション www.atmarkit.co.jp/fwin2k/network/baswinlan010/baswinlan010_03.html @IT:連載 基礎から学ぶWindowsネットワーク 第14回 信頼性のある通信を実現するTCPプロトコル(その1) www.atmarkit.co.jp/fwin2k/network/baswinlan014/baswinlan014_01.html
463 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:33:57 ] >>462 神様ありがとう。
464 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:38:11 ] 僕に友達をくれて。
465 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:47:14 ] 僕を妖精にしてくれて。
466 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:48:11 ] >>453 馬鹿な出題者が、解答者たちが、 TCPを真面目に勉強していることに大いに甘んじ、 出鱈目な言葉使いで、質問を出してる。 ところが、>>448 はTCPの事はまるで勉強してないので チンプンカンプンである。 これは馬鹿同士の衝突現象といえよう。 古典的なシェアードバスのEthernetコリジョンと同じである。
467 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:49:27 ] >>462 > 「分割」はIP ちょww
468 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:19:19 ] ラスカルに会わせてくれて
469 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:33:15 ] ラスカルに会わせてくれて
470 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 10:58:32 ] ありがとう僕の友達
471 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 15:03:19 ] オスカルに会わせてくーれーーてー
472 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 15:12:23 ] >>471 この手の書き込みをする奴の精神構造が理解できない
473 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 15:52:50 ] 同意
474 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 16:02:33 ] パスカルくらいにしとけば良かったのに。
475 名前:デフォルトの名無しさん [2009/02/19(木) 16:26:27 ] GetIfTableでアドレステーブルを取得できますが、若い番号であるほど 優先順位が高い、という解釈であってますか?
476 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:45:43 ] bOrder [in] Specifies whether the returned interface table should be sorted in ascending order by interface index. ~~~~~~~~~~~~~~~~~ 昇順ですな。
477 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:51:25 ] あ、そうだったのか! 今までユーザーに選択させてたよ
478 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:18:45 ] >462 TCPって、connection成立時にMSSが判るから、 IPのDFビットを立てたりするんだよね。
479 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:18:59 ] みんなUDPのサーバーってrecvfrom使ってるの? ログインしたあと何回かやりとりするような仕様だと毎回recvfromでもらったアドレスからユーザー判別するのが すごい無駄な気がするんだけどいい方法ないかな?
480 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:47:45 ] >>463-474 友達に聞いたんだけど 高校受験の時の面接で試験官が 突然ゴレンジャーの話をし始めたらしい 人生が懸かった試験だけに どう対応して良いか分からなかったそうだけど まともに相手をした受験生が落とされたらしい
481 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:11:41 ] 単に頭が悪くて落ちた馬鹿が落ちたのをゴレンジャーのせいにしてるだけだろ。
482 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:09:29 ] >>479 そういう時はconnectするんだよ。
483 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:57:49 ] それってソケット新しく作ってconnectするってことだよね? 試したけどうまくいかなかったんだよなー ちゃんとやればできるのか もう一回チャレンジしてみる
484 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 04:46:12 ] サーバー側がacceptしてるときに、想定しているクライアントが接続してきたのか 流しのクライアントが偶然たどりついたのか、どうすれば判別できますか?
485 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 06:13:15 ] 認証しろ
486 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 08:42:16 ] >>484 っcrypto
487 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 03:23:57 ] うまくいかないにゃー
488 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:30:19 ] ぬるぽ
489 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:30:21 ] >>480 がっこうなんて人生が懸かるような所じゃないよ
490 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:55:13 ] >>489 だれが上手いこと書けと
491 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:37:13 ] ガッ
492 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 13:07:48 ] >>491 >489がもう叩いてる
493 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 23:17:59 ] ちんこかゆい90円
494 名前:デフォルトの名無しさん [2009/03/03(火) 00:09:49 ] ソケットインターフェースで(例えばrecvを使って)、たくさん流れてくるTCPのヘッダだけ読んで、ペイロードを読み捨てる(recvしない)ってことできる? できるとしたら、どうすればいいの?
495 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 08:18:50 ] >>494 > ソケットインターフェースで(例えばrecvを使って)、たくさん流れてくるTCPのヘッダだけ読んで Rawソケットでできる。 > ペイロードを読み捨てる(recvしない)ってことできる? 自分(ユーザー空間)で捨てるのが嫌だということなら、 カーネル内でプロトコルスタック書く必要がある。
496 名前:494 [2009/03/03(火) 10:30:27 ] >>495 つまり出来ないのね。ありがとう。
497 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 16:27:51 ] >>496 どうしても socket じゃないとまずいのか? BPF とか pcap ライブラリ使ってフィルタするんじゃだめなのか?
498 名前:デフォルトの名無しさん [2009/03/03(火) 21:23:29 ] >>497 まずくはないが、今はsocketインターフェースでの可能性を知りたい。
499 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 21:47:52 ] libpcapはソケット使ってるだろ。
500 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 22:58:00 ] OSによるんじゃね
501 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:32:32 ] RAW ソケットも Socket インターフェイスなわけだが。
502 名前:デフォルトの名無しさん [2009/03/04(水) 23:11:20 ] RAWソケットじゃあ、ヘッダだけ読んで、ペイロードを読み捨てる(recvしない)ことは出来ないだろ。 読まないとヘッダかペイロードか判断できないし。
503 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 23:18:08 ] ちなみにRAWでやるってことはTCPのやりとりも自分で全部書くってことか? 捨てるだけでなく返事をせんと次のが来ないぞ。