ネットワークプログラミング相談室 Port21 at TECH
[2ch|▼Menu]
1:echoちゃん
08/02/29 21:19:37
主にソケットに関しての質疑応答スレッドです。

Programming UNIX Socket FAQ (日本語訳)
 URLリンク(www.kt.rim.or.jp)
Winsock Programmer's FAQ (日本語訳)
 URLリンク(www.kt.rim.or.jp)

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

前スレ
ネットワークプログラミング相談室 Port20
スレリンク(tech板)

関連スレ
Java ネットワークプログラミング 【教えて!】
スレリンク(tech板)

2:echoちゃん
08/02/29 21:20:51
過去スレ:
Port19 スレリンク(tech板)
Port18 スレリンク(tech板)
Port17 スレリンク(tech板)
Port16 スレリンク(tech板)
Port15 スレリンク(tech板)
Port14 スレリンク(tech板)
Port13 スレリンク(tech板)
Port12 スレリンク(tech板)
Port11 スレリンク(tech板)
Port10 スレリンク(tech板)
Port9 スレリンク(tech板)
Port8 スレリンク(tech板)
Port7 スレリンク(tech板) ★行方不明
Port6 URLリンク(pc5.2ch.net)
Port5 URLリンク(pc2.2ch.net)
Port4 URLリンク(pc3.2ch.net)
Port3 URLリンク(pc3.2ch.net)
Port2 URLリンク(pc.2ch.net)
Port1 URLリンク(pc.2ch.net)

3:echoちゃん
08/02/29 21:21:51
図書コーナー:
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
 URLリンク(www.amazon.co.jp)
 そのソースコード
 URLリンク(www.unpbook.com)
詳解TCP/IP〈Vol.1〉プロトコル
 URLリンク(www.amazon.co.jp)
詳解TCP/IP〈Vol.2〉実装
 URLリンク(www.amazon.co.jp)
詳解TCP/IP〈Vol.3〉トランザクションTCP, HTTP, NNTP, UNIXドメインプロトコル
 URLリンク(www.amazon.co.jp)
TCP/IPによるネットワーク構築
 〈Vol.1〉原理・プロトコル・アーキテクチャ
  URLリンク(www.amazon.co.jp)
 〈Vol.3〉クライアント‐サーバプログラミングとアプリケーション
  URLリンク(www.amazon.co.jp)
  Linux/POSIXソケットバージョン
  URLリンク(www.amazon.co.jp)
  Windowsソケットバージョン
  URLリンク(www.amazon.co.jp)

4:echoちゃん
08/02/29 21:22:15
マスタリングTCP/IP RTP編
 URLリンク(www.amazon.co.jp)
Linuxソケットプログラミング?ネットワークプログラミングにおける実践技法
 URLリンク(www.amazon.co.jp)
Webプロトコル詳解?HTTP/1.1、Webキャッシング、トラフィック特性分析
 URLリンク(www.amazon.co.jp)
WinSock2.0プログラミング
 URLリンク(www.amazon.co.jp)
猫でもわかるネットワークプログラミング
 URLリンク(www.amazon.co.jp)
IPv6ネットワークプログラミング
 URLリンク(www.amazon.co.jp)
Visual Basicではじめるネットワークプログラミング超入門
 URLリンク(www.amazon.co.jp)

5:echoちゃん
08/02/29 21:22:38
URL抜粋:
★規格
RFC 日本語版リスト
 URLリンク(www5d.biglobe.ne.jp)
JPNIC RFC関連リンク集
 URLリンク(rfc-jp.nic.ad.jp)
RFC Editor
 URLリンク(www.rfc-editor.org)
HTMLなRFC (セクションを直に示すのに便利)
 URLリンク(www.freesoft.org)
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
 URLリンク(www.studyinghttp.net)
IANA Well known port numbers
 URLリンク(www.iana.org)

6:echoちゃん
08/02/29 21:23:41
★プログラミング
C10K ヘヴィーロードサーバ
 URLリンク(www.kegel.com)
C10K ヘヴィーロードサーバ(日本語訳)
URLリンク(www.hyuki.com)
MSDN
 URLリンク(msdn.microsoft.com)
Raw IP Networking FAQ
 URLリンク(www.whitefang.com)
Java で packet capture
 URLリンク(netresearch.ics.uci.edu)
Randomness Recommendations for Security
 URLリンク(www.faqs.org)
BoostSocket
 URLリンク(www.crystalclearsoftware.com)
The Code Project - Internet & Network programming
 URLリンク(www.codeproject.com)
ネットワークプログラミングの基礎知識 (問題ありのサイト?)
 URLリンク(X68000.q-e-d.net)

7:echoちゃん
08/02/29 21:27:33
★ツール類
ethereal - URLリンク(www.ethereal.com)
Wireshark - URLリンク(www.wireshark.org)
tcpdump - URLリンク(www.tcpdump.org)
Windump - URLリンク(netgroup-serv.polito.it)
WinPcap - URLリンク(www.winpcap.org)
pathchar - fURLリンク(ftp.ee.lbl.gov)
pchar - URLリンク(www.employees.org)
Packetyzer - URLリンク(www.networkchemistry.com)
libevent - URLリンク(www.monkey.org)

★プロトコル
TTCP
 URLリンク(www.sean.de)
 URLリンク(www.kohala.com)
UDP Hole Punching
 URLリンク(homepage3.nifty.com)

★IP, TCP実装
URLリンク(www.iti.fi)
URLリンク(www.sics.se)
URLリンク(www.codeguru.com)
URLリンク(www.geocities.jp)

8:デフォルトの名無しさん
08/02/29 23:04:48
keep-aliveの使い方を教えてほしいです。

9:デフォルトの名無しさん
08/02/29 23:08:42
         / ̄\
        |     |
         \_/
          |
       /  ̄  ̄ \
     /  \ /  \
    /   ⌒   ⌒   \      よくぞこのスレを立ててくれた
    |    (__人__)     |      褒美としてオプーナを買う権利をやる
    \    ` ⌒´    /   ☆
    /ヽ、--ー、__,-‐´ \─/
   / >   ヽ▼●▼<\  ||ー、.
  / ヽ、   \ i |。| |/  ヽ (ニ、`ヽ.
 .l   ヽ     l |。| | r-、y `ニ  ノ \
 l     |    |ー─ |  ̄ l   `~ヽ_ノ____
    / ̄ ̄ ̄ ̄ヽ-'ヽ--'  / オプーナ  /|
   .| ̄ ̄ ̄ ̄ ̄ ̄|/|    | ̄ ̄ ̄ ̄ ̄ ̄|/| ______
/ ̄オプーナ/|  ̄|__」/_オプーナ  /| ̄|__,」___    /|
| ̄ ̄ ̄ ̄ ̄|/オプーナ ̄/ ̄ ̄ ̄ ̄|/ オプーナ /|  / .|
| ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/l ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/| /
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|

10:デフォルトの名無しさん
08/03/01 14:29:19
age

11:デフォルトの名無しさん
08/03/04 13:04:04
Windowsの質問です。

「Winsock Programmers FAQ 2.13 - ネットワークの異常切断はどのようにして検出できますか?」に
あるような状況で、プロトコルに「コマンド/応答」の仕組みがないやり取りをする場合があるときの話です。

クライアントアプリケーションを開発してるのですが、次のような場合どうすればいいのでしょうか?
1. クライアントアプリ(これを作っている)がサーバにconnectする
2. サーバからの要求を受け取り処理結果をsendする

このとき、ネットワークが異常切断していたら、disconnectして再connectすることを求められています。

異常切断しても、ローカルのソケットが生きている場合は、sendは失敗しません。
また、FAQにあるようにecho機能を追加することもできず、既存のプロトコルを変更することも
許されていません。

FAQにあるように、pingで生存確認するしかないんでしょうか?

12:デフォルトの名無しさん
08/03/05 00:36:53
WinSockのconnectについて質問です。

POST URLリンク(aaa.bbb.jp) HTTP/1.1
したいのですが、connectすると
10060「接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」
となってしまいます。

IEのアドレスにURLリンク(aaa.bbb.jp)を入れてやると応答があります(ボディを送っていないのでエラーメッセージしか表示されませんが)。

どうしたらconnectしてPOSTできるようになるでしょうか?
httpsだから特別なことをしなければならんのでしょうか?(その辺がわかりやすいページや本を教えてもらえると助かります。どれもhttpのGETの例ばかりで、httpsやPOSTの例がなくって。)

よろしくお願いします!

13:デフォルトの名無しさん
08/03/05 00:53:29
>>12
httpsなので特別なことをしなきゃならんです。どういうことをするかは
ここにはとても書き切れないぐらい複雑。

よく知らないけど、Windowsだったらwinsockじゃなくてwininetとかいう
ので簡単にできたりしないかな。


14:デフォルトの名無しさん
08/03/05 01:38:35
ありがとう。とりあえずwininet調べてみます!

15:デフォルトの名無しさん
08/03/05 02:07:08
>11
TCPならKeepAliveもあるし、
接続してから一定期間リクエストが来なければ切る手もあるし。

16:11
08/03/05 10:38:10
>>15
やはり、KeepAliveしかないですか・・・。

リクエストのタイムアウトは、通信間隔が非常に長くなる(24時間を越える)場合もあるため、
なかなか厳しいです。

KeepAliveに関して詳しく調べてみます。

17:デフォルトの名無しさん
08/03/05 18:31:23
>>12
URLリンク(www7a.biglobe.ne.jp)


18:デフォルトの名無しさん
08/03/06 00:44:39
機能としてのサーバが、connectを発行するという時点で
かなりオhルかんね。

19:デフォルトの名無しさん
08/03/07 02:09:24
Linux UDPでマルチキャストの勉強をしてるのですが、
recvfrom()中にifdownでネットワーク断が発生した場合、
どうやって検知すればよいでしょう?
tcpdumpではifdown直後にNetwork is down.と表示されるので
何からの方法で検知できるとは思うのですが、、

20:デフォルトの名無しさん
08/03/09 02:31:43
sendで"0123456789"という文字列を送りrecvで受信した際に

"012456789"
  ↑3が抜けてる

というような事が起こりえますか?

21:デフォルトの名無しさん
08/03/09 04:53:29
>>20
規格上は "012" "3" "456789" という IP パケットに分
割されて "3" のパケットが抜けることがあるかもしれ
ないが、一つのパケットに再構成出来ないので UDP で
はパケットロストでアプリケーションには届かないし、
TCP ならパケット再送で正しいパケットが届く。


22:デフォルトの名無しさん
08/03/09 05:19:36
>>21
レスありがとうございます
勉強になります

23:デフォルトの名無しさん
08/03/09 17:28:59
もし送信側の UDP ライブラリが何らかの理由で "012"
"3" "4567890" という具合いに三つのパケットに分割し
て、なおかつ "3" のパケットが抜ければそういう状態
になるかも知れない。

TCP 使ってればまず問題ない。

24:デフォルトの名無しさん
08/03/09 22:29:59
UDPレベルで分割送出するならともかく、
それ以下のレイヤで分割されたなら、全部
届くか届かないかでないの。

25:デフォルトの名無しさん
08/03/09 22:37:11
>>24
> UDPレベルで分割送出するならともかく、

これが > 23 で

> それ以下のレイヤで分割されたなら、全部
> 届くか届かないかでないの。

これが > 21 のつもりだったんだけど、何か変?

26:デフォルトの名無しさん
08/03/09 22:52:10
UDPはそういう分割をしないんじゃなかったっけ?

27:デフォルトの名無しさん
08/03/09 23:53:28
>>26
あー、ユーザーランドインタフェイス内部でのつもりだった。
もちろん、それが特に書かれてるのが TCP の RFC
なのはわかってるけど >>20 に環境が書かれてないんだもん。

28:デフォルトの名無しさん
08/03/10 22:47:33
>>27
お前、シッタカはタイガイニシル

29:デフォルトの名無しさん
08/03/11 00:33:03
SMTPが到達を保証できない理由を
分かり易く解説したサイトってない?

30:デフォルトの名無しさん
08/03/11 00:46:35
>>29
・SMTPを使ったメールはインターネット上のあらゆるサーバを経由して転送される
・あらゆるサーバとは、自分のあずかり知らないサーバを経由する可能性がある
・あずかり知らないサーバを経由するということは、そのあずかり知らないサーバの管理者
 がどうとでもすることができる

他にもあるが、これだけでも分かったつもりにはなれるだろ。

31:デフォルトの名無しさん
08/03/11 01:08:18
いや、そういうハナシじゃなくて
電子商取引推進協議会(ECOM)のガイドラインで
プロトコル上の欠点を示唆してるようだが、詳しい理由を解説してないから、
そこを突っ込んでいる奴を。

URLリンク(www.ecom.jp)

32:デフォルトの名無しさん
08/03/11 01:13:42
問題の文書はコレで、

第5章 通信基盤ガイドライン
URLリンク(www.ecom.jp)

>SMTP では、メールが相手に確実に届く保証がないこ
>とやデータの順次性を必ずしも保てないといったデータ
>送受信の確実性の問題がある。

33:デフォルトの名無しさん
08/03/11 01:16:33
補足:

多分ここら辺りにポイントがあると予想する。

>なお、データの送受信の確実性の確保に関しては、
>通信レベルだけの対応では不十分であり、
>アプリケーションレベルでの対応が必要である。

34:デフォルトの名無しさん
08/03/11 01:26:35
確実の定義次第じゃん・・・

35:デフォルトの名無しさん
08/03/11 01:35:22
そういうミもフタもないハナシなのかなぁ

36:デフォルトの名無しさん
08/03/11 01:38:38
>>32
当たり前のことしか書いてない。まぁメールなんて使うなってこった。

37:デフォルトの名無しさん
08/03/11 01:46:10
ちなみにいまのインターネットだって、送信したデータが*確実に*相手に
届くことなんて保証してないぞ。TCPは可能な限りの努力をするが、
届かないときはどうしようもない。

*確実*だけのキーワードだと、ダウンタイムとか冗長性とか、
障害耐性とか、コアとなるハブの存在だとか、クラスター性だとか
・・・・。

38:デフォルトの名無しさん
08/03/12 00:26:14
TCPは、届かないなら届かなかった事が判るでしょ

39:デフォルトの名無しさん
08/03/12 00:35:07
企業や学校はメールゲートウェイとかあって
メールサーバー本体と直接通信してなかったりするから
TCPソケットでエラーが出なくても届いてない可能性があるかと。

直通のftpメールなら確実だと思うけど。

40:デフォルトの名無しさん
08/03/12 12:36:31
つうかレイヤーを切り分けて考えろよ

41:デフォルトの名無しさん
08/03/12 21:52:33
相手のメールサーバから「受信した」とackが来ても、
その直後にディスクがクラッシュするかもしれないからな
確実とはいえない

42:デフォルトの名無しさん
08/03/12 22:06:50
なにいってんだこいつ

43:デフォルトの名無しさん
08/03/13 04:49:20
>31が「エスパーキボンヌ」にしか見えないのは気のせい?

SMTPプロトコルの欠点だけ論うなら、
 bounceが存在する
  ->エラー通知が10年後に届いても文句言えない
   ->確実性✕
なんて部分があるな。

44:デフォルトの名無しさん
08/03/19 23:41:34
サーバ側KEEP-ALIVEの一回の接続で処理出来るリクエスト数が30で
一つのページに使われているインラインコンテンツが30以上あった場合
これらをダウンロードするためには
もう一回接続する必要がありますか?

45:デフォルトの名無しさん
08/03/19 23:54:54
そりゃそうだろう

46:デフォルトの名無しさん
08/03/22 21:06:10
どんなネットワークプログラム作ったらいいかわかりません
どうしたらいいですか?

47:デフォルトの名無しさん
08/03/22 21:24:16
>>46
特に何か作る必要がないのなら、別に何も作らなくていいのでは?

48:デフォルトの名無しさん
08/03/22 22:16:48
>>46
文字列を入力したらもう一方の端末でその文字列を表示するというのをソケットを使って作成しましょう

49:デフォルトの名無しさん
08/03/26 09:51:42
組み込みlinux機器向けにC言語ベースの簡易httpクライアントを作成しています。
ヘッダの読み取りに、1行ずつストリームから取得するという処理を
書いているのですが、1文字ずつrecvして、\r→\nのパターンが
来るまで繰り返す、という方法はありなんでしょうか?
他に何か良い方法はあるでしょうか。


50:デフォルトの名無しさん
08/03/26 10:19:15
ありだと思うけど、\r\nを返さないサーバもあるから気を付けてね。

51:デフォルトの名無しさん
08/03/26 10:23:39
一応ソースコードです。改行制限キツイですね。
// 1行読み取り,改行を含む長さを返す,バッファに入りきらない場合はnul終端文字列の長さ
int readline(int sd, char *buf, int bufsize) {
int rlen = 0, wlen = 0, cr = 0;
char ch;
for (;;) {
int r = recv( sd, &ch, 1, 0 ) ;
if (r < 0) {
fprintf(stderr,"readline:error r < 0\n");
return r;
} else if(!r) {
fprintf(stderr,"readline:warning !r\n");
break ;
}
if (ch == '\n') {
if (!cr)
fprintf(stderr,"readline:warning !cr\n");
if (rlen < bufsize) buf[wlen++] = ch;
rlen++;
break;
} else {
cr = (ch == '\r') ? 1 : 0;
if (rlen < bufsize) buf[wlen++] = ch;
rlen++;
}
}
if (wlen>=bufsize)
wlen--; // nul終端文字列になるように調節
buf[wlen] = 0;
return wlen;
}

52:デフォルトの名無しさん
08/03/26 10:33:06
>>50
ありがとうございます。
自分でバッファリングしてくこと考えたら
頭痛くなってきたので。
\rはオプション扱いに致します。

53:デフォルトの名無しさん
08/03/27 12:31:48
初心者向けの本は何を買ったらいいんですか?

54:デフォルトの名無しさん
08/03/27 16:03:57
NAT越えって、まだ個人がおいそれと実現できる領域じゃないのかな?
ゲーム作ってて、NAT越えできたらなぁとよく思うんだけど・・・

55:デフォルトの名無しさん
08/03/27 21:09:58
>>54
TCPで接続張ってしまえば、自由に通信できるよ。最初の
接続元はNATの内側から出ないといけないけど。

ゲームなら別にそれでもいいでしょ。

56:デフォルトの名無しさん
08/03/27 22:46:39
>>1
まだftpか。httpまであと何年かかるかな。

57:デフォルトの名無しさん
08/03/28 08:56:49
>>55
>最初の接続元はNATの内側から出ないといけないけど。

意味ねーじゃんw

58:デフォルトの名無しさん
08/03/28 10:30:09
>>55,57
質問者の54です。ちょっと意味がわからないのですが、NAT越えとは以下のことができる技術という認識であってるでしょうか?

AとBは、両方ともルータの中の人間。直接やりとりは普通は無理。
Cというサーバーに、AもBも通信を行なう
Cが、AとBをうまく結びつける
AとBが直接やりとりできるようになる(Cを経由しない!!) ←NAT越え!

これができると、マッチングサーバーCはほとんど負荷無く運営できて良いのですが。
NintendoDSのWIFI対戦も、この仕組みだと聞いております。

このCサーバーを構築する方法は、個人で気軽に手の届く技術でしょうか?
(どうやら、それをツールとして売り出している企業はあるようなのですが)

59:デフォルトの名無しさん
08/03/28 10:53:25
UDP Hole Punching ってのもあったような

60:デフォルトの名無しさん
08/03/28 11:05:36
UDP Hole Punchingは「あまりセキュリティーに力を入れていないルータ」しか乗り越えられないようなのと
具体的ソースを提示しているサイトが見当たらないことが
TCPをUDPに切り替える足かせになっているような気がします。

概念はわかりやすいものなので、実験環境があればテストは簡単そうです。
この土日にでもテストしてみたいと思います。

他にも何か情報があれば嬉しいです。
NAT越えは面白い分野ですが、ム板では盛り上がっていないようなので…

61:デフォルトの名無しさん
08/03/28 11:16:39
初心者も簡単にNAPT設定ができれば、たいした問題にはならんのに
なんで用語とか各メーカーばらばらなんだか・・

62:デフォルトの名無しさん
08/03/28 11:35:02
今となってはUPnPでよくね?
UPnP対応ルータじゃないルータって、いまどき売ってるかね?

63:デフォルトの名無しさん
08/03/28 13:34:36
>>62
だね。きちんと整備されたライブラリ使えば、socketでlistenするのと、
UPnPでポート割り当てるの同感覚。特定のポート番号使えるのが、NAT内の1台だけだって制限があるけど。

64:デフォルトの名無しさん
08/03/28 14:26:22
54です

恥ずかしながら、初めてUPnPというものを知りました。
これは素晴らしい技術ですね。
早速サンプルソースも手に入れましたので、実験してみたいと思います。
ありがとうございました。

>>63
もしよろしければ、きちんと整備されたライブラリ〜というものの例をいただけるとありがたいです。
とりあえず
URLリンク(www.bosuke.mine.nu)
ここを参考に組んでみようと思います。

余談ですが、今たまたまGoogleで色々調べていたら、ここの前スレで同じサイトを参考に組もうとしている人を発見しましたw

65:デフォルトの名無しさん
08/03/28 15:30:45
UPnPもSTUNもルータに激しく依存するから結局繋がらない場合は繋がらないけどな。
UPnPも最近になってやっと危険性が認知されてデフォでoffになったりしてるし。
URLリンク(jvn.jp)
URLリンク(internet.watch.impress.co.jp) cda/news/2008/01/17/18149.html

66:デフォルトの名無しさん
08/03/28 16:47:43
Flashの通信機能を遮断する方法がわからないんだよなー

67:デフォルトの名無しさん
08/03/28 18:25:28
>>60
RFC3489の"5. NAT Variations"あたりを見てみたら?
UDP Hole PunchingできるのはFull Coneだけでしょう.
たしかI-Dのどれかに,どの機種がFull Coneかのリストが載っていたような

>>65
TURNを作れば? :-)

68:デフォルトの名無しさん
08/03/28 22:28:43
NGN普及して、IPv6デフォルトになればNAPTなぞ過去の技術になる。

69:デフォルトの名無しさん
08/03/29 07:01:44
>>68
NAPTは遺物となってもFWは残る

70:デフォルトの名無しさん
08/03/31 04:51:24
かなり初歩的なことをお聞きしますが、プロキシサーバーというものは送られてきたメッセージを直接ホストに送信するだけでよいのでしょうか?

71:デフォルトの名無しさん
08/03/31 10:23:37
駄目

72:デフォルトの名無しさん
08/03/31 12:14:16
>>70
proxy serverといってもいろんな種類があるが何のプロトコルのproxy?

73:70
08/03/31 13:11:11
>>72
HTTPプロトコルです

74:デフォルトの名無しさん
08/03/31 13:22:48
>>73
代表的なのは、
・ メソッドに書かれてる URL から正しくホストに接続する
URLリンク(www.example.com) みたいな URL をホスト接続時は /path1/path2.html に変換する
・ プロキシ特有の環境変数を付加する (必要な場合)
・ CONNECT メソッドを正しく解釈する (CONNECT 以降はそのままデータの送受信を行う)
辺りかな。 RFC などのドキュメントを見るのが一番手っ取り早いとは思うが。

75:デフォルトの名無しさん
08/03/31 13:27:01
>>73
http proxyはちゃんと作るとかなり複雑だが、少くともリクエスト内容は書き換えなきゃいけないだろ。
あとは、HTTP/1.0/1.1の場合分けとかKeepAliveとかpipelineとかchunkとか100 Continueとか、
真面目にやりだすと結構大変。

とりあえずRFC2616嫁

76:70
08/03/31 13:35:09
>>74-75
レスありがとうございます
RFCのドキュメントを読んでみることにします

77:デフォルトの名無しさん
08/03/31 13:37:56
まぁ、読んでもわかんないと思うけどね・・・

78:デフォルトの名無しさん
08/03/31 13:39:24
>>77
そないなことあらへんで。

79:デフォルトの名無しさん
08/03/31 13:44:17
内容を理解できないということじゃなくて、proxy serverの構成要件とは何かがわかんないだろうって意味

80:デフォルトの名無しさん
08/03/31 13:47:37
>>79
あ、なるほど。

81:fxで裁判中。教えて
08/04/03 08:29:02
外国為替証拠金取引会社のアトランティックトレードと裁判になりました。

裁判の内容をここに記してみました
システム障害等でくわしいかた、是非とも情報をお待ちしております。
よろしくお願いします。
  URLリンク(members3.jcom.home.ne.jp)


82:デフォルトの名無しさん
08/04/04 00:49:43
>>68
そのNGNがv6マルチプレフィクス問題で、やっぱNAPT使うか?とも言われている件。

83:デフォルトの名無しさん
08/04/09 11:10:34
プロトコル定義するときに 「最初のグリーティングはクライアントから出させる事」 みたいな
一般論的なセキュリティ上の推奨をどこかで見たようながあったような気がするんだが、
これって単に攻撃のための情報を減らす目的でしたかね?

何かそういった鉄則集みたいなのを 10 年くらい前にどこかで見たような記憶があるんですが
どこかご存知ないですか?

84:デフォルトの名無しさん
08/04/12 11:31:55
簡単なオンラインゲーム(MMO)を作ろうと思うのですが、
無料のデータベースであるMySQLかSQLServer2005Expressを使おうと思ってますが
おすすめのものとその理由など教えていただきたいです。

85:デフォルトの名無しさん
08/04/12 11:35:23
日本語でおk

86:デフォルトの名無しさん
08/04/12 12:00:58
>>84
スレ違い以前に板違いだぞ、DB板かゲ製行ってくると良い

87:デフォルトの名無しさん
08/04/12 13:32:10
>>86
いってきます

88:デフォルトの名無しさん
08/04/12 17:05:47
Winsockを使って相手サーバがKEEP-ALIVEに対応しているか確かめる方法はありますか?

89:デフォルトの名無しさん
08/04/12 17:07:23
投げてみて、その反応をさぐるしかない。

90:デフォルトの名無しさん
08/04/12 18:39:30
>>89
投げてみました。
ApacheではKEEPALIVEがOffにされていた場合
Connectionがcloseとなっています。
closeであるかないかで判定しようと思うのですが、
どうでしょうか?

91:デフォルトの名無しさん
08/04/12 18:41:43
HTTP かよ。
Connection: close ならエンティティボディ送信後に切断だよ。
RFC 嫁。persistent connection でググレ

92:デフォルトの名無しさん
08/04/12 21:35:08
Connection(小文字)がCONNECTION(大文字)で返ってくるサーバはありますか?

93:デフォルトの名無しさん
08/04/12 21:40:22
いいからRFC読めよ

94:デフォルトの名無しさん
08/04/12 21:44:06
>>93
ウラル貼ってくれ

95:デフォルトの名無しさん
08/04/12 21:54:17
>>93
URL貼って下さい

96:デフォルトの名無しさん
08/04/12 21:56:35
URLリンク(www.google.co.jp)

97:デフォルトの名無しさん
08/04/12 21:59:34
>>96
いや、
RFCの何番?

98:デフォルトの名無しさん
08/04/12 22:03:28
だからみりゃわかるだろ低脳。
そもそも>>1に「関連リンク云々」書いてあること読めないか?

99:デフォルトの名無しさん
08/04/12 22:16:56
>>98
いや、
だからHTTPヘッダが大文字で返ってくるサーバとかあるのか、
って聞いてんだよ

100:デフォルトの名無しさん
08/04/12 22:21:10
あるだろうなぁ。

101:デフォルトの名無しさん
08/04/12 22:26:46
>>100
ありがとうございます。

102:デフォルトの名無しさん
08/04/12 22:57:12
規定してなきゃ存在するとみなすのが当然じゃん。
その規定が書いてあるのがRFCなんだけど。

103:デフォルトの名無しさん
08/04/12 23:05:57
>>102
素で意味がわからん。

104:デフォルトの名無しさん
08/04/12 23:30:50
>>102
規定してあるよ。おまいがよく読めw

105:デフォルトの名無しさん
08/04/13 00:09:31
何もないと思うが。

106:デフォルトの名無しさん
08/04/13 00:49:58
>>105
URLリンク(www.studyinghttp.net)
4.2 メッセージヘッダ
一般ヘッダ (section 4.5)、リクエストヘッダ (section 5.3)、レスポンスヘッダ (section 6.2)、エンティティヘッダ (section 7.1)
各フィールドを含む HTTP ヘッダフィールドは、RFC 822 [9] の Section 3.1 で与えられているものと同じである共通のフォーマットに従う。
それぞれのヘッダフィールドは、名前、その後にコロン(":")、そしてフィールド値から成る。
フィールド名は、大文字・小文字を区別しない。

「大文字と小文字を区別しない」

107:デフォルトの名無しさん
08/04/13 00:54:11
>>106
そりゃRFCだろ。

108:デフォルトの名無しさん
08/04/13 01:00:51
変な流れになってるなぁ。

109:デフォルトの名無しさん
08/04/13 09:39:25
どうみても同一人物だろ・・・
言い返されたからってムキになるなよ(;´Д`)

110:デフォルトの名無しさん
08/04/13 10:10:40
迷子のキムチさん
出て行ってください

111:デフォルトの名無しさん
08/04/19 21:15:07
Keep-alive使ったサンプルコードってあります?
Winsockで

112:デフォルトの名無しさん
08/04/19 21:46:27
一週間ぶりですね

113:デフォルトの名無しさん
08/04/19 22:11:14
Linux用に作成したソケット通信アプリのテストにtcpdumpを使いたいのですが
アプリが送受信しているデータの表示方法がなかなか分かりません。

tcpdump -s 1600 -X tcp port 1024

と打った上で、アプリに送受信させるとデータが含まれたパケットの中身が
バイナリで表示されますが、アプリが送受信しているデータだけ表示させる
方法はないでしょうか?
どなたか教えてください。よろしくおねがいいたします。

114:デフォルトの名無しさん
08/04/19 23:17:37
>>113
つwireshark

115:デフォルトの名無しさん
08/04/19 23:52:33
X環境入れてないのです(;_;)

116:デフォルトの名無しさん
08/04/20 03:30:50
>>112
……(´・ω・`)

117:デフォルトの名無しさん
08/04/22 14:58:59
最近ネットプログラミングはじめたのですが、
よくサーバはクライアントのパケットを信用してはいけないと書かれていて、
逆にクライアントはサーバのパケットを信用して良いのでしょうか?


118:デフォルトの名無しさん
08/04/22 15:21:33
クライアントが、信用できないサーバ (不特定多数のサーバ) と通信する可能性があるなら、信用してはいけない。
信用できるサーバとしか通信しないなら信用してもいいかもしれないが、
信用できないという前提で組む方が、サーバに何かバグがあったり、
通信の改ざんを受けたり、なりすましサーバに当たったりしたときに、安全でいいと思うよ。

119:デフォルトの名無しさん
08/04/22 17:24:53
>>118
なるほど、ありがとうございます

120:デフォルトの名無しさん
08/04/22 17:28:58
送るときは厳格に、受ける時は寛容に、はネットワークプログラミングの基本。

121:デフォルトの名無しさん
08/04/22 22:03:41
受けるときも厳格に、が基本だよ

122:デフォルトの名無しさん
08/04/22 22:30:16
読解力が試されます

123:デフォルトの名無しさん
08/04/23 06:22:28
プロセス間通信用にソケットを使う場合、
どういう取り決めにしてますか?
自分はhttpと同じで、行単位で空改行までを
送受信単位にして、必要ならオプションの
バイナリデータが続く、という感じにしてますが。
いきなりバイナリでやりとりするのは
データ構造決めるのが面倒なんで。
何か既成のモデルがあったらいいんですが。

124:デフォルトの名無しさん
08/04/23 09:41:10
xml-rpcとか?

125:デフォルトの名無しさん
08/04/23 10:24:29
シンプルなバイナリなら TLV
任意長バイナリは GIF っぽくサブブロック化

126:デフォルトの名無しさん
08/04/23 15:46:48
>>121
受けるときは寛容に、が基本。

URLリンク(tools.ietf.org)
> In general, an implementation must be
> conservative in its sending behavior, and
> liberal in its receiving behavior.


127:デフォルトの名無しさん
08/04/23 16:09:50
>>123
俺の長い組み込み経験からのアドバイス。

1.レイヤを定める。下位レイヤは上位レイヤのデータ
 構造を知らなくてもやり取り出来るようにする。バイ
 ナリ←→プログラムデータの変換部分との間にユーティ
 リティ的なレイヤがあると便利。

2.最初に「バイト長」とか入れない。これをやられる
 と送信側でデータが揃わないと送出開始出来なくなる。
 仕事でこういうプロトコル決めてる奴を見ると殺意が
 芽生える。

3.1や2を実現するために、たとえバイナリでもエス
 ケープ文字を用意する。俺が良く使うのは SLIP のエ
 スケープ(昔仕事で使ったから)。下位レイヤでデー
 タやコマンドの開始/終了などを用意する。読む側の
 下位レイヤで「開始」が来たら読んでる途中のものを
 全部破棄して例外を投げるように(初期状態 read で
 catch するように)すると、通信相手のバグその他で
 変な状態に陥っても元に戻ることが保証出来る。


128:デフォルトの名無しさん
08/04/23 16:23:06
>>127
あんまり殺気たてんでくれ。
俺の20プロダクト中16回コロされてる事になる。

129:デフォルトの名無しさん
08/04/23 18:21:40
俺はパート長は入れるね

130:デフォルトの名無しさん
08/04/23 18:40:40
任意長のフィールドは 1 バイトのブロック長と続く最大 256 バイトのデータブロック。ブロック長 0 が終端。
GIF と PNG のフォーマットは通信用データ構造のお勉強に最適。

131:デフォルトの名無しさん
08/04/23 20:35:39
>>127
>2.最初に「バイト長」とか入れない。

が、なぜ以下のようになるのかまったく意味不明。

>これをやられると送信側でデータが揃わないと送出開始出来なくなる。

データそろえて送信したところで、ネットワーク上で何バイトずつ
受信側に届くかなんて何の保証もないわけで。そろえて送る
理由がまったくない。

132:デフォルトの名無しさん
08/04/23 20:46:19
>>131
127 じゃないけど、何を言ってるか分からないのは君だけだと思うよ。

133:デフォルトの名無しさん
08/04/23 22:27:05
俺もわからん。RAW SOCKETの話?
データ長は,送るものが先に決まるならプロトコルとしてはありかもしれないが、
エスケープ文字を入れて区切りの失敗を見つけるぐらいならソケット閉じてしまったほうが早いのでは?
むしろUDPで自分で順番を制御するとか。

134:デフォルトの名無しさん
08/04/23 22:38:11
ヒント:組み込み屋さん


135:デフォルトの名無しさん
08/04/23 22:53:03
組み込みでハードウェアがらみな制限付きで、バッファの制限もついてるからかな?
DLNAとかではHTTPベースでchunked encodingとかあったが、あれは、ストリーム送信用に送信開始時にデータ長が不定だったからだが。
ほかもそんなことが多いのかな?

136:デフォルトの名無しさん
08/04/23 23:09:21
内容検証用の MD5 ハッシュも全体を走査してみないと決定できないし。そういう情報を先頭に
持ってこられると、XSL の処理結果や BLOB を垂れ流したい場合は一度ファイルか何かに
落とさなきゃいけないからかなり不便。

137:デフォルトの名無しさん
08/04/23 23:13:02
時代は組み込みだからな。

データ全体を収めるバッファを用意するなんてありえない。

数KBさえ無駄にできない。

お前らはこういう基本すらわかってないんだな。

138:デフォルトの名無しさん
08/04/23 23:59:50
すみません教えていWINSOCKでPROXY対応なんですが
リクエストヘッダーへ
Proxy-Connection: keep-aliveも
Connection: Keep-Aliveも指定しているのですが
PROXYがサーバー間の接続を勝手に切ってしまいます
クライアントー>PROXYの接続は維持しています
サーバー側のエラーコードは10054を示しています

サーバーからのレスポンスはしっかり帰ってくるのですが
直後に切られます。 なんで?

リクエストはPOSTなんですが これって正常動作?

139:デフォルトの名無しさん
08/04/24 00:04:51
別に組み込みに限った話じゃないと思うが、システムの
時間ボトルネックが何処かを考えれば自明。

どうがんばっても通信速度以上のスピードでは送れない
んだから、なるべく早く送信開始して、バッファアンダー
ラン(タイムアウトによる PUSH とか)にならないよう
にバッファに詰めていければ一番効率が良い。

とはいえ最近は下手するとディスクの方が遅かったりす
るからなー。

>>136
> 内容検証用の MD5 ハッシュも全体を走査してみないと決定できない

送信時は送信しながら計算して最後に付加すればいいん
だけど、受信は受信しながらオブジェクト作っても合致
しないときに破棄する必要があるんで面倒なんだよな。


140:デフォルトの名無しさん
08/04/24 00:09:05
正常ではないな。
プロキシがサーバとの接続を維持する気がないなら Keep-Alive でリクエスト出したらいかん。
多分プロキシ実装が Persistent Connection に対応していないし、リクエストヘッダも何も考えず
素通りさせてるだけだと思うが。

141:デフォルトの名無しさん
08/04/24 00:13:59
受信時は一定容量ごとのMD5でいいんだが、それよりファイル保存時にディスクアクセスを早くしようとして、
受信サイズの最後尾までファイルを拡張してから受信を開始すると途中で中断したときにある個所から後ろがごみデータが充填するんだが、
ファイルIOで一定サイズ移行のデータを削除してファイルサイズを小さくするって言う命令が無いために、ファイルを拡張すること自体が駄目何だよねぇ。
どこかに有効なファイルサイズを別に保存すればいいんだが、管理ファイルが散乱するので避けたいのだが、いい方法は無いものか。

142:デフォルトの名無しさん
08/04/24 00:16:39
>>140ありがとうございます
ただ、PROXYは定番どころのSQUIDをデフォルトで
使用しています。 レスポンスヘッダーがおかしければ
クライアントにデーターが届かないはずなんですが・・・
困ってます。

143:デフォルトの名無しさん
08/04/24 00:40:33
>>141
?
PC 程度以上の OS のファイルシステムなら (ANSI 標準じゃないにしても) 大抵用意されてるんじゃないか?
URLリンク(www.linux.or.jp)

>>142
よく知らんけど Squid が HTTP/1.0 互換モードで動いてるとか。

144:デフォルトの名無しさん
08/04/24 00:41:55
#include<stdio.h>
void main(void)
{
int a,b,c;
printf("数字を入力してください\n");
scanf("%d",&a);
printf("数字をまた入力してください\n");
rewind(stdin);
scanf("%d",&b);
printf("数字をまたまた入力してください\n");
scanf("%d",&c);

if(a == b == c)
printf("等しいです,\n");
else
printf("等しくないです,\n");
}


これでa==b==cだったら"等しい"と表示させるように組んでるのに 1、1、1以外の数字は入力してもは全部"等しくないです"になるのは
なんででしょうか?

145:デフォルトの名無しさん
08/04/24 00:44:52
>>144
スレリンク(tech板)
でどうぞ。

146:デフォルトの名無しさん
08/04/24 00:50:11
>>144
スレ違いだけど
君が参考にしてるものは信用しないほうがいい

147:デフォルトの名無しさん
08/04/24 00:58:41
>>143
たしかにSquidが吐き出すヘッダーは 1.0になっています
調べてみます。

148:デフォルトの名無しさん
08/04/24 02:08:49
非同期に双方向でイベント通信するためのプロトコルって何かある?
できれば 1:1 じゃなくて中継サーバかました n:n で使える奴。

149:デフォルトの名無しさん
08/04/24 02:38:39
>>148
TCP


150:デフォルトの名無しさん
08/04/24 03:12:13
>>149
もう一層上で。

151:デフォルトの名無しさん
08/04/24 03:48:09
>>150
2ちゃん

152:デフォルトの名無しさん
08/04/24 05:17:26
SIP

153:142
08/04/24 05:33:32
自己レスです
公開PROXYでテストしたところうまくいきました
また、ぐぐったところ SQUIDはHTTP/1.1をHTTP1.0に
勝手に変換する事がわかりました
(ヘッダーは別としてかといってPROXY側から切断するので???ですが)
これ以降は板違いですので移動します m(。。)m

154:デフォルトの名無しさん
08/04/24 07:10:52
>>143
ありがとう。知らなかったよorz
少しぐぐって、winだと_chsizeや下のサイトがあった。
URLリンク(www.void.in)

ANSIの関数全て読んだのは93年だったがそのころからあったのかな・・・・

155:デフォルトの名無しさん
08/04/24 23:26:33
winsock2でパケットキャプチャモジュールを作成したのですが、
プロミスキャスモードにしないと何もパケットを受信しません。
自分宛のパケットだけキャプチャしたいのでプロミスキャスモードは使用したくないのですが
プロミスキャスにしなくてもパケットを受信する事は出来るのでしょうか?

156:デフォルトの名無しさん
08/04/25 23:31:22
バイト長いれるなって話がまったくわからん。
カイヤでstartとか送って、endが届くまでバイナリが続くとかにすればいいの?

157:デフォルトの名無しさん
08/04/25 23:32:45
s/カイヤ/下位レイヤー/;

158:デフォルトの名無しさん
08/04/25 23:47:02
下位の部分を作るときに、アプリ(上位)側が全部を用意し終るまで出力を開始できないってことだろう。

例えばディスクへアクセスするドライバを書くときに、
ファイルのサイズが判明するまでHDDに書き込めない(領域を確保出来ない)ようだとやりにくくて仕方が無い、
というような話だと思う。たぶん。

159:デフォルトの名無しさん
08/04/25 23:49:35
あ、例えが悪いな。
HDDのドライバじゃなくてファイルシステムの造りの方が適切だな。

160:デフォルトの名無しさん
08/04/26 00:24:08
>>156-157
尻にしかれた某芸能人の事かとオモタ


161:デフォルトの名無しさん
08/04/26 17:04:22
>>130
> GIF と PNG のフォーマットは通信用データ構造のお勉強に最適。

画像フォーマットはツールが知らない種類のチャンクを読み飛ばせるように
バイト長が入ってる。通信の為じゃない。


162:デフォルトの名無しさん
08/04/26 17:07:24
>>161
インタレースも知らないのか?

163:デフォルトの名無しさん
08/04/26 17:07:33
>>161
ま、確かにそうなんだけど、GIFはCompuServe由来だし、PNGはPortable Network Graphicsだから、通信用である事も意識していたと思うよ。

164:デフォルトの名無しさん
08/04/27 14:03:53
>>161
思いっきり局部しか見てませんて感じのレスだな。

165:デフォルトの名無しさん
08/04/28 10:45:56
OSPFにしろ、BGPにしろ、RSVPにしろ、そもそもIPからしてペイロード長先付けだろ。
データがそろわないと、長さが書けないから送信できず、バッファが要る、ってのは、
可変長データならチャンク化すれば済むこと。
固定長データなら、バイト列にエンコーディングするレイヤよりも上のレイヤが先にデータ長を宣言すれば済む。


166:デフォルトの名無しさん
08/04/28 10:47:38
長い組み込み経験からのアドバイスなんだぜ?

素直に聞けよ。

167:デフォルトの名無しさん
08/04/28 14:00:03
臨機応変
適材適所
一長一短

168:デフォルトの名無しさん
08/05/06 07:23:41
IP のパケットサイズって最大 64kB だと思うんだけど、イーサなんかの
MTU の 1,500B とかっていうサイズは、IP パケットがさらにその下のレイヤーで
分割されているということですかね?

169:デフォルトの名無しさん
08/05/06 09:36:31
IP fragmentation でヤフれ

170:デフォルトの名無しさん
08/05/06 14:49:23
IPスタックが、下層から最大送出可能な
パケットサイズをもらってきておいて、
IPパケットを送出する際に分割するような

171:デフォルトの名無しさん
08/05/06 15:32:52
>IP のパケットサイズって最大 64kB
これも実装依存だそうだ

172:デフォルトの名無しさん
08/05/06 17:14:11
ヘッダの長さフィールドが16bitってだけでそ

173:デフォルトの名無しさん
08/05/07 23:22:32
selectで
PULLHUP相当のエラーって感知できますか?
大人しくpull()った方がいい?

174:デフォルトの名無しさん
08/05/08 04:11:09
pullじゃなくてpollでggr

175:デフォルトの名無しさん
08/05/08 22:18:04
select失敗した場合ってFD_SETって
どうやって処理すればいいの?

単純にクリアするだけでおk?

176:デフォルトの名無しさん
08/05/09 04:03:10
おれはそういうの気にしないために、
fdsetは呼ぶ前にコピーして、そっちをselectに掛けてる。
コピーに変更があったら手動でオリジナルを更新。
何かのサンプルの真似だけど。

177:デフォルトの名無しさん
08/05/09 04:08:31
sshでログインしてるとき小さいファイルを向こう側へもっていきたいんだけど
わざわざFTPとか起動するの面倒なときっていい方法ありますか?

178:デフォルトの名無しさん
08/05/09 04:20:04
ssh ファイル転送
でggr

179:デフォルトの名無しさん
08/05/09 05:04:50
こっち側がwindowsの場合はどうすればよいでしょうか?
たとえばpoderosaを使ってる場合。

180:デフォルトの名無しさん
08/05/09 11:39:53
scp

181:782
08/05/10 21:29:28
linux版より誘導されてきました
よろしくオナガイシマス
linuxでの実装、通信関連の実装の経験の無い未熟ものです
URLリンク(www.katto.comm.waseda.ac.jp)
linux TCPサーバー側
という部分のコードをコンパイルしているのですが、
accept()システムコールのこの部分で
dstSocket = accept(srcSocket, (struct sockaddr *) &dstAddr, &dstAddrSize);
error: invalid conversion from \342\200\230int*\342\200\231 to \342\200\231 socklen_t\342\200\231
と怒られています
どうしたら怒られなくなりますか

コンパイラは gcc-4.1.2-33です


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4697日前に更新/99 KB
担当:undef