天天看點

TCP三向交握和四次揮手原理【多測師】

一、計算機網絡體系結構

1.OSI參考模型

     ​​

TCP三向交握和四次揮手原理【多測師】

​​

     ​​

TCP三向交握和四次揮手原理【多測師】

​​

2.TCP/IP體系結構

TCP三向交握和四次揮手原理【多測師】

二、TCP三向交握

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

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

TCP有6種标志位:

1.SYN(建立連接配接)

     表示同步序号,用來建立連接配接。​

​SYN​

​​标志位和​

​ACK​

​​标志位搭配使用,當連接配接請求的時候,​

​SYN​

​​=1,​

​ACK​

​​=0;連接配接被響應的時候,​

​SYN​

​​=1,​

​ACK​

​=1;這個标志的資料包經常被用來進行端口掃描。

2.ACK(确認)

     此标志表示應答域有效,就是說前面所說的TCP應答号将會包含在TCP資料包中;有兩個取值:0和1,為1的時候表示應答域有效,反之為0。

3.PSH(傳送)

     這個标志位表示Push操作。所謂Push操作就是指在資料包到達接收端以後,立即傳送給應用程式,而不是在緩沖區中排隊;

4.FIN(結束)

     表示發送端已經達到資料末尾,也就是說雙方的資料傳送完成,沒有資料可以傳送了,發送​

​FIN​

​标志位的TCP資料包後,連接配接将被斷開。

5.RST(重置)

     這個标志表示連接配接複位請求。用來複位那些産生錯誤的連接配接,也被用來拒絕錯誤和非法的資料包。

6.URG(緊急)

     此标志表示TCP包的緊急指針域(後面馬上就要說到)有效,用來保證TCP連接配接不被中斷,并且督促中間層裝置要盡快處理這些資料。

     TCP是面向連接配接的,無論哪一方向另一方發送資料之前,都必須先在雙方之間建立一條連接配接。在TCP/IP協定中,TCP協定提供可靠的連接配接服務,連接配接是通過三次握手進行初始化的。三次握手的目的是同步連接配接雙方的序列号和确認号并交換 TCP視窗大小資訊。

     ​​

TCP三向交握和四次揮手原理【多測師】

​​

1.第一次握手:建立連接配接。

發送連接配接請求封包,将SYN=1,随機産生seq=x,用戶端進入SYN_SEND狀态,等待伺服器的确認。

2.第二次握手:伺服器收到SYN封包段。

對這個SYN封包段進行确認,設定ACK=x+1,同時自己還發送SYN請求SYN=1,序列号seq=y;伺服器端将上述所有資訊放到一個封包段(即SYN+ACK)中,一并發給用戶端,此時伺服器進入SYN_RECV狀态。

3.第三次握手:用戶端收到伺服器的SYN+ACK封包段。

seq=y+1,向伺服器發送ACK封包段,這個封包段發送完畢後,用戶端與伺服器端都進入ESTABLISHED狀态,完成TCP三向交握。

三、TCP四次揮手

     ​​

TCP三向交握和四次揮手原理【多測師】

​​

1.第一次分手

seq和ACK,向主機2發送FIN封包段,此時主機1進入FIN_WAIT_1狀态,表示主機1沒有資料要發送給主機2了。

2.第二次分手

  • ​ACK​

    ​​封包段,​

    ​ACK=seq+​

    ​1;主機1進入FIN_WAIT_2狀态;主機2告訴主機1,我“同意”你的關閉請求。

    3.第三次分手

    FIN封包段,請求關閉連接配接,同時主機2進入​

    ​CLOSE_WAIT​

    ​狀态;

    4.第四次分手

  • ​FIN​

    ​​封包段,向主機2發送​

    ​ACK​

    ​​封包段,然後主機1進入​

    ​TIME_WAIT​

    ​​狀态;主機2收到主機1的​

    ​ACK​

    ​封包段以後,就關閉連接配接;此時,主機1等待2MSL後依然沒有收到回複,則證明Server端已正常關閉,那好,主機1也可以關閉連接配接了。

1.OSI參考模型

     ​​

TCP三向交握和四次揮手原理【多測師】

​​

     ​​

TCP三向交握和四次揮手原理【多測師】

​​

2.TCP/IP體系結構

TCP三向交握和四次揮手原理【多測師】

二、TCP三向交握

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

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

TCP有6種标志位:

1.SYN(建立連接配接)

     表示同步序号,用來建立連接配接。​

​SYN​

​​标志位和​

​ACK​

​​标志位搭配使用,當連接配接請求的時候,​

​SYN​

​​=1,​

​ACK​

​​=0;連接配接被響應的時候,​

​SYN​

​​=1,​

​ACK​

​=1;這個标志的資料包經常被用來進行端口掃描。

2.ACK(确認)

     此标志表示應答域有效,就是說前面所說的TCP應答号将會包含在TCP資料包中;有兩個取值:0和1,為1的時候表示應答域有效,反之為0。

3.PSH(傳送)

     這個标志位表示Push操作。所謂Push操作就是指在資料包到達接收端以後,立即傳送給應用程式,而不是在緩沖區中排隊;

4.FIN(結束)

     表示發送端已經達到資料末尾,也就是說雙方的資料傳送完成,沒有資料可以傳送了,發送​

​FIN​

​标志位的TCP資料包後,連接配接将被斷開。

5.RST(重置)

     這個标志表示連接配接複位請求。用來複位那些産生錯誤的連接配接,也被用來拒絕錯誤和非法的資料包。

6.URG(緊急)

     此标志表示TCP包的緊急指針域(後面馬上就要說到)有效,用來保證TCP連接配接不被中斷,并且督促中間層裝置要盡快處理這些資料。

     TCP是面向連接配接的,無論哪一方向另一方發送資料之前,都必須先在雙方之間建立一條連接配接。在TCP/IP協定中,TCP協定提供可靠的連接配接服務,連接配接是通過三次握手進行初始化的。三次握手的目的是同步連接配接雙方的序列号和确認号并交換 TCP視窗大小資訊。

     ​​

TCP三向交握和四次揮手原理【多測師】

​​

1.第一次握手:建立連接配接。

發送連接配接請求封包,将SYN=1,随機産生seq=x,用戶端進入SYN_SEND狀态,等待伺服器的确認。

2.第二次握手:伺服器收到SYN封包段。

對這個SYN封包段進行确認,設定ACK=x+1,同時自己還發送SYN請求SYN=1,序列号seq=y;伺服器端将上述所有資訊放到一個封包段(即SYN+ACK)中,一并發給用戶端,此時伺服器進入SYN_RECV狀态。

3.第三次握手:用戶端收到伺服器的SYN+ACK封包段。

seq=y+1,向伺服器發送ACK封包段,這個封包段發送完畢後,用戶端與伺服器端都進入ESTABLISHED狀态,完成TCP三向交握。

三、TCP四次揮手

     ​​

TCP三向交握和四次揮手原理【多測師】

​​

  • ​ACK​

    ​​封包段,​

    ​ACK=seq+​

    ​1;主機1進入FIN_WAIT_2狀态;主機2告訴主機1,我“同意”你的關閉請求。

    3.第三次分手

    FIN封包段,請求關閉連接配接,同時主機2進入​

    ​CLOSE_WAIT​

    ​狀态;

    4.第四次分手

  • ​FIN​

    ​​封包段,向主機2發送​

    ​ACK​

    ​​封包段,然後主機1進入​

    ​TIME_WAIT​

    ​​狀态;主機2收到主機1的​

    ​ACK​

    ​封包段以後,就關閉連接配接;此時,主機1等待2MSL後依然沒有收到回複,則證明Server端已正常關閉,那好,主機1也可以關閉連接配接了。

繼續閱讀