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

パスワード:


パスワード紛失

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

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

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

日曜日からの合計
メイン
   Transport Layer Protocol Implementation & Model Development
     シーケンス番号が符号付きint型の範囲を超えた際の動作について
投稿するにはまず登録を

題名 投稿者 日時
   シーケンス番号が符号付きint型の範囲を超えた際の動作について saka 2013/10/24 17:40
     Re: シーケンス番号が符号付きint型の範囲を超えた際の動作について hiro 2013/10/25 9:40
     Re: シーケンス番号が符号付きint型の範囲を超えた際の動作について saka 2013/10/25 11:56
     » Re: シーケンス番号が符号付きint型の範囲を超えた際の動作について hiro 2013/10/25 16:44
         Re: シーケンス番号が符号付きint型の範囲を超えた際の動作について saka 2013/10/25 17:29
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
hiro
投稿日時: 2013/10/25 16:44
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: シーケンス番号が符号付きint型の範囲を超えた際の動作について
> こちらの説明の仕方が悪くうまく説明できておりませんでした。
> if (SEQ_GEQ(tp->snd_una, tp->recover)) (tcp_input.cpp関数)
> #define SEQ_GEQ(a,b) ((int)((a)-(b)) >= 0) (tcp_seq.h関数)
> 上記の条件分岐において、シーケンス番号が符号なしint型であることは理解していましたが、
> tp->recover=0の場合において、
> tp->snd_unaの値が符号付きint型の値より大きい場合と
> 符号付きint型の値より小さい場合で動作が異なるのではないかという疑問でした。

整理させて下さい。
if (SEQ_GEQ(tp->snd_una, tp->recover)) {
// true
} else {
// false
}
この式は
if ((int)((tp->snd_una)-(tp->recover)) >= 0) {
// true
} else {
// false
}
と展開される。
このif文では、tp->snd_unaとtp->recoverの差を計算しているので、

例えば、2147483647 -          0 = 2147483647 この場合は、(int)で評価すると、 2147483647 なのでtrue
例えば、2147483648 -          0 = 2147483648 この場合は、(int)で評価すると、-2147483648 なのでfalse
例えば、3000000000 - 1000000000 = 2000000000 この場合は、(int)で評価すると、 2000000000 なのでtrue
例えば、3000000000 -  852516352 = 2147483648 この場合は、(int)で評価すると、-2147483648 なのでfalse


ここまでの私の理解は正しいですか。

> 既存のTCPの動作において、そもそもtp->recover=0になる事がおかしいのでしょうか?

すみません、NewRENOにおける挙動を詳細に理解していないので、私にはわかりません。

> 負になっても問題なく動作できるシミュレータになっているのでしょうか?

何が負になるのでしょうか。if文の計算が負になる場合ですか?

> シーケンス番号が符号付きint型の範囲を超えると正常に動作しないのでしょうか?

実際に実行してみるとわかりますが、2^31=2147483648を超えても正常に動きます。

また、QualNet 4.0からのリリースノートを見ても報告は無いですね。
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT