TCP報文中的sackOK含義和作用

2021-08-18 09:33:45 字數 911 閱讀 4476

一般tcp的ack過程

在tcp的互動過程中,除了第乙個syn請求報文的ack標誌未置1外,其他的報文的ack標誌都是置1的。當客戶端與伺服器在互動的過程中,某些資料報被丟棄時,其ack確認和後續資料互動的過程如下圖所示:

在上圖所示的互動過程中,我們可以清楚的發現,在互動中由於某些未知的不可控的原因導致包含data-2的資料報文丟失。雖然僅有包含data-2的報文丟失,客戶端已經收到其他的data,但是,伺服器卻要將data-2以及data-2之後的其他data重傳一次,這就造成了互動效率的低下。正是為了解決這個問題,誕生了sack。

sack介紹

sack(selective acknowledgment,選擇性確認)技術,使tcp只重新傳送互動過程中丟失的包,不用傳送後續所有的包,而且提供相應機制使接收方能告訴傳送方哪些資料丟失,哪些資料重發了,哪些資料已經提前收到了。如此大大提高了客戶端與伺服器端資料互動的效率

利用sack確認丟失的資料報

在我們分析資料報文被丟棄的實際過程中,我們完全可以利用sack的功能來確認被丟棄的具體資料報文。如下圖所示:

明確三個引數:ack確認序列號為12421,sack的塊左邊界值為13801,sack的塊右邊界值為15181。明確了這三個引數的數值,我們基本上就可以計算出被丟棄的資料報的序列號和長度了。

通過上圖所示的帶有sack的資料報文,我們可以知道被丟棄的資料報文的tcp序列號為12422,其資料長度為13801-12421=1380b。

通訊報文中浮點型別的處理

宣告乙個聯合體 typedef union chartofloat float tempvalue chartofloat temp temp.y tempvalue m104 comm flag sendbuf index temp.x 0 m104 comm flag sendbuf index...

安全報文中的MAC計算方法

安全報文中的mac計算方法 校驗碼 mac 總是命令或命令響應資料域中最後乙個資料元素。規定mac的長度皆為4個位元組。當命令的資料域中要求必須帶mac時,即命令安全報文傳送,命令頭中cla位元組的低半位元組必須等於十六進製制數字 4 命令安全報文中的mac是使用命令的所有元素 包括命令頭和包含在命...

TCP報文的首部格式

tcp 長度不一 tcp 協議是能夠實現資料的分段傳輸,流量控制,可靠傳輸,擁幫浦控制等功能,因此tcp報文的首部要比udp的報文首部欄位要多,並且首部長度不固定。2個位元組所能表達的數 65536 埠號範圍是0 65535.2 16 65536 tcp的分用功能是通過埠實現的。4 8 32.資料偏...