為什么“三次握手,四次揮手”?


前言:

  如果你說你懂IT,你懂計算機網絡,那么你會怎么解釋“三次握手,四次揮手”?

----------------

1.TCP報文段首部格式:

2.TCP建立連接圖

--------------------------------------------

符號說明

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

 

為什么收到Server端的確認之后,Client還需要進行第三次“握手”呢?
  在只有兩次“握手”的情形下,假設Client想跟Server建立連接,但是卻因為中途連接請求的數據報丟失了,故Client端不得不重新發送一遍;這個時候Server端僅收到一個連接請求,因此可以正常的建立連接。但是,有時候Client端重新發送請求不是因為數據報丟失了,而是有可能數據傳輸過程因為網絡並發量很大在某結點被阻塞了,這種情形下Server端將先后收到2次請求,並持續等待兩個Client請求向他發送數據...問題就在這里,Cient端實際上只有一次請求,而Server端卻有2個響應,極端的情況可能由於Client端多次重新發送請求數據而導致Server端最后建立了N多個響應在等待,因而造成極大的資源浪費!所以,“三次握手”很有必要!

3.TCP斷開連接圖

---------------------------------------------------------------

為什么需要“四次揮手”?
  試想一下,假如現在你是客戶端你想斷開跟Server的所有連接該怎么做?第一步,你自己先停止向Server端發送數據,並等待Server的回復。但事情還沒有完,雖然你自身不往Server發送數據了,但是因為你們之前已經建立好平等的連接了,所以此時他也有主動權向你發送數據;故Server端還得終止主動向你發送數據,並等待你的確認。其實,說白了就是保證雙方的一個合約的完整執行!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM