TCP數據包分析


TCP

序號

序號:在一個TCP連接中傳輸的字節流中的每一個字節都按順序編號,本字段表示本報文段所發送數據的第一個字節的序號。

確認號

確認號:期望收到對方下一個報文段的第一個數據字節的序號。若確認號為N,則證明到序號N-1為止的所有數據都已正確收到。

數據偏移(4位)

數據偏移首部長度):TCP報文段的數據部分起始處 距離TCP首部的起始處的距離,以4B為單位,即一個數值是4B

6個控制位(每個一位)

緊急位URGURG=1時,表明此報文段中有緊急數據,是高優先級的數據,應盡快傳遞,不用再緩沖中排隊,配合緊急指針字段使用。

確認位ACKACK=1時,確認號有效,在連接建立后所有傳送的報文段都必須把ACK置為1

推送位PSHPSH=1時,接收方盡快交付接收應用進程,不再等到緩存填滿再向上交付。

復位RSTRST=1時,表明TCP連接出現險種差錯,必須釋放連接,然后重新建立傳輸鏈接。

同步位SYNSYN=1時,表明是一個連接請求/連接接受報文。

終止位FINFIN=1時,表明此報文段發送方數據已發送完,要釋放連接。

窗口

窗口:指的是發送本報文段的一方的接收窗口,即現在允許對方發送的數據量。

檢驗和

檢驗和:檢驗首部+數據,檢驗時要加上12B偽首部,第四個字段為6.

緊急指針

緊急指針:URG = 1時才有意義,指出本報文段中緊急數據的字節數。緊急數據在數據部分的開始。

選項

選項:最大報文段長度MSS(每個TCP報文段中的數據最大字段長度),窗口擴大、時間戳、選擇確認...

TCP的連接建立

三次握手

ROUND1:客戶端發送連接請求報文段,無應用層數據。

SYN = 1seq = x(隨機)

ROUND2:服務器端為該TCP連接分配緩存和變量,並向客戶端返回確認報文段,允許連接,無應用層數據。

SYN = 1ACK = 1seq = y(隨機),ack = x + 1

ROUND3:客戶端為該TCP連接分配緩存和變量,並向服務器端返回確認的確認,可以攜帶數據。

SYN = 0ACK = 1seq = x + 1ack = y + 1

解決SYN攻擊的方法:SYN cookie

四次揮手

ROUND1:客戶端發送連接釋放報文段,停止發送數據,主動關閉TCP連接。

FIN = 1seq = u

ROUND2:服務器端回送一個確認報文段,客戶到服務器這個方向的連接就釋放了,就是半關閉狀態。

ACK = 1ack = u+1seq = v

SYN = 1ACK = 1seq = y(隨機),ack = x + 1

ROUND3:服務器端發送完數據,就發送連接釋放報文段,主動關閉TCP連接。

FIN = 1ACK = 1seq = wack = u + 1

ROUND4:客戶端回送一個確認報文段,再等到時間等待計時器設置的2MSL(最長報文段壽命)后,連接徹底關閉。

Wireshark 抓包

frame:物理層

Ethernet:數據鏈路層

Internet:網絡層

Transmission:傳輸層

抓包分析:

三次握手:

四次揮手(我這里不知道是不是沒有抓取完畢):

參考鏈接:王道考研


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM