TCP串連的三向交握和四次解散過程 什麼是tcp三向交握 tcp採用三向交握 tcp三向交握分

來源:互聯網
上載者:User
用戶端和伺服器在使用TCP串連傳輸資料的過程中,需要經過三向交握建立串連和四次握手中斷連線操作。

具體如所示

描述了TCP串連從建立到斷開的詳細過程,以下就其中的具體報文細節展開討論。

在TCP三向交握建立串連階段,用戶端首先向伺服器發送一個SYN=1,Sequence=p的請求包。

如果伺服器同意授予用戶端該連結,則發送ACK=p+1,SYN=1,Sequence=q的回應包。

最後在用戶端收到伺服器的回應包以後,也會向伺服器發送一個回應包,具體內容為ACK=q+1,SYN=0,Sequence=p+1。

對於TCP的斷開則需要四次握手,為什麼不是三向交握呢,具體原因為:

當Server端收到Client端的SYN串連請求報文後,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉串連時,當Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回複一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。

中斷連線的過程是由用戶端首先發起的,首先,用戶端會發送FIN=1,Sequence=m的中斷連線請求包。

伺服器端收到請求以後,會發送一個確認包ACK=m+1,Sequence=n。

此時,用戶端到伺服器端單方面的串連已經斷開了,用戶端不會再向伺服器端發送資料包。而伺服器還是可以向用戶端發送資料的,如果伺服器端發送s個資料包以後不需要向用戶端發送資料了,此時可以向用戶端發送中斷連線請求。FIN=1,Sequence=m+s,ACK=m+1。

用戶端收到伺服器的斷開請求以後,會發送一個確認包。Sequence=m+1,ACK=m+s+1;

注意,用戶端發送最後一次ACK包以後,還會等待2MSL(最大報文段存留時間),因為在網路中包有可能會丟失,用戶端等待2MSL的時間是擔心伺服器端沒有收到ACK包,從而重發FIN請求。

以上就介紹了TCP串連的三向交握和四次解散過程,包括了tcp串連,三向交握方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.