Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/05:20/22
2024/05/04:22/24

2024/03/06より340/1375
人気モジュール
No.1: フォーラム 20
No.2: QualNet概要 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット17
No.2:Linux2
No.3:Unknown OS1

No.1:どっかの巡回ロボット17
No.2:Safari2
No.3:Unknown Browser1

日曜日からの合計
メイン
   Transport Layer Protocol Implementation & Model Development
     TCPのコネクション管理
投稿するにはまず登録を

題名 投稿者 日時
   TCPのコネクション管理 takeshi 2007/6/26 14:29
   » Re: TCPのコネクション管理 mast 2007/6/26 15:46
       Re: TCPのコネクション管理 takeshi 2007/6/29 18:18
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
mast
投稿日時: 2007/6/26 15:46
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: TCPのコネクション管理
こんにちは。

node->transportData.tcpで管理しています。
ただし、INPCB(Internet Protocol Control Block)が絡んでいるので、把握するのが少々ややこしいかもしれません。

node->transportData.tcpには、struct inpcb型のheadという名前のフィールドがありますが、
これが、コネクション毎に用意されるstruct inpcbのインスタンス(INPCB)のリストになっています。

          node
+-----------------------+
|     transportData     |
| +-------------------+ |
| |        tcp        | |
| | +---------------+ | |      +-----------+    +-----------+    +-----------+
| | | head(INPCB) --+-+-+----->|   INPCB   |--->|   INPCB   |--->|   INPCB   |--->...
| | +---------------+ | |      +-----------+    +-----------+    +-----------+
| +-------------------+ |
+-----------------------+


この各INPCBの中に、inp_ppcbというフィールドがあり、これが各々のコネクションのTCPCB(TCP Control Block: struct tcpcbのインスタンス)へのポインタとなっています。

各コネクションのINPCB/TCPCBの生成は、tcp_attach()で行われます。

また、特定コネクションのリスト内サーチは、
in_pcblookup():4タプル(LocalAddr/LocalPort/RemoteAddr/RemotePort)を検索キーとしたサーチ
または、
in_pcbsearch():コネクションIDを検索キーとしたサーチ
で行い、intotcpcb()を呼び出して、そのINPCBのinp_ppcbが指しているTCPCBを取得します。


詳しくは、一度、tcp_usrreq.cppを読んでみてください。
上記のようなことがたぶん読み取れると思います。
(tcp_connect()関数などを追うと分かりやすいかと思います。)
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT