回答:
0に移動します。RFC793によると:
実際のシーケンス番号スペースは有限ですが、非常に大きいことを忘れないでください。このスペースの範囲は0〜2 ** 32-1です。スペースは有限であるため、シーケンス番号を扱うすべての算術演算は2 ** 32を法として実行する必要があります。この符号なし算術は、シーケンス番号が2 ** 32-1から0に再び循環するときに、シーケンス番号の関係を保持します。コンピューターのモジュロ演算には微妙な点があるため、このような値の比較のプログラミングには細心の注意を払う必要があります。記号「= <」は「以下」を意味します(モジュロ2 ** 32)。
はい。TCP仕様RFC 793-Transmission Controlプロトコルですべての詳細を見つけることができます。
実際のシーケンス番号スペースは有限ですが、非常に大きいことを忘れないでください。このスペースの範囲は0〜2 32-1です。
空間は有限であるため、シーケンス番号を扱うすべての算術は2 32を法として実行する必要があります。この符号なし算術は、シーケンス番号が2 32-1から0に再び循環するときに、シーケンス番号の関係を保持します。
コンピューターのモジュロ演算には微妙な点があるため、このような値の比較のプログラミングには細心の注意を払う必要があります。記号「= <」は「以下」を意味します(モジュロ2 32)。
x
、およびy
がタイプの場合、mean uint32_t
を定義するのが実用的です。x<=y
(uint32_t)(y-x) < 0x80000000
はい、ラップアラウンドします。WikipediaまたはRFC1323で読むことができます。これは、ラップされたシーケンス番号から保護する方法を示しています。
引用させてください:
TCPタイムスタンプは、ラップされたシーケンス番号に対する保護、またはPAWS(詳細についてはRFC 1323を参照)と呼ばれるアルゴリズムで使用されます。PAWSは、受信ウィンドウがシーケンス番号のラップアラウンド境界を越えるときに使用されます。パケットが潜在的に再送信された場合、「このシーケンス番号は最初の4 GBですか、それとも2番目ですか?」という質問に答えます。そして、タイムスタンプは、タイを壊すために使用されます。
そして:
PAWSは、前述のRTTMメカニズムと同じTCP Timestampsオプションを使用し、受信したすべてのTCPセグメント(データおよびACKセグメントを含む)にタイムスタンプSEG.TSvalが含まれ、その値が単調で時間的に減少しないことを前提としています。基本的な考え方は、この接続で最近受信したタイムスタンプよりも小さいタイムスタンプSEG.TSvalで受信したセグメントは、古い複製として破棄できるということです。
PAWSとRTTMの両方のメカニズムで、「タイムスタンプ」はモジュラー32ビット空間の32ビット符号なし整数です。したがって、「より小さい」は、TCPシーケンス番号と同じ方法で定義され、同じ実装手法が適用されます。sおよびtがタイムスタンプ値である場合、0 <(t-s)<2 ** 31の場合、s <t、符号なし32ビット演算で計算されます。