浅析TCP之SACK(选择性确认)
1、SACK
Selective Acknowledgement,選擇性確認。
2、功能
TCP收到亂序數據后,會將其放入亂序隊列中,然后發送重復ACK給對端。對端如果收到多個重復的ACK,認為發生丟包,TCP會重傳最后確認的包開始的后續包。這樣原先已經正確傳輸的包可能會重復發送,降低了TCP性能。為改善這種情況,發展出SACK技術,使用SACK選項可以告知發包方收到了哪些數據,發包方收到這些信息后就會知道哪些數據丟失,然后立即重傳丟失的部分。
需要注意的是只有收到失序的分組時才會可能會發送SACK,TCP的ACK還是建立在累積確認的基礎上的。也就是說如果收到的報文段與期望收到的報文段的序號相同就會發送累積的ACK,SACK只是針對失序到達的報文段的。
3、格式
SACK包括了兩個TCP選項,一個選項用于標識是否支持SACK(SACK_permitted),是在TCP連接建立時時發送;另一種選項則包含了具體的SACK信息。
1)SACK_permitted選項
該選項只允許在TCP連接建立時,有SYN標志的包中設置,也即TCP握手的前兩個包中,分別表示通信的兩方各自是否支持SACK。
2)SACK信息選項
SACK信息選項用于通告對端接收數據的信息。
該選項參數告訴對方已經接收到并緩存的不連續的數據塊,注意都是已經接收的,發送方可
根據此信息檢查究竟是哪個塊丟失,從而發送相應的數據塊。
???*????Left Edge of Block
????????不連續塊的第一個數據的序列號
???*????Right Edge of Block
????????不連續塊的最后一個數據的序列號之后的序列號
————————————————
版權聲明:本文為CSDN博主「海闊天空sky1992」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Mary19920410/article/details/72820477
總結
以上是生活随笔為你收集整理的浅析TCP之SACK(选择性确认)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP-IP详解:重传机制
- 下一篇: TCP-IP详解:快速重传与快速恢复