在TCP的連接中有有這樣一個功能:
1:客戶端向服務器發送一個syn
2:服務器回一個ack併發一個syn
3:客戶端回一個ack
剛開始一直很疑問,僅僅要1.2不就行了,再網上找了找發現好多人有同樣的疑問,現在把我的理解寫出來,和大家交流。
首先我們要知道爲什麼要進行連接,這是爲了發送數據做準備。
首先客戶端對服務器說:可以開始數據傳遞?
服務器說:可以。並問一句:可以開始數據傳遞?
客戶端:可以。
然後雙方就可以進行數據傳遞了。
如果是兩次握手的話,服務器就應該說:可以。
這樣就結束了,但從數據傳遞的角度來說這是有缺陷的,因爲數據傳遞包括了發和收兩個基本動作,當服務器收到客戶端傳遞數據的請求時,這表明客戶端發送功能正常,服務器接受功能正常,如果客戶端接受了服務器的迴應但並沒有再回應服務器時,那麼客戶端是知道雙方發送和接受都是正常的,但服務器不知道自己的發送功能是否正常,因此最後的一個握手就是告訴服務器我們都是正常的,可以開始數據傳遞了。
下面這個例子可以生動的理解3次握手。
一箇中國人和一個美國人要進行交流
美國人說:could you speak english(你能說英語嗎?)
中國人說:可以,但我認爲漢語更好。
美國人說:好吧,咱用漢語交流。