トップページ⇒tech
1001コメント260KB

ネットワークプログラミング相談室 Port25

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/10/14(水) 03:43:08
主にソケットに関しての質疑応答スレッドです。

Programming UNIX Socket FAQ (日本語訳)
  http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
  http://www.kt.rim.or.jp/~ksk/wskfaq-ja/

関連リンクは>>2-10辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port24
http://pc12.2ch.net/test/read.cgi/tech/1246895188/
関連スレ
ネットワークプログラミング雑談
http://pc12.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://pc12.2ch.net/test/read.cgi/tech/1086238859/
0002デフォルトの名無しさん2009/10/14(水) 03:45:45
過去スレ:
Port24 ttp://pc12.2ch.net/test/read.cgi/tech/1246895188/
Port23 ttp://pc12.2ch.net/test/read.cgi/tech/1230466044/
Port22 ttp://pc11.2ch.net/test/read.cgi/tech/1222603744/
Port21 ttp://pc11.2ch.net/test/read.cgi/tech/1204287577/
Port20 ttp://pc11.2ch.net/test/read.cgi/tech/1186418855/
Port19 ttp://pc10.2ch.net/test/read.cgi/tech/1159692799/
Port18 ttp://pc11.2ch.net/test/read.cgi/tech/1171029896/
Port17 ttp://pc8.2ch.net/test/read.cgi/tech/1148944560/
Port16 ttp://pc8.2ch.net/test/read.cgi/tech/1136005644/
Port15 ttp://pc8.2ch.net/test/read.cgi/tech/1128088448/
Port14 ttp://pc8.2ch.net/test/read.cgi/tech/1118469143/
Port13 ttp://pc8.2ch.net/test/read.cgi/tech/1109793931/
Port12 ttp://pc5.2ch.net/test/read.cgi/tech/1102427855/
Port11 ttp://pc5.2ch.net/test/read.cgi/tech/1096187183/
Port10 ttp://pc5.2ch.net/test/read.cgi/tech/1090385857/
Port9 ttp://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port8 ttp://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port7 ttp://pc5.2ch.net/test/read.cgi/tech/1063035045/ ★行方不明
Port6 ttp://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port5 ttp://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port4 ttp://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port3 ttp://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port2 ttp://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port1 ttp://pc.2ch.net/tech/kako/970/970344582.html
0003デフォルトの名無しさん2009/10/14(水) 03:49:19
図書コーナー:
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
 http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
 そのソースコード
 http://www.unpbook.com/src.html
詳解TCP/IP〈Vol.1〉プロトコル
 http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
詳解TCP/IP〈Vol.2〉実装
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714957/
詳解TCP/IP〈Vol.3〉トランザクションTCP, HTTP, NNTP, UNIXドメインプロトコル
 http://www.amazon.co.jp/exec/obidos/ASIN/4894716674/
TCP/IPによるネットワーク構築
 〈Vol.1〉原理・プロトコル・アーキテクチャ
  http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
 〈Vol.3〉クライアント‐サーバプログラミングとアプリケーション
  http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
  Linux/POSIXソケットバージョン
  http://www.amazon.co.jp/exec/obidos/ASIN/4320120841/
  Windowsソケットバージョン
  http://www.amazon.co.jp/exec/obidos/ASIN/4320029992/
0004デフォルトの名無しさん2009/10/14(水) 03:50:36
マスタリングTCP/IP RTP編
 http://www.amazon.co.jp/exec/obidos/ASIN/4274065618/
Linuxソケットプログラミング?ネットワークプログラミングにおける実践技法
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
Webプロトコル詳解?HTTP/1.1、Webキャッシング、トラフィック特性分析
 http://www.amazon.co.jp/exec/obidos/ASIN/4894715414/
WinSock2.0プログラミング
 http://www.amazon.co.jp/exec/obidos/ASIN/4797306882/
猫でもわかるネットワークプログラミング
 http://www.amazon.co.jp/exec/obidos/ASIN/4797323604/
IPv6ネットワークプログラミング
 http://www.amazon.co.jp/exec/obidos/ASIN/4756142362/
Visual Basicではじめるネットワークプログラミング超入門
 http://www.amazon.co.jp/exec/obidos/ASIN/4839917523/
0005デフォルトの名無しさん2009/10/14(水) 03:51:18
URL抜粋:
★規格
RFC 日本語版リスト
 http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
JPNIC RFC関連リンク集
 http://rfc-jp.nic.ad.jp/link/
RFC Editor
 http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
 http://www.freesoft.org/CIE/RFC/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
 http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616
IANA Well known port numbers
 http://www.iana.org/assignments/port-numbers
0006デフォルトの名無しさん2009/10/14(水) 03:52:13
★プログラミング
C10K ヘヴィーロードサーバ
 http://www.kegel.com/c10k.html
C10K ヘヴィーロードサーバ(日本語訳)
http://www.hyuki.com/yukiwiki/wiki.cgi?TheC10kProblem
MSDN
 http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
Raw IP Networking FAQ
 http://www.whitefang.com/rin/
Java で packet capture
 http://netresearch.ics.uci.edu/kfujii/jpcap/doc/
Randomness Recommendations for Security
 http://www.faqs.org/rfcs/rfc1750.html
BoostSocket
 http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
The Code Project - Internet & Network programming
 http://www.codeproject.com/internet/
ネットワークプログラミングの基礎知識 (問題ありのサイト?)
 http://X68000.q-e-d.net/~68user/net/
0007デフォルトの名無しさん2009/10/14(水) 03:53:14
★ツール類
ethereal - http://www.ethereal.com/
Wireshark - http://www.wireshark.org/
tcpdump - http://www.tcpdump.org/
Windump - http://netgroup-serv.polito.it/netgroup/tools.html
WinPcap - http://www.winpcap.org/
pathchar - ftp://ftp.ee.lbl.gov/pathchar/
pchar - http://www.employees.org/~bmah/Software/pchar/
Packetyzer - http://www.networkchemistry.com/products/packetyzer/
libevent - http://www.monkey.org/~provos/libevent/

★プロトコル
TTCP
 http://www.sean.de/Solaris/ttcp.html
 http://www.kohala.com/start/ttcp.html
UDP Hole Punching
 http://homepage3.nifty.com/toremoro/p2p/firewall.html

★IP, TCP実装
http://www.iti.fi/documentation/miniip.html
http://www.sics.se/~adam/uip/
http://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/
http://www.geocities.jp/bruce_teller/security/garakuta.htm
0008デフォルトの名無しさん2009/10/14(水) 06:56:20
>>1
乙
0009デフォルトの名無しさん2009/10/14(水) 11:37:47
SCTPどーよ
0010デフォルトの名無しさん2009/10/14(水) 21:10:47
Apacheの発見されていない脆弱性を教えてください><
0011デフォルトの名無しさん2009/10/14(水) 21:54:36
>>9
イーヨ
0012デフォルトの名無しさん2009/10/14(水) 23:22:33
発見してしまった。
0013デフォルトの名無しさん2009/10/15(木) 08:35:32
発見されていないのだから教える事はできない。
0014デフォルトの名無しさん2009/10/16(金) 03:54:59
馬鹿に使われる、という潜在的な脆弱性は
ローカルでしか発見し得ないかも
0015デフォルトの名無しさん2009/10/16(金) 13:16:40
実際大人になってからはじめてわかったことはいっぱいある
その殆どはわかったときには既に手遅れだったものばかりだ
0016デフォルトの名無しさん2009/10/17(土) 18:22:06
高校生のうちにセックスしまくっとけとかなw
0017デフォルトの名無しさん2009/10/20(火) 22:12:15
UDPで300BYTE程度のデータを送信しようとした所、送信できませんでした
1000byteなら送信できたのですが3000byteを送信しようとすると何か設定が必要なのでしょうか?
0018デフォルトの名無しさん2009/10/20(火) 22:29:37
Windows の UDP パケット サイズの最大値は 1280 バイトが既定値

これ関係ある?
0019デフォルトの名無しさん2009/10/20(火) 22:31:01
1280バイトと1281バイトで実験してみればいいだろ
0020デフォルトの名無しさん2009/10/20(火) 23:32:16
18は17とは別人だお
UDPとか使わないから俺は実験しないお
0021デフォルトの名無しさん2009/10/21(水) 00:34:44
エラーが起きた時はerrnoを調べるように頭の構造を設定する必要がある。
0022デフォルトの名無しさん2009/10/21(水) 05:25:56
udpは親切に再送してくれないからな。受け取れない終わり出し。
0023デフォルトの名無しさん2009/10/21(水) 05:50:45
つまり送信は性交していて受信が失敗してるわけですねわかります
0024デフォルトの名無しさん2009/10/21(水) 05:55:10
否認したわけですね
0025172009/10/21(水) 07:50:19
3000byteのときは送信が成功しません。2000byteででもです。
1パケット以下なら送信が成功するのですが、そういう設定する
オプションってあるのでしょうか?
0026デフォルトの名無しさん2009/10/21(水) 09:03:08
フラグメント有効なら通りそうな気もするが・・・
0027デフォルトの名無しさん2009/10/21(水) 09:17:45
釣り針があまりにでかすぎる
0028デフォルトの名無しさん2009/10/21(水) 13:51:17
ソケットプログラムを書いていたらある時ものすごいエラーが出るようになり、
原因を探っていたらどうもヘッダファイルのインクルード順序によって出るという結論に達しました

おおよそでも結構ですので、こういう順序でインクルードするとエラーが出にくいという方針などはあるのでしょうか?
0029デフォルトの名無しさん2009/10/21(水) 15:37:02
要るものからインクルードするとエラーが出にくい
0030デフォルトの名無しさん2009/10/21(水) 23:11:30
sys/types.hを最初に、それ以外はどうでもいい。
0031デフォルトの名無しさん2009/10/22(木) 00:20:32
>>26
フラグメント有効ってどうすればよいのでしょうか?
カードの問題?
0032デフォルトの名無しさん2009/10/22(木) 02:04:56
フラグメントはDoSに利用されやすいこともあって、
オフにしているところも結構ある。
頼らずに分割して送れ。
0033デフォルトの名無しさん2009/10/22(木) 02:13:16
単にMTU越えてるから送れないってことじゃないの?
0034デフォルトの名無しさん2009/10/22(木) 02:34:35
>>32
IP だとそうだけど, UDP のリアセンブルは IP とは別問題じゃないか?
とはいえ, IP フラグメント捨てられたら UDP がこけるのも事実だが……

そもそも, 元ネタが環境を書いてないのがよくない
0035デフォルトの名無しさん2009/10/22(木) 02:38:48
殆どのバグは本人が問題無いと思っている場所にこそ存在する
0036デフォルトの名無しさん2009/10/22(木) 07:23:31
>>34
> UDP のリアセンブル

何のことを言っているの?
0037デフォルトの名無しさん2009/10/22(木) 08:04:23
UDPで1パケ以上送ろうとするとフラグメント化されるけど、それがされなくてデータ自体送れなくなってるってことか

フラグメント化のオンオフってどうやるんだったかな
0038デフォルトの名無しさん2009/10/22(木) 08:36:44
分からない奴は加わってくるな
0039デフォルトの名無しさん2009/10/22(木) 09:54:31
>>36
IPv6 は MTU ディスカバリー使って, 途中経路でフラグメント化されない形で
送信できるけど, v4 にはそうゆう機能がないのでフラグメント化される可能性
がある.

UDP は MTU 以上のデータグラムを送ろうとすると, 複数の IP パケットに分割して
送信される.

IP のフラグメントをリアセンブルするのと, UDP のデータグラムを複数の
IP パケットからリアセンブルするのは別の話だって言ってるんじゃないか
0040デフォルトの名無しさん2009/10/22(木) 13:41:40
>>29 >>30
ありがとうございました
0041デフォルトの名無しさん2009/10/22(木) 18:07:40
>>39
ん?
Path MTU DiscoveryはIPv4にだってあるだろ?
0042デフォルトの名無しさん2009/10/22(木) 19:55:05
v6は必須だよね。

>>39
フラグメンテイションもリアセンブルも、
IP層で行われるのであって、上の層が何かは関係ない。
tcpdumpやfirewallみたいに層縦断する奴等は気にする必要があるが。
0043デフォルトの名無しさん2009/10/22(木) 20:19:18
どっかのバカNEが「ICMP全部止めるのがセキュリティ」と妄信してるからなあ。
0044デフォルトの名無しさん2009/10/22(木) 20:21:04
それじゃpingが通らんがなw
0045デフォルトの名無しさん2009/10/22(木) 20:21:44
ping用のポートを用意
0046デフォルトの名無しさん2009/10/22(木) 20:51:23
www.ntt.co.jpとか
0047デフォルトの名無しさん2009/10/22(木) 22:30:32
>>44
The Internetにつながってるサーバはecho返さないようになってるの多くね?
0048デフォルトの名無しさん2009/10/22(木) 23:07:44
結局、UDPで送信してもフラグメント化されないため送信されてないって話だろ
0049デフォルトの名無しさん2009/10/22(木) 23:09:12
う、うん……(´・ω・`)
0050デフォルトの名無しさん2009/10/24(土) 14:23:18
listenの第2引数の意味がよくわからん
何にすればいいの
0051デフォルトの名無しさん2009/10/24(土) 14:39:42
0-1
0052デフォルトの名無しさん2009/10/24(土) 14:45:28
>>50
サーバ側がaccept(2)で接続確立するまで、
サーバ側に既に到着し待たされている接続要求をいくつ持てるか?
>>51
少なすぎて話にならない。
0053デフォルトの名無しさん2009/10/24(土) 19:57:25
なるほどありがとう
0054デフォルトの名無しさん2009/10/24(土) 20:12:46
ていうか、>>1のリンクくらい目を通せよ
0055デフォルトの名無しさん2009/10/24(土) 20:14:07
1はバックログ数1というわけではないんだな。これが。
0056デフォルトの名無しさん2009/10/24(土) 22:12:56
それはOSによる。
例えばLinuxは最小が8、最大はsysctl.max_syn_backlog
2の階乗にラウンドされる。
0057デフォルトの名無しさん2009/10/24(土) 22:46:01
反論するなら、1がバックログ数1であるものを例示して反論してくれたまえ。
0058デフォルトの名無しさん2009/10/25(日) 00:07:08
パケットのフラグメント化を許可する方法を教えてください
0059デフォルトの名無しさん2009/10/25(日) 00:14:17
経路上の中継器の管理者にフラグメントされたパケットを落とさないように依頼する。
0060デフォルトの名無しさん2009/10/25(日) 13:04:09
listenソケットて閉じちゃいけないの?問題発生したんだが
0061デフォルトの名無しさん2009/10/25(日) 13:12:44
どんな問題か書け
0062デフォルトの名無しさん2009/10/25(日) 14:05:12
セレクト使った場合
相手がクローズしたかどうかを知るにはどうすればいいの?
0063デフォルトの名無しさん2009/10/25(日) 15:03:27
>>1のFAQ嫁
0064デフォルトの名無しさん2009/10/25(日) 15:05:51
s.eof()
0065デフォルトの名無しさん2009/10/25(日) 22:27:46
>>59
中継器は使用せず直接LANケーブルで送信受信側をつないでます
どうやらパケット自体送出できないみたいなのです
フラグメント化が必要なデータだと
0066デフォルトの名無しさん2009/10/25(日) 22:52:42
PS3かなにかのメッセージか?
動いてるなら気にスンナ
0067デフォルトの名無しさん2009/10/25(日) 23:47:01
いえ、送出できてないので動かずです
0068デフォルトの名無しさん2009/10/26(月) 00:25:23
>>58, 59
何がしたくて, 何をやったらどうなってるのよ?

どう言う意味でパケットのフラグメントを使ってるのよ?

IP フラグメントってのは, 下の例のような構成で,
中継が MTU=500 のネットに会わせて, 勝手に IP パケットを分割する
時の話だぞ

端点 -> MTU=1000 のネット -> 中継 -> MTU=500 のネット -> 端点

UDP で MTU 以上のデータを送信したいとかって話?
0069デフォルトの名無しさん2009/10/26(月) 15:50:31
selectって条件が揃うまで値を返さないんだよね?
そうなるとrecvとaccsept用に2つスレッド作らないといけないのか?
0070デフォルトの名無しさん2009/10/26(月) 16:17:26
recv用とaccept用のディスクリプタを両方セットしとけば、いずれか一方が読み込み可能になれば返ってくる
スレッドは1つでok
0071デフォルトの名無しさん2009/10/26(月) 16:39:01
UDPソケット作る時に宛先アドレスを指定して作った場合も
sendto,sendmsgを使うなら宛先は指定しなければならないんでしょうか?
0072デフォルトの名無しさん2009/10/26(月) 17:41:42
> UDPソケット作る時に宛先アドレスを指定して作った
作り方教えて
0073デフォルトの名無しさん2009/10/26(月) 17:44:43
あー
勘違いしてました
0074デフォルトの名無しさん2009/10/26(月) 18:24:38
UDPでもconnectしとけばsend/recv使えるよ
0075デフォルトの名無しさん2009/10/26(月) 20:21:31
これからネットワークプログラムを開発する場合
今のトレンドのプログラム言語はなんでしょうか
0076デフォルトの名無しさん2009/10/26(月) 20:22:20
Rubyだ
0077デフォルトの名無しさん2009/10/26(月) 20:26:40
Javaだ
0078デフォルトの名無しさん2009/10/26(月) 20:29:14
トレンドなんか気にしているようではいけない
0079デフォルトの名無しさん2009/10/27(火) 00:12:51
>>68
すみません、UDPでMTU以上のデータを送りたいということです。
分かりにくくて申し訳ないです
0080デフォルトの名無しさん2009/10/27(火) 00:54:01
>>79
OSとか環境とか情報はないのか?
sendto で宛先指定すりゃ普通に出ていかないか?
送れてない時ってエラー帰ってないか?

どうしても send が使いたいんだったら >>74

もっとも, 組み込み用のスタックとかだと UDP の
connect は, 実装してないスタックもあるらしいが…
0081デフォルトの名無しさん2009/10/27(火) 06:19:11
>>79
送れません。
0082デフォルトの名無しさん2009/10/27(火) 10:31:31
なんでRFCも読まずにネットワークプログラムしてる奴がゴロゴロいるんだ?
0083デフォルトの名無しさん2009/10/27(火) 23:38:53
ICMP って 「アイコンプ」って読んだら変かなあ
0084デフォルトの名無しさん2009/10/27(火) 23:54:47
hen
0085デフォルトの名無しさん2009/10/27(火) 23:56:00
SNMPをスヌンプって読む人はいるよ
漏れは読まないけど
0086デフォルトの名無しさん2009/10/27(火) 23:57:11
>>82
ノ
0087デフォルトの名無しさん2009/10/28(水) 11:08:25
WSDLはうぃずどぅるだけどな
0088デフォルトの名無しさん2009/10/31(土) 04:47:46
リフラグメント前提のパケットを大量に流してあげると、フラグメントしてくれる親切なルータにDoS出来てしまう気がした。これってセキュリティホールじゃ?
ICMP echoは捨ててもいいと思うけどね。ルータで捨てた時に送って来るICMPは捨てると良くないことが起きそうだが。
0089デフォルトの名無しさん2009/11/01(日) 21:35:44
>>80
UDPのconnectなんてあるんですね。。でも、connectすりゃ、send,recv使えるって
しなくてもmtu以下のサイズなら使えます。そういうことではないのでしょうか?

OSがUNIXでもwindowsでもないからおくれないのかなぁ
0090デフォルトの名無しさん2009/11/01(日) 21:47:16
connectしなかったらsendは使えない
だって宛先不明
sendtoやsendmsgは使える
connectしたらsendも使える
0091デフォルトの名無しさん2009/11/01(日) 23:04:55
>>88
そんな古いDoS攻撃…
0092デフォルトの名無しさん2009/11/01(日) 23:21:35
複数の接続を受けるサーバーを作りたいんだけど
人数が増えるたびrecvの回数増やすにはどうすればいいんだ?
0093デフォルトの名無しさん2009/11/02(月) 00:37:19
recvの回数増やすというのはよくわからないが
受け付けた接続ごとに別々のスレッドを立ち上げるか
selectやpoll等を使ってひとつのスレッドですべての接続を捌くか
好きなほうを選べ
0094デフォルトの名無しさん2009/11/02(月) 02:12:48
スレッドで処理してる間に、パケット届くと取りこぼしそうだw
0095デフォルトの名無しさん2009/11/02(月) 02:37:43
はあ?
0096デフォルトの名無しさん2009/11/02(月) 03:33:19
UDPパケットを取りこぼしなく取り込みたいのですが
なにかいい方法ありませんか?
0097デフォルトの名無しさん2009/11/02(月) 09:59:52
あきらめれ
0098デフォルトの名無しさん2009/11/02(月) 10:28:49
>>96
取りこぼさないのは無理なので、取りこぼしたことを検出して回復を図る
0099デフォルトの名無しさん2009/11/02(月) 11:25:32
取りこぼしたくなければ素直にTCP使っとけ
UDPにするなら取りこぼしてもいいようにプログラム側を設計しろ
っていうのが定型文的な解答
0100デフォルトの名無しさん2009/11/02(月) 15:29:39
決してしてはならないのは
「Ethernat直結でしか使わないからUDPでも取りこぼしなんて起きないだろう」
などと考えること。これをやってハマる初心者が意外に多くて困る。
0101デフォルトの名無しさん2009/11/02(月) 16:09:27
同時にパケット発射すれば簡単に消えるしな。
■ このスレッドは過去ログ倉庫に格納されています