三次握手:服務器
完成三次握手,客戶端與服務器開始傳送數據。開發
四次揮手:同步
爲何三次握手,倒是四次揮手呢?請求
這是由於服務端的LISTEN狀態下的SOCKET當收到SYN報文的建連請求後,它能夠把ACK和SYN(ACK起應答做用,而SYN起同步做用)放在一個報文裏來發送。但關閉鏈接時,當收到對方的FIN報文通知時,它僅僅表示對方沒有數據發送給你了;但未必你全部的數據都所有發送給對方了,因此你能夠未必會立刻會關閉SOCKET,也即你可能還須要發送一些數據給對方以後,再發送FIN報文給對方來表示你贊成如今能夠關閉鏈接了,因此它這裏的ACK報文和FIN報文多數狀況下都是分開發送的。數據
通俗理解三次握手和四次揮手:客戶端
三次握手流程
客戶端發個請求「開門吶,我要進來」給服務器
服務器發個「進來吧,我去給你開門」給客戶端
客戶端有很客氣的發個「謝謝,我要進來了」給服務器服務端
四次揮手流程
客戶端發個「時間不早了,我要走了」給服務器,等服務器起身送他
服務器聽到了,發個「我知道了,那我送你出門吧」給客戶端,等客戶端走
服務器把門關上後,發個「我關門了」給客戶端,而後等客戶端走(尼瑪~矯情啊)
客戶端發個「我知道了,我走了」,以後本身就走了時間