ネットワークプログラミング相談室 Port29
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/10/31(水) 17:05:08.29Programming 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辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
関連スレ
ネットワークプログラミング雑談
http://toro.2ch.net/test/read.cgi/tech/1235800707/
0013デフォルトの名無しさん
2012/11/01(木) 09:42:08.38「インターネット」じゃなくて"Internet"
これまめな
0014デフォルトの名無しさん
2012/11/01(木) 10:12:35.12"Internet"じゃなくて"The internet"
これまめな
0015デフォルトの名無しさん
2012/11/01(木) 10:28:28.780016デフォルトの名無しさん
2012/11/01(木) 11:40:55.70"internet"を挟むんだった、残念
0017デフォルトの名無しさん
2012/11/01(木) 13:54:07.760018デフォルトの名無しさん
2012/11/01(木) 18:35:47.781980年くらいになってようやくUNIX上のサーバ実装が定着してきました。
それまでは370とかSDSとかPDPとか。
0019デフォルトの名無しさん
2012/11/02(金) 01:14:02.89自身からルーティング不能なIPアドレスからパケットを入力した場合
OSにはパケットは届いても、プロセスまで到達しないようです。
OSが自身からルーティング不能のホストからの入力の場合には捨ててそうだ
というところまでは分かりました。
でもパケットそのものはせっかく届いているし
プロセスが受信できても良さそうなもんだな、と思ってしまいます。
この破棄動作は何か意味、というか意図が含まれているのでしょうか?
002019
2012/11/02(金) 01:17:41.31[ホストA] <==> [L3SW] <==> [ホストB]
ホストA(Linux): 192.168.1.1/24、*ルーティングの設定なし*
L3SW: (左側)192.168.1.254/24 (右側)10.1.1.254/8
ホストB: 10.1.1.1/8、defautGWは10.1.1.254
1)ホストAで、UDPポート12345で受信待ち
2)ホストBで、ホストAのUDPポート12345に送信
3)ホストAにて、受信しない
・ホストAで、キャプチャするとパケットの入力は確認できます。
・netfilterにおいて、PREROUTNIGには到達しますが、INPUTにもFORWARDにも到達していないようです。
・ためしに、ホストAでルーティングを設定すると、プロセスはパケットを受信できる。
・ホストAでのルーティングは、本質的には到達不能な設定とかちょっと変でも受信できます。
上の例いえば、default via 192.168.1.1/24 を設定する (自分自身がNexthop) とか。
0021デフォルトの名無しさん
2012/11/02(金) 07:24:25.28自分宛のパケットか判断する前の話?後の話?
0022デフォルトの名無しさん
2012/11/02(金) 09:20:18.070023デフォルトの名無しさん
2012/11/02(金) 10:33:50.16DNSの安全性をチェックするプログラム書きたいんだけど基本的に問い合わせクエリに対するレスポンスを解析して安全性の基準と比較するって形なのかな
0024デフォルトの名無しさん
2012/11/02(金) 10:40:55.800025デフォルトの名無しさん
2012/11/02(金) 11:11:54.12例えばDNSサーバが再帰クエリを返すかとかポートがランダムかとかの判断をさせることになるはずだと思います
既にこういうサービスは結構あるといえばあるようだけど…
アクセスしてきた人の使ってるDNS判定してそこにチェック用のクエリを送ってそのレスポンスで判断という流れになるのかなって
安全かどうかの基準はRFCをよく確認する必要がありそう
0026デフォルトの名無しさん
2012/11/02(金) 11:26:27.450027デフォルトの名無しさん
2012/11/02(金) 11:30:06.130028デフォルトの名無しさん
2012/11/02(金) 11:31:19.01そんなこと出来るのか
すげー
0029デフォルトの名無しさん
2012/11/02(金) 11:32:27.600030デフォルトの名無しさん
2012/11/02(金) 11:53:49.390031デフォルトの名無しさん
2012/11/02(金) 12:09:35.16送信元ポートをクエリごとにランダムにすることで攻撃の成功率を下げる意味がある
0032デフォルトの名無しさん
2012/11/02(金) 12:20:17.70ランダムにするのはクライアント側の話な。
0033デフォルトの名無しさん
2012/11/02(金) 13:37:32.45,.' , /. / l |、 、:::::::゙'.
l ,' iー-'、 ヽ;゙ー- l、:.:::::::│
l !//lんl lん:lY`:i :、 :│
lヘj、 V:リ V::リノ、:| lナ │
〈 " ¨ " | レ゙::│ かれのあたまのなかわかるんだけど
l>...._ 、ー-、 _,.ィV::::: i
|:::::,イヽ:又 ̄ヽ' ::::::::│
|:/ ゝヽ∨/' ヽ::::::│
/ ヽ:|
0034デフォルトの名無しさん
2012/11/02(金) 23:27:21.280035デフォルトの名無しさん
2012/11/03(土) 02:01:10.12どうやら当たりでした。
なるほど。ありがとうございます。
0036デフォルトの名無しさん
2012/11/15(木) 10:17:28.59これからモバイル(スマホやタブレット端末)相手のソフトを作ろうと考えています。
アプリは社内システムの延長です。
社内システムはC++BuilderとSQLServerでシコシコ10年以上やってきました。
なんだか浦島太郎みたいなおじさんですが、いろいろ調べてAdobeのFlashBuilderで
やるのが簡単そうだ、ということで使用ライセンスを得ました。
で、端末相手のサーバーはどうする?
ということでC++Builderに付属のIndyコンポーネントを初めていじっていけそうな感触を得ました。
スレッドを意識しなくても書けそうです。
しかし、ここから進みません。
どういうプロトコルで上位のデータのやりとりをするのが合理的かということです。
WebサービスだのSOAPだのちんぷんかんぷんです。
0037デフォルトの名無しさん
2012/11/15(木) 10:30:58.510038デフォルトの名無しさん
2012/11/15(木) 10:38:48.630039デフォルトの名無しさん
2012/11/15(木) 16:28:18.57すきにすれば
0040デフォルトの名無しさん
2012/11/15(木) 16:31:18.35おじさんになると、検索もできないし、書店に行くこともできなくなるのか。やだやだ。
0041デフォルトの名無しさん
2012/11/15(木) 18:03:27.18クライアントはブラウザで。
0042デフォルトの名無しさん
2012/11/15(木) 18:08:50.66最初はその独自サーバーで行こうかと考えましたが、
もっと定型的で簡単な方法があるのかなと調べている途中でした。
昔のDOS時代にもモデムを使って独自のフォーマットで
やりとりした事があるのですが、あんまり練った仕様じゃなかったので
簡単な拡張もできなかった経験があります。
どうもお騒がせしたしました。
0043デフォルトの名無しさん
2012/11/15(木) 18:22:19.68> 最初はその独自サーバーで行こうかと考えましたが、
> もっと定型的で簡単な方法があるのかなと調べている途中でした。
「独自サーバー」の通信部分は定型的で簡単に書けます。
誰が書いても、通信部分はまあ似たようなものになるでしょう。方式は何パターンかありますが。
要するに、Socketを使ったサーバアプリを書いたことないってだけでしょ。
> もっと定型的で簡単な方法
が、HTTP上にのっけるアプリなんですが。
どんな言語でも"Hello, World!"を返すぐらいのレベルなら、すぐに作れるでしょう。
HTTPを返すのが嫌なら、JSONを返したり。
> いろいろ調べて
いや、調べてないでしょ。あるいは壊滅的に調べるのが下手とか。
本屋行きなさいよ。
0044デフォルトの名無しさん
2012/11/15(木) 20:00:53.080045デフォルトの名無しさん
2012/11/15(木) 22:44:52.57おまえら餌もついてない釣り針に食いつくタイプだろ?
0046デフォルトの名無しさん
2012/11/16(金) 01:52:22.230047デフォルトの名無しさん
2012/11/16(金) 13:37:27.61どうも、ありがとう。
あれからFlash Builderの側(クライアント)を調べたら素のTCP/IPの選択肢はありませんでした。
HTTP、PHP、XML、Webサービスとあと聞いたことないやつ3点のどれかです。
お粗末さまでした!
0048デフォルトの名無しさん
2012/11/16(金) 14:24:37.290049デフォルトの名無しさん
2012/12/15(土) 16:40:50.41proxyサーバー越しにネットワークに接続するにはどうすれば良いでしょうか。
現在は、単純にSOCKETを作って、サーバーにconnectしてGET メッセージを送るという方法を使用しています。
しかし、今後はproxyサーバー越しに、ネットワークに接続する必要が出来ました。
proxyサーバーを介する場合、接続先サーバーをproxyサーバーにして、本当に接続したいURLをGET以降に
記述したらいいということまではわかりました。
しかしユーザー名とパスワードの必要なproxyサーバーのため、usernameとpassをどのように設定すればよいか
解りませんでした。
ユーザー名とパスワードを入れずにそのまま接続すると、やはり HTTP 407 が帰ってきます。
0050デフォルトの名無しさん
2012/12/15(土) 16:59:22.13第三者には認証の仕組みが解らないのでアドバイスが困難です。
0051デフォルトの名無しさん
2012/12/15(土) 21:59:27.49IE とかなら接続できるんでしょ?
なら、wireshark とかでパケット見ればいいんじゃね。
0052デフォルトの名無しさん
2012/12/19(水) 23:17:11.990053デフォルトの名無しさん
2012/12/22(土) 00:19:44.92クラスでプロトコル定義するのにどういう風に設計したらいいのだろう
単純にunpackして分割してみたりはした
0054デフォルトの名無しさん
2012/12/28(金) 23:20:36.440055デフォルトの名無しさん
2012/12/29(土) 20:15:18.480056デフォルトの名無しさん
2012/12/29(土) 23:54:31.53> 生データからアプリケーションプロトコルをデコード
暗号買得と一緒で, パーターン解析して頻度計算すれば
運が良ければヘッダーくらいは抽出できるかも知れない
> クラスでプロトコル定義する
インタプリタパターンってのが王道らしいぞ
yacc とか bison とか(じゃなくてもいいけど, オートマトン
ジェネレータ的なもの)使えばもっと楽できるかも
おそらく, 全然, 別の話なんだろうな w
0057デフォルトの名無しさん
2013/01/01(火) 01:49:27.21tcpdumpとかwiresharkみたいに
オブジェクト指向の言語で同じことするのに設計というか実装するのに悩んでるんじゃないの?
0058デフォルトの名無しさん
2013/01/01(火) 09:43:35.590059デフォルトの名無しさん
2013/01/08(火) 12:04:02.250060デフォルトの名無しさん
2013/01/08(火) 12:10:55.49IOCPでUDPの送受信って出来ないのかな
ネットでサンプル探してるがTCPしか見つからん
自分でいろいろ組んでみたんだけど送信した後にGetQueuedCompletionStatusがエラー返してくる
受信する相手がいる場合はエラーにならない。相手がいない場合だけエラーになる。
もしかしてTCPみたいに接続が確立されてないと使えないのかな?
0061デフォルトの名無しさん
2013/01/08(火) 12:24:56.58できる
ソケットのみで送受信できるようにbindしておくよろし
0062デフォルトの名無しさん
2013/01/08(火) 12:39:08.79(AIXもIOCPはあるんやで)
どんなエラーか書いてね。
それから相手ポートが閉じてる時にどうなって欲しいの?
0063デフォルトの名無しさん
2013/01/08(火) 14:38:31.89返ってくるエラーはERROR_PORT_UNREACHABLE
相手がいてもいなくても、ただ単純に受信待ちしつつ周期でデータ送りたいだけ
0064デフォルトの名無しさん
2013/01/08(火) 14:54:34.79コード書いてリトライしてください。
0065デフォルトの名無しさん
2013/01/08(火) 15:18:10.84IOCPのハンドル閉じるまで処理巻き戻しとかしなくていいんであれば無視でいいかな・・・
0066デフォルトの名無しさん
2013/01/13(日) 01:43:26.26write(client)からclose(client)の間にfflush(client)をするべきでしょうか?
0067デフォルトの名無しさん
2013/01/13(日) 01:56:39.270068デフォルトの名無しさん
2013/01/13(日) 13:40:48.750069デフォルトの名無しさん
2013/01/13(日) 15:03:21.83気にせせずcloseして帰り値は捨てて良い
ネットワークアプリケーションは信頼性が低いというのは、知識に欠けるユーザーでも信頼性が低いと知ってるから、エラーがでてもあまり気にしない
0070デフォルトの名無しさん
2013/01/13(日) 15:10:22.41>気にせせずcloseして帰り値は捨てて良い
こういう奴が作るネットワークアプリケーションの信頼性は低いんだろうな。
0071デフォルトの名無しさん
2013/01/13(日) 15:50:01.05結局のところバッファの掃き出しはどうすべきなんでしょうか?
0072デフォルトの名無しさん
2013/01/13(日) 16:44:12.28いくらフラッシュしたところで閉じるまでにまたデータ来るかもしれんし
閉じる必要があるときに閉じるだけでいいだろ。
0073デフォルトの名無しさん
2013/01/13(日) 16:49:39.380074デフォルトの名無しさん
2013/01/13(日) 16:53:04.62> いくらフラッシュしたところで閉じるまでにまたデータ来るかもしれんし
意味がわからん。
ひょっとして受信側で flush するとかしてるのか?
0075デフォルトの名無しさん
2013/01/13(日) 18:45:01.080076デフォルトの名無しさん
2013/01/13(日) 18:55:33.43TCP_NODELAY を突くくらいかなぁ
0077デフォルトの名無しさん
2013/01/13(日) 19:01:28.37送り側 shutdown(..., SHUT_WR)
|
v
受け側 if (read(...) == 0) { shutdown(..., SHUT_RDWR); }
|
v
送り側 if (read(...) == 0) {shutdown(..., SHUT_RD); }
とか, かなぁ
0078デフォルトの名無しさん
2013/01/14(月) 02:36:54.80下のコードの後、別々のところにconnectしても普通に通信続けられるみたいだけど。
仕様上の理由でポート固定なんだ。
local.sin_port = htons(12345);
SOCKET sock1 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKET sock2 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
int on = 1;
setsockopt(sock1, SOL_SOCKET, SO_REUSEADDR, (char*)&on, sizeof(on));
setsockopt(sock2, SOL_SOCKET, SO_REUSEADDR, (char*)&on, sizeof(on));
bind(sock1, (sockaddr*)&local, sizeof(local));
bind(sock2, (sockaddr*)&local, sizeof(local));
0079デフォルトの名無しさん
2013/01/14(月) 03:47:55.150080デフォルトの名無しさん
2013/01/14(月) 16:57:55.78TCPのstremは、
<src addr, src port, dst addr, dst port>
の四つ組で識別される。つまりひとつでも違えば別のstream。
0081デフォルトの名無しさん
2013/01/15(火) 21:33:07.75そういうことか、わかった。
0082デフォルトの名無しさん
2013/01/15(火) 22:23:39.87socketプログラミングにあまりはやくに立たないんですか?
0083デフォルトの名無しさん
2013/01/15(火) 23:36:48.620084デフォルトの名無しさん
2013/01/16(水) 02:42:24.010085デフォルトの名無しさん
2013/01/16(水) 03:47:25.08TCP/IPの知識が無ければ、Socketを使ったTCP/IPプログラムでトラブルが
発生したときに、原因を究明することは出来ないだろうな。
0086デフォルトの名無しさん
2013/01/16(水) 07:36:48.74計算しょうか
0087デフォルトの名無しさん
2013/01/18(金) 14:02:30.240088デフォルトの名無しさん
2013/01/18(金) 14:04:29.67他人の通信を傍受すればできます。
0089デフォルトの名無しさん
2013/01/18(金) 14:24:29.60スイッチのバッファをあふれさせる
0090デフォルトの名無しさん
2013/01/18(金) 18:00:48.87ニューロコンピュータ?
0091デフォルトの名無しさん
2013/01/18(金) 20:20:39.650092デフォルトの名無しさん
2013/01/18(金) 21:19:42.25他人の背後で画面を覗き込む。
普通<b> ◆wSaCDPDEl2 </b>じゃないですか?
なんで逆になってるんですかね?
0095デフォルトの名無しさん
2013/01/19(土) 00:22:28.220096デフォルトの名無しさん
2013/01/19(土) 00:53:03.70トリップは標準フォントになっている。
で、名前をつけないでトリップだけつけるから名前の<b>タグを
閉じるために頭に</b>がつけてあるんだと思われる。
0097デフォルトの名無しさん
2013/01/19(土) 00:55:49.45わかりましたありがとうございます
0098デフォルトの名無しさん
2013/01/19(土) 09:04:34.79県央の土権屋のことだろう
0099デフォルトの名無しさん
2013/01/19(土) 12:10:58.99マイiPhoneを識別するにはどうすれば良いとおもいますか?
0100デフォルトの名無しさん
2013/01/19(土) 12:47:33.820101デフォルトの名無しさん
2013/01/19(土) 12:48:37.240102デフォルトの名無しさん
2013/01/19(土) 13:15:28.650103デフォルトの名無しさん
2013/01/19(土) 16:48:41.16> 途中からする
kwsk
0104102
2013/01/19(土) 21:46:04.98CVE-2009-3555 SSL renegotiationによる脆弱性のこと。
apache2.2ではSSLInsecureRenegotiation onにしとかないと、あるディレクティブだけのユーザ証明書使えなかった。
このオプションはInsecureとあるように、脆弱性を受け入れられる場合しか使えない。
今、どうなってるのかは知らない。
0105デフォルトの名無しさん
2013/01/19(土) 21:51:29.65この考え方自体がSSL/TLSに対する挑戦だな
0106102
2013/01/19(土) 21:58:42.35どこでもユーザ証明書を要求してれば問題なかったのかな?
とっくに直ってるか。
Changes with Apache 2.2.15 March 5, 2010
SECURITY:: CVE-2009-3555
0107デフォルトの名無しさん
2013/01/19(土) 22:03:23.73RFC 5746に対応してない糞クライアントなら今も問題になりうるが、
元のお題が個人利用だし想定する必要はない。
0109デフォルトの名無しさん
2013/01/20(日) 18:31:59.78ブラウザのプロクシをローカルホストに設定するなどしないと不可能ですか?
プロクシを設定するないアプリの通信を監視するにはどうすればいいんでしょうか?
0110デフォルトの名無しさん
2013/01/20(日) 18:38:02.670111デフォルトの名無しさん
2013/01/20(日) 19:05:20.00UAみたいだことかなら、ncで適当なポートにサーバ立てて受け付ける。やりとりが見たい時はwiresharkかtcpdump。ncがteeみたいに使えたら便利だし、既存なのかな。
0112デフォルトの名無しさん
2013/01/20(日) 19:08:50.93ありがとうございます試してみます
まだはじめたばかりなんですがネットワークはデバッグが大変ですね
0113デフォルトの名無しさん
2013/01/20(日) 19:45:29.72キャプチャで簡単に全部見えるのだから、標準的なデバッガのない内部バスなんかより良いと思うのだが。
■ このスレッドは過去ログ倉庫に格納されています