TCP建立連接爲什麼是三次,斷開連接爲什麼是四次?

1.TCP建立連接

 

要理解這個問題,可以從三個方面去理解。

1.1兩軍問題:

假如client和service是兩隊人馬,他們要進行通信。client說:馬上要進攻了,service端說:好的我知道了。似乎這麼看沒有問題,兩次就可以建立連接了。但是問題來了:service端說了我知道以後,service端怎麼知道client端有沒有收到我的答覆呢?那麼這個時候就需要第三次連接了們也就是client說:好的我知道你收到了。那麼這樣就必須建立三次連接。

1.2信道可靠問題:

我們知道client端和service端都需要收發數據,那麼client和service端都要具有收發能力。那麼這麼看來建立連接之後也需要證明client和service的收發都沒問題,且client和service都要知道對方沒問題(client知道自己的收發沒問題,及Service端收發沒問題)(service知道自己的收發沒問題,client的收發沒問題)

前兩次握手,對於client來說:證明了client的發送,接收沒問題。service端接收沒問題,發送沒問題。

但是對於service端來說:證明了client的發送沒問題。service端接收沒問題。

那麼問題來了:對於service端來說怎麼知道client的接收,以及自己的發送沒問題呢?那麼這個時候就需要第三次握手握手來證明了。第三次握手後,即可讓service端知道client的接收沒問題,自己的發送也是沒問題的。

1.3資源浪費:

這也是《計算機網絡》的答案;假設兩次就認爲建立了連接,client發送兩次請求建立連接,先發的後到service端,Service端就會認爲重新建立新的連接,就會建立錯誤的連接,我們希望的結果是後發的這個與service建立連接。在建立了錯誤的連接之後,並且等待client發送數據過來,就會造成資源浪費。

2.TCP斷開連接

2.1數據傳輸完整性:

若僅握手兩次就斷開連接,那麼會出現一種情況,當service端收到了來自client的斷開連接的請求,但是此時service端數據沒有發送完,不行啊,必鬚髮完數據纔可以的。不然之前的白傳了。(那麼有人會問,如果此時數據發送完了呢?發完了就不發了啊,直接第三次握手,斷開連接完事兒。)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章