tcp 中 FLAGS字段,幾個標識:SYN, FIN, ACK, PSH, RST, URG.


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

其中,對於我們日常的分析有用的就是前面的五個字段。它們的含義是:

  1、SYN表示建立連接,
  2、FIN表示關閉連接,
  3、ACK表示響應,
  4、PSH表示有 DATA數據傳輸,   5、 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(確認號碼)




第一次握手:主機A發送位碼為syn=1,
          隨機產生seq number=1234567 的數據包到服務器,
      主機B由SYN=1知道,A要求建立聯機;

第二次握手:主機B收到請求后要確認聯機信息,
      向A發送ack number=(主機A的seq+1)syn=1ack=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狀態,完成三次握手。完成三次握手,客戶端與服務器開始傳送數據.
YN_SENT   :表示請求連接,等待服務器確認
SYN_REC :服務端被動打開后,接收到了客戶端的SYN並且發送了ACK時的狀態
ESTABLISHED狀 :客戶端和服務器 已經建立的連接
 
        
C :第一次握手:SYN = J :SYN_SEND_
S :SYN=K ACK J+1 :SYN_RECV
C : ACK = K+1 :ESTABLISHED











免責聲明!

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



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