こんばんわ魚座のジーザス野郎です。
一応備忘録。
今回はSACKオプションについてです。
まずは概要
選択的受信確認(Selective Acknowledgment=SACKという)。受信確認の応答アルゴリズムを最適化するために利用される。連続した領域でなく、部分的にACKを返すことにより、無駄な再送を防ぎ、転送効率を向上させることができる。RFC2018で定義されている。
これは実際に解析すると
左側から右側という形でシーケンス番号を表示している認識になります。
なので例えば
1000番から1499番のシーケンス番号のデータを受信していて
次の1500番から1999番をロストしたとします。
その際のACKは1500番を返します。
次に2000番から2499番のシーケンス番号を受信したとき
SACKオプションにもLeftEdge2000、RightEdge2499といった具合に埋め込まれます。
この後に受信側は1500から1999のシーケンスを要求すべく
DupAckを3回以上送信側へ返す形になる。
(3回以上というのはパケットがロストした確立が高い為、
実際には2回以上で新規にパケットを送り出す)
うーん自分で書いてみたけれど修正する必要性が高そうだ;・∀・)