wireshark中帶有SLE和SRE的SACK包詳解
阿新 • • 發佈:2019-01-28
一、名詞解釋
SLE: Sequence Left Edge of already acknowledged data when Selective Acknowledgments are used. 即已收到tcp資料的左邊界。SRE: Sequence Right Edge of already acknowledged data when Selective Acknowledgments are used. 即已收到tcp資料的右邊界。
二、 使用場景
如果ACK中不帶SLE和SRE會怎樣呢?那伺服器就會重發從"22775"開始之後的所有的包,包括其實客戶端已經收到的"28614~34454"序號的包,那就浪費網路帶寬了,不是麼。
三、多個亂序段的情況
實際情況中較少見,因為這代表著隔三差五就有丟包,丟包率應該很大。
就我們使用的有線鏈路而言,丟包率不足0.1%,無線鏈路大約在5%左右。【注 1】
在RFC2018中詳述了SACK包格式。
有多個數據塊亂序的情況下,SLE和SRE也可以有多組,但因為頭部位元組限制,最多為4組。
sack選項
選項型別: 5
選項長度: 可變,但整個TCP選項長度不超過40位元組,實際最多不超過4組邊界值。
+--------+--------+
| Kind=5 | Length |
+--------+--------+--------+--------+
| Left Edge of 1st Block |
+--------+--------+--------+--------+
| Right Edge of 1st Block |
+--------+--------+--------+--------+
| |
/ . . . /
| |
+--------+--------+--------+--------+
| Left Edge of nth Block |
+--------+--------+--------+--------+
| Right Edge of nth Block |
+--------+--------+--------+--------+
圖2是1組邊界的抓包截圖
【1】無線鏈路的丟包率不確定,也有20%的情況
參考:
https://ask.wireshark.org/questions/1389/what-are-sre-and-sle?sort=votes
http://blog.chinaunix.net/uid-28387257-id-3624060.html