TCP是一種面向連接的、可靠地通信方式,三次握手機制也是爲了保證通信的可靠性。至於爲什麼需要三次握手,而不是兩次,我的理解如下:
第一種理解:(串門)
1、client連接server成功後,server端要分配資源與client建立連接。這就好比你到鄰居家串門,鄰居要開門迎接並且給你安排個坐的地兒。
2、當你真的要到鄰居家串門,你首先要跟鄰居打個招呼,問:嗨,你有沒有空,我去你們家玩吧?(第一次握手)
3、鄰居收到你的請求後,會回覆你說:好啊,(不完整的第二次握手)
4、到此爲止,兩次握手已畢,你能不能完成這次串門的行爲呢?其實也能。你只管過去,鄰居也只要開門迎接即可。但問題是,鄰居一方面不能確定你串門的時
間,另一方面不能確定你聽到了自己給你的應答。如果由於種種原因,你確實沒有聽到,肯定是不會去的,而鄰居卻做好飯菜、準備好桌椅,開門迎接,豈不是
浪費了時間和精力。
5、所以最好是,鄰居給你應答的時候順便問一下:好啊,你啥時候來呀?(完整的第二次握手)
6、你收到應答後,回覆鄰居:我這就去(第三次握手)
7、這樣,鄰居一方面可以確定你拜訪的時間,另一方面也確定你收到了應答,再開門迎接(連接建立)
第二章理解:(全雙工通信)
在全雙工通信中,爲了確保通信的可靠性,必須保證通信的雙方收、發機工作是正常的。特別是server一方,因爲server是建立連接的實施者
1、client向server發送連接請求,且server接到請求,server可以判定,對方的發送機和自己的接收機正常,但不能判斷自己的發送機和對方接收機是否正常;(第一次握手)
2、server應答client且client接到應答,此時client可以判定自己和對方的收、發機全部正常,但建立連接的一方是server,所以client仍需發送應答;(第二次握手)
3、client發送應答至server且server收到,此時server可以判斷自己和對方收、發機正常,可以建立連接;(第三次握手)
4、server分配資源,同client建立連接。