TCP的狀態 (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的,因為SYN表示建立連接而FIN表示斷開連接。

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

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

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

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

三次握手協議

三次握手(three times handshake;three-way handshake)所謂的“三次握手”即對每次發送的數據量是怎樣跟蹤進行協商使數據段的發送和接收同步,根據所接收到的數據量而確定的數據確認數及數據發送、接收完畢后何時撤消聯系,並建立虛連接。為了提供可靠的傳送,TCP在發送新的數據之前,以特定的順序將數據包的序號,並需要這些包傳送給目標機之后的確認消息。TCP總是用來發送大批量的數據。當應用程序在收到數據后要做出確認時也要用到TCP。

 

第一次

第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。

第二次

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

第三次

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

http://www.cnblogs.com/azraelly/archive/2012/12/25/2832393.html

 


免責聲明!

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



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