本文但願以簡單易懂的形式解釋下這個問題,其具體的發包數據、過程等還請自行Google。純屬我的觀點,若有不妥,還請各位看官指教。資源
TCP協議是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議,採用全雙工通訊。請求
那爲何須要三次握手呢?請看以下的過程:通信
三次握手大概就是這麼個過程。
經過第一次握手,B知道A可以發送數據。經過第二次握手,A知道B能發送數據。結合第一次握手和第二次握手,A知道B能接收數據。結合第三次握手,B知道A可以接收數據。數據
至此,完成了握手過程,A知道B能收能發,B知道A能收能發,通訊鏈接至此創建。三次鏈接是保證可靠的最小握手次數,再屢次握手也不能提升通訊成功的機率,反而浪費資源。協議
那爲何須要四次揮手呢?請看以下過程:時間
B收到確認信號,斷開鏈接,而A在一段時間內沒收到B的信號,代表B已經斷開了,因而A也斷開了鏈接。至此,完成揮手過程。block
可能有捧油會問,爲何二、3次揮手不能合在一次揮手中?那是由於此時A雖然再也不發送數據了,可是還能夠接收數據,B可能還有數據要發送給A,因此兩次揮手不能合併爲一次。
揮手次數比握手多一次,是由於握手過程,通訊只須要處理鏈接。而揮手過程,通訊須要處理數據+鏈接。