- PR -

Listenキューについて

1
投稿者投稿内容
アントニオ
会議室デビュー日: 2006/01/10
投稿数: 18
投稿日時: 2006-04-10 22:48
ソケット通信について勉強していて、分からないことがあるので質問です。

listen()でソケットを接続待ち状態になり、listenキューというキューを使って接続要求を受けると思いますが、listenキューは具体的にどのようなものが格納されるんでしょうか?
またキューがあふれることはあるんでしょうか?
その辺の詳しい仕様が分かるURL等があれば教えてください。

よろしくお願いします。

加納正和
ぬし
会議室デビュー日: 2004/01/28
投稿数: 332
お住まい・勤務地: 首都圏
投稿日時: 2006-04-11 00:21
引用:

アントニオさんの書き込み (2006-04-10 22:48) より:

listen()でソケットを接続待ち状態になり、listenキューというキューを使って接続要求を受けると思いますが、listenキューは具体的にどのようなものが格納されるんでしょうか?
またキューがあふれることはあるんでしょうか?
その辺の詳しい仕様が分かるURL等があれば教えてください。



あ〜、古い技術(苦笑)なのでURLは分からんですが、、
「誰が」listenキューを作ると思います?

「誰が」というと人みたいですが(実質上は人なわけですが)
「なんか」のプログラムが「キュー」を作ってるわけです。

その「なんか」というのは時代により変遷するので、昔のURLを見ても
間違ってるかもしれません。

その「正誤」はどうやって判断するのでしょうか。

ちなみに10年ぐらい前だと、カーネルが(OSの1機能として)「キュー」を提供するのが
あたりまえでした。(実装は隠して)

カーネルの一部なので、カーネルの一パラメータとして設定することもありました。
つまり設定するためには、カーネルの再起動が必要だったりすることもありました。

今は、、一ライブラリかも。「具体的に」格納されるのは、カーネルによります。
ぶっちゃけちゃえばメモリですけど。実質上は分からないというのが実際でしょう。

「あふれることがあるか」といえば、あります。あふれた場合は、ブラウザ等で接続
されると速攻で「connection not found」といわれます(ました)

「仕様」に関しては、実際上は公開されていないのが実情だと思います。
書いてあっても信じられないというところでしょうか。

アントニオ
会議室デビュー日: 2006/01/10
投稿数: 18
投稿日時: 2006-04-11 22:46
返信ありがとうございます。

確かに色々とホームページを探しても、それなりにしか記述されていないです。

listenキューの管理自体が無理(不可能)ということでいいのでしょうか?
あふれたがどうかをログなどで監視することもできないということでいいでしょうか?

よろしくお願いします。

あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-04-12 02:16
この質問って、listen(2)の引数のバックログに関してですよね?

引用:
listen()でソケットを接続待ち状態になり、listenキューというキューを使って接続要求を受けると思いますが、listenキューは具体的にどのようなものが格納されるんでしょうか?



今の主要なOSならば、ほぼ確実にカーネルが実装しています。
格納されている内容は、TCP/IPなら接続元のIPアドレスやポート番号、
その他の情報が入っています(SYNパケットの中身と思えばいいかと)。

OSによってはログに出力することもできると思いますよ。
まぁ、バックログを多めに設定(50とか)して、それが溢れるような場合では
DoSを受けてたり、帯域が溢れてたりでえらいことになってるはずですけど。
1

スキルアップ/キャリアアップ(JOB@IT)