爲何「三次握手,四次揮手」?

前言:網絡

  若是你說你懂IT,你懂計算機網絡,那麼你會怎麼解釋「三次握手,四次揮手」?併發

----------------spa

1.TCP報文段首部格式:

2.TCP創建鏈接圖

--------------------------------------------計算機網絡

符號說明3d

seq:"sequance"序列號
ack:"acknowledge"確認號
SYN:"synchronize"請求同步標誌
ACK:"acknowledge"確認標誌"
FIN:"Finally"結束標誌blog

 

爲何收到Server端的確認以後,Client還須要進行第三次「握手」呢?
  在只有兩次「握手」的情形下,假設Client想跟Server創建鏈接,可是卻由於中途鏈接請求的數據報丟失了,故Client端不得不從新發送一遍;這個時候Server端僅收到一個鏈接請求,所以能夠正常的創建鏈接。可是,有時候Client端從新發送請求不是由於數據報丟失了,而是有可能數據傳輸過程由於網絡併發量很大在某結點被阻塞了,這種情形下Server端將前後收到2次請求,並持續等待兩個Client請求向他發送數據...問題就在這裏,Cient端實際上只有一次請求,而Server端卻有2個響應,極端的狀況可能因爲Client端屢次從新發送請求數據而致使Server端最後創建了N多個響應在等待,於是形成極大的資源浪費!因此,「三次握手」頗有必要!資源

3.TCP斷開鏈接圖

---------------------------------------------------------------同步

爲何須要「四次揮手」?
  試想一下,假如如今你是客戶端你想斷開跟Server的全部鏈接該怎麼作?第一步,你本身先中止向Server端發送數據,並等待Server的回覆。但事情尚未完,雖然你自身不往Server發送數據了,可是由於大家以前已經創建好平等的鏈接了,因此此時他也有主動權向你發送數據;故Server端還得終止主動向你發送數據,並等待你的確認。其實,說白了就是保證雙方的一個合約的完整執行!請求

相關文章
相關標籤/搜索