為什么需要三次握手
1境钟、保證全雙工通信
2、防止失效的連接請求到服務器镀岛,讓服務器錯誤地打開連接,浪費資源
2原因:
謝希仁版《計算機網絡》中的例子是這樣的友驮,“已失效的連接請求報文段”的產生在這樣一種情況下:client發(fā)出的第一個連接請求報文段并沒有丟失漂羊,而是在某個網絡結點長時間的滯留了,以致延誤到連接釋放以后的某個時間才到達server卸留。本來這是一個早已失效的報文段走越。但server收到此失效的連接請求報文段后,就誤認為是client再次發(fā)出的一個新的連接請求耻瑟。于是就向client發(fā)出確認報文段旨指,同意建立連接捻悯。假設不采用“三次握手”,那么只要server發(fā)出確認淤毛,新的連接就建立了。由于現(xiàn)在client并沒有發(fā)出建立連接的請求算柳,因此不會理睬server的確認低淡,也不會向server發(fā)送數(shù)據(jù)。但server卻以為新的運輸連接已經建立瞬项,并一直等待client發(fā)來數(shù)據(jù)蔗蹋。這樣,server的很多資源就白白浪費掉了囱淋。采用“三次握手”的辦法可以防止上述現(xiàn)象發(fā)生猪杭。例如剛才那種情況,client不會向server的確認發(fā)出確認妥衣。server由于收不到確認皂吮,就知道client并沒有要求建立連接∷笆郑”
為什么需要四次揮手
因為客戶端發(fā)送FIN連接請求釋放連接后蜂筹,服務器接受請求后可能還有沒有發(fā)送完的數(shù)據(jù),所以先返回ACK芦倒,等待數(shù)據(jù)都發(fā)送完畢后再發(fā)送FIN信號艺挪。
TIME_WAIT
客戶端收到服務的釋放連接的請求后,不是立馬進入CLOSE狀態(tài)兵扬,而是還要再等待2MSL(MSL:maximum segment lifetime報文最大存活時間麻裳,2倍是發(fā)和收的最大時間)
原因:
- 確保最后一個確認報文能夠到達。如果沒能到達器钟,服務端就會會重發(fā)FIN請求釋放連接津坑。等待一段時間沒有收到重發(fā)就說明服務的已經CLOSE了。如果有重發(fā)傲霸,則客戶端再發(fā)送一次LAST ack信號
- 確保當前連接所產生的所有報文都從網絡中消失国瓮,使得下一個新的連接不會出現(xiàn)舊的連接請求報文