說一說TCP報文頭?

報文頭詳解

在這裏插入圖片描述

1.SourcePort-源端口

發起請求的端口,佔兩個字節

2.DestinationProt-目的端口

被請求的端口,佔兩個字節

3.SequenceNumber-Seq序列號

佔四個字節
Seq隱式的爲報文段中攜帶的所有數據字節,標記了序號


舉例:
傳輸一段報文
報文的序列號是101,那麼報文所攜帶的數據,其中第一個字節的序列號就是101
報文攜帶的數據長度是100字節,那麼每一個字節的隱式序列號爲(101,102…199,200—共100個字節)
那麼下一段報文的序列號就是201

4.AcknowledgementNumber-Ack確認號

佔四個字節
通知對方,下一個報文的第一個字節的序列號應該是什麼
只是通知無法強制(請看舉例2)


舉例1:
C 向 S 發起請求,要下載一個 1073741824KB(1G) 的毛BT
傳輸過程中,C已經收到了數據 0KB-100KB,101KB-200KB ,201KB-300KB,301KB-400KB
那麼接下來C發出的ACK確認號,就應該是 401


舉例2
C 向 S 發起請求,要下載一個 1073741824KB(1G) 的毛BT
傳輸過程中,C已經收到了數據 0KB-100KB,(這塊沒收到) ,201KB-300KB,301KB-400KB
S就是不給 101KB-200KB
此時面對這種失序到達的情況,有兩種處理方法
1.丟棄失序報文
2.保留失序報文,並等待剩餘報文傳輸完成 (應該用這個方法)

5.Offset-數據偏移

報文攜帶的數據,距離報文起始處有多遠

6.Reserved-保留域

目前來看,都是0

7.TCP Flags-狀態

SYN 同步序號,用於建立連接過程
ACK 確認序號標誌(0-忽略)(1-有效)
FIN finish標誌 用於釋放連接(1-發送方已經沒有數據了,本方可以關閉)
URG 緊急指針標誌(0-忽略)(1-有效)
PSH push標誌,告知接收方接到數據後,應該儘快交給應用程序,而不是在緩衝區排隊
RST 重置連接標誌

8.window-滑動窗口

基於窗口大小控制數據的發送速率

9.Checksum-校驗和

發送端 對報文執行計算後傳遞
接收端 進行接收時校驗

10.UrgentPointer-緊急指針

指出報文段中緊急數據的字節數
只有當 TCP Flags 中的URG=1時生效

11.TCP Options-可選項

長度可變,用來定義一些可選參數

《TCP詳解》

《TCP的三次握手詳解》



白嫖不點贊嗎.........

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章