1. 程式人生 > 實用技巧 >TCP資料包分析

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:傳輸層

抓包分析:

三次握手:

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

參考連結:王道考研