天天看點

tcp三次握手和四次揮手的全過程_TCP/IP的三次握手與四次揮手

 是新朋友嗎?記得先點“地鐵超人的學習筆記”關注我哦~

跟着小編學習,計算機網絡知識之TCP/IP的三次握手與四次揮手。

tcp三次握手和四次揮手的全過程_TCP/IP的三次握手與四次揮手

一、三次握手

TCP三向交握,就是指建立1個TCP連接配接,需要用戶端和伺服器端總共發送3個資料包,其目的就是連接配接伺服器端指定端口,建立TCP連接配接,并同步雙方的序列号和确認号,交換TCP視窗大小資訊。

TCP的傳輸連接配接分為3個階段,連接配接建立(三次握手),資料傳送和連接配接釋放(四次揮手)。TCP傳輸連接配接的管理就是使傳輸連接配接建立和釋放都能正常的進行。兩個序号和三個标志位:

  • 序号:seq序号,占32位,用來辨別從TCP源端向目的端發送的位元組流,發起方發送資料時對此進行标記。
  • 确認序号:ack序号,占32位,隻有ACK标志位為1時,确認序号字段才有效,ack=seq+1。
  • 标志位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:

(A)URG:緊急指針(urgent pointer)有效。

(B)ACK:确認序号有效。

(C)PSH:接收方應該盡快将這個封包交給應用層。

(D)RST:重置連接配接。

(E)SYN:發起一個新連接配接。

(F)FIN:釋放一個連接配接。

最開始的時候,用戶端和伺服器都是處于關閉(CLOSED)狀态,主動打開連接配接的是用戶端,被動打開連接配接的是伺服器。

二、四次揮手

所謂的四次揮手即終止TCP連接配接,就是指斷開一個TCP連接配接時,需要用戶端和服務端總共發送4個包以确認連接配接斷開,在socket程式設計中,這一過程由用戶端或伺服器端任一方執行close來觸發。資料傳輸完畢,雙方都可釋放連接配接,最開始的時候,用戶端和伺服器端都是處于ESTABLISHED狀态(ESTABLISHED表示建立連接配接,兩台裝置正在通信),然後用戶端主動關閉,伺服器端被動關閉。

由于TCP連接配接是全雙工,是以,每個方向都必須要單獨進行關閉,這一原則是當完成資料方任務後,發送一個FIN來終止這一方向的連接配接,收到一個FIN意味着這一方向上就沒有資料流了,即不會再收到資料了,但是在這個TCP連接配接上仍然能夠發送資料,直到這一方向也發送了FIN,首先進行關閉的一方将執行主動關閉,而另一方則執行被動關閉。

tcp三次握手和四次揮手的全過程_TCP/IP的三次握手與四次揮手

通常情況下通信雙方不會出現四次揮手中斷資料傳輸。通過分析故障時刻的接口通信封包,率先發現哪方發起四次揮手的FIN包,可以初步判斷是由發起方引起的通信中斷。如發生退出問題,根據四次揮手協定可知,當一方發起中斷時,必定會率先向另一方發送FIN包,用于告知對方要中斷資料傳輸。

TCP協定規定,對于已經建立的連接配接,網絡裝置雙方要進行四次揮手才能成功斷開連接配接,如果缺少其中某個步驟,将會使得連接配接處于假死狀态,連接配接本身占用的資源就不會被釋放。網絡伺服器程序要同時管理大量連接配接,是以要確定無用連接配接完全斷開,否則大量假死的連接配接會浪費可用資源。

三、單工、半雙工、全雙工【考點】

單工、半雙工、全雙工通信定義如下:

(1)單工:兩個終端通信是單向的,同一時刻通信隻在固定的1個方向。

(2)半雙工:在單工的基礎上,每個終端即可作為發送端,也可作為接收端,資料傳輸方向上是兩個方向都可以傳輸,但不能同時收發資料。RS485屬于半雙工序列槽通信。

(3)全雙工:在半雙工基礎上,通信雙方的發送和接收可同時進行。RS232和RS422都屬于全雙工通信。

tcp三次握手和四次揮手的全過程_TCP/IP的三次握手與四次揮手
tcp三次握手和四次揮手的全過程_TCP/IP的三次握手與四次揮手

繼續閱讀