要約
- RFC 1185の計算では、1 Gbit/sならTCPシーケンス番号の問題になる半周が約17秒で終わる。遅れて届いた古いパケットが、再びもっともらしい番号を持ちうる。
- RFC 1323のPAWSは保存した
TS.Recentと到着時の時刻印を比較し、同じ接続内の古い重複を排除した。ただし24日を超えて接続が休止した後は、その記録を無効にしなければ新しいパケットまで拒んでしまう。
TCPはバイトに番号を振る。番号は使い切れば一周して戻る。回線が遅い間は、昔のパケットがネットワークから姿を消すまで十分な時間がある。速度が上がると、番号のほうが先に戻ってくる。入口の係員が番号だけを照合すれば、昨日の客を今日の客として通しかねない。
1990年10月のRFC 1185は、この問題を数字で示した。1 Gbit/sという条件では、関連するシーケンス番号空間の半周に約17秒しかかからない。文書が比較に使ったTCPセグメントの最大寿命は2分だった。これは特定の回線で観測した事件ではなく、速くなった番号と残り続ける可能性のある古いセグメントを突き合わせた設計上の計算だ。番号のほかに、もう一つの証拠が要る。
1992年5月のRFC 1323はTCPのTimestampオプションを定めた。往復時間の測定と、シーケンス番号の周回から守るPAWSの二つの仕事を担う。確立済みの接続では、受信側が最近の値をTS.Recentとして覚える。到着したセグメントのTSvalが有効な記憶より古ければ、確認応答を送り、そのセグメントを捨てる。時刻の審査に通っても、通常のTCPウィンドウ検査は続く。古い荷物が新しい番号を装っても、時刻が正体を明かす。
両端末の時計を同じ時刻に合わせる必要はない。送信側の時刻印が単調に進み、受信側が32ビットの巡回計算で比べればよい。TS.Recentは往復時間の測定にも使われ、一つの接続状態が二役を務める。PAWSはデータにも確認応答にも働き、開いている同じ接続の中で生じた古い重複を見分ける。
ただし門番の手帳も年を取る。RFC 1323が想定した時刻印の刻みは、1秒に1回から1ミリ秒に1回まで。最も速い刻みなら、32ビット値の符号付き半周は約24.8日で訪れる。接続を開いたまま長く何も送らないと、相手の時計だけが進む。再開後の本物の新しいセグメントが、保存したTS.Recentより小さい値に見える場合がある。古い手帳を絶対視する実装は、その後の到着を片端から捨て、接続を凍らせてしまう。
RFC 1323は手帳を捨てる規則を置いた。24日を超えて接続が休止したら、PAWSの実装はTS.Recentを無効にする。到着時刻が小さく見えたとき、受信側は先に記憶の有効性を調べる。期限を過ぎていればPAWSの検査を通し、新しい参照値へ更新できる。その後の通常のシーケンス番号検査までなくなるわけではない。古い名簿を破ることと、入口を無人にすることは違う。
著者たちは、ときどき生存確認の通信を送り記憶を更新する方法も検討した。TCP仕様にその通信が含まれていなかったため、無効化を選んだ。受信側は相手の時計の刻みも知らないので、最も速い場合を基準にする。24日は接続が静かだった期間を指す。動き続ける接続の寿命に上限を付ける数字ではない。
後年のRFC 7323も、この長い休止と24日の規則を引き継いだ。1990年から1992年にかけて、速さは番号の信頼性を削り、沈黙は時刻の記憶を古くした。PAWSが優れていたのは古いパケットを疑うことだけではない。自分の記録を疑う日付まで決めたことだ。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加





