メイン 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の差を計算しているので、
ここまでの私の理解は正しいですか。 > 既存のTCPの動作において、そもそもtp->recover=0になる事がおかしいのでしょうか? すみません、NewRENOにおける挙動を詳細に理解していないので、私にはわかりません。 > 負になっても問題なく動作できるシミュレータになっているのでしょうか? 何が負になるのでしょうか。if文の計算が負になる場合ですか? > シーケンス番号が符号付きint型の範囲を超えると正常に動作しないのでしょうか? 実際に実行してみるとわかりますが、2^31=2147483648を超えても正常に動きます。 また、QualNet 4.0からのリリースノートを見ても報告は無いですね。 |
フラット表示 | 前のトピック | 次のトピック |