天天看點

HCNP學習筆記之TCP中FLAGS字段SYN, FIN, ACK, PSH, RST, URG

在TCP層,有個FLAGS字段,這個字段有以下幾個辨別:SYN, FIN, ACK, PSH, RST, URG.

其中,對于我們日常的分析有用的就是前面的五個字段。

含義:

SYN 表示建立連接配接,

FIN 表示關閉連接配接,

ACK 表示響應,

PSH 表示有 DATA資料傳輸,

RST 表示連接配接重置。

其中,ACK是可能與SYN,FIN等同時使用的,比如SYN和ACK可能同時為1,它表示的就是建立連接配接之後的響應,

如果隻是單個的一個SYN,它表示的隻是建立連接配接。

TCP的幾次握手就是通過這樣的ACK表現出來的。

但SYN與FIN是不會同時為1的,因為前者表示的是建立連接配接,而後者表示的是斷開連接配接。

RST一般是在FIN之後才會出現為1的情況,表示的是連接配接重置。

一般地,當出現FIN包或RST包時,我們便認為用戶端與​​伺服器​​端斷開了連接配接;而當出現SYN和SYN+ACK包時,我們認為用戶端與伺服器建立了一個連接配接。

PSH為1的情況,一般隻出現在 DATA内容不為0的包中,也就是說PSH為1表示的是有真正的TCP資料包内容被傳遞。

TCP的連接配接建立和連接配接關閉,都是通過請求-響應的模式完成的。

TCP三向交握:

TCP(Transmission Control Protocol)傳輸控制協定

TCP是主機對主機層的傳輸控制協定,提供可靠的連接配接服務,采用三次握手确認建立一個連接配接:

位碼即tcp标志位,有6種标示:SYN(synchronous建立聯機) ACK(acknowledgement 确認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)Sequence number(順序号碼) Acknowledge number(确認号碼)。

HCNP學習筆記之TCP中FLAGS字段SYN, FIN, ACK, PSH, RST, URG

第一次握手:主機A發送位碼為syn=1,随機産生seq number=1234567的資料包到伺服器,主機B由SYN=1知道,A要求建立聯機;

第二次握手:主機B收到請求後要确認聯機資訊,向A發送ack number=(主機A的seq+1),syn=1,ack=1,随機産生seq=7654321的包;

第三次握手:主機A收到後檢查ack number是否正确,即第一次發送的seq number+1,以及位碼ack是否為1,若正确,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到後确認seq值與ack=1則連接配接建立成功。完成三次握手,主機A與主機B開始傳送資料。

在TCP/IP協定中,TCP協定提供可靠的連接配接服務,采用三次握手建立一個連接配接。

第一次握手:建立連接配接時,用戶端發送syn包(syn=j)到伺服器,并進入SYN_SEND狀态,等待伺服器确認;

第二次握手:伺服器收到syn包,必須确認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀态;

第三次握手:用戶端收到伺服器的SYN+ACK包,向伺服器發送确認包ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED狀态,完成三次握手。完成三次握手,用戶端與伺服器開始傳送資料.

​​參考​​

繼續閱讀