こんばんわ魚座のジーザス野郎です。

一応備忘録。


今回はSACKオプションについてです。


まずは概要


選択的受信確認(Selective Acknowledgment=SACKという)。受信確認の応答アルゴリズムを最適化するために利用される。連続した領域でなく、部分的にACKを返すことにより、無駄な再送を防ぎ、転送効率を向上させることができる。RFC2018で定義されている。


これは実際に解析すると

左側から右側という形でシーケンス番号を表示している認識になります。


なので例えば


1000番から1499番のシーケンス番号のデータを受信していて

次の1500番から1999番をロストしたとします。

その際のACKは1500番を返します。

次に2000番から2499番のシーケンス番号を受信したとき

SACKオプションにもLeftEdge2000、RightEdge2499といった具合に埋め込まれます。


この後に受信側は1500から1999のシーケンスを要求すべく

DupAckを3回以上送信側へ返す形になる。

(3回以上というのはパケットがロストした確立が高い為、

実際には2回以上で新規にパケットを送り出す)


うーん自分で書いてみたけれど修正する必要性が高そうだ;・∀・)