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

パスワード:


パスワード紛失

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

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

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

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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
takeshi
投稿日時: 2007/6/26 14:29
新米
登録日: 2006/5/10
居住地:
投稿: 16
TCPのコネクション管理
ノードが複数のTCP通信を行う場合に,複数のTCPコネクションが使われていると思うのですが
それら複数のTCPコネクションを管理している部分が知りたいのですがわかりません

nsと違ってtcpがclass化されていないと思うのですが
どなたかご存じの方がいらしましたら,ご教授頂けると幸いです
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()関数などを追うと分かりやすいかと思います。)
takeshi
投稿日時: 2007/6/29 18:18
新米
登録日: 2006/5/10
居住地:
投稿: 16
Re: TCPのコネクション管理
mastさん

ご丁寧な情報ありがとうございました

上記の情報を便りに一度tcp_usrreq.cppなど読んでみようかと思います

また大変恐縮ではありますが

あるコネクション番号がついたTCPコネクションにA〜Bまでのシーケンス番号のついたTCPデータを送信する方法や
あるコネクション番号がついたTCPコネクションの通信を途中で止めるなどは方法などはご存知でしょうか.
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT