1. 程式人生 > 實用技巧 >三次握手、四次揮手

三次握手、四次揮手

三次握手

在這裡插入圖片描述

為什麼需要三次握手尼?為了防止已失效的連線請求報文段突然有傳送到服務端,因而產生錯誤。

比如:client發出的第一個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延遲到連線釋放以後的某個時間才到達server。本來這是一個早已經失效的報文段,但是server收到此失效的連線請求報文段後,就誤認為是client再次發出到一個新的連線請求,於是就向client發出確認報文段,同意建立連線。

假設不採用“三次握手”,那麼只要server發出確認,新的連線就建立了,由於client並沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料,但server卻以為新的運輸連線已經建立,並一直等待client發出的資料。所以沒有采用“三次握手”,這種情況下server的很多資源就白白的浪費掉了。

四次揮手

在這裡插入圖片描述

為什麼需要四次揮手尼?TCP是全雙工模式,當client發出FIN報文段時,只是表示client已經沒有資料要傳送了(client告訴server,它的資料已經全部發送完畢了)。但是這個時候client還是可以接收server的資料,當server返回ACK報文段時,表示他已經知道client沒有資料傳送了,但是server還是可以傳送資料到client的;當server也傳送了FIN報文段時,這個時候就表示server也沒有資料傳送了,就會告訴client,他也沒有資料要傳送了,如果收到client確認報文段,之後彼此就會愉快的中斷這次TCP連線。