(toppers-users 2071) Re: パイプライン処理について

Tachi Yoshihiro Tachi.Yoshihiro @ exc.epson.co.jp
2005年 7月 27日 (水) 11:58:44 JST


舘です。こんにちは。

平田様からもコメントがありましたが、IEの動作はおかしくありません。
フレーム構造のページや画像が多数あるページを表示するためにブラウザ
が複数のコネクションを試みるのは普通の動作です。
逆にHTTP1.1のKeep-Aliveはこのような動作時のTCP接続・切断のオーバー
ヘッドを削減するために導入されたと聞いた覚えがあります。

TINETに添付されているHTTPdの場合、複数のコネクションに対応するため
に、タスクを2つ起動するようになっています。
一応確認しますと次のような仕掛けです。

・nserv/Makefile中でNUM_WWW_SRV_TASKを2に定義している。
・netapp/wwws.cfg中でタスクを2つCRE_TSKしている。
 ・それぞれのタスクをTA_ACTで起動している。
 ・それぞれのタスクの引数exinfに異なるCEPIDを渡している。
・nserv/tinet_nserv.cfg中でHTTP用CEPIDを2つ定義している。

以上の結果同じタスクが2つ起動し、2つまでのコネクションを同時に処理
できるようになっています。
(一般のソケットではあらかじめ定義しなくても複数のコネクションを
作れますが、組み込みでは「いくつになるかわからない」では許されませ
んし、そもそもソケットでも無限にはコネクションできません。)

ご説明によれば、ある接続中に別のポートから接続要求したところACKを
返したということですから、2つのCEPIDが同じREPIDに関連付けられて
tcp_acp_cepしている(CEPがlisten状態になっている)ようです。ここま
で問題ありません。
しかし、その先の処理がどのようになっているかについては、変更されて
いるようですので、お書きになったプログラム次第としか言えないです。