首頁>技術>
題目

對 tcp 瞭解嗎?講講它的三次握手和四次揮手?為什麼需要三次握手,為什麼需要四次揮手?

答案

三次握手

第一次握手:客戶端向伺服器傳送連線請求,這個時候報文首部中的同步為 SYN = 1,同時生成一個隨機序列號 seq = x。

第二次握手:TCP 的伺服器如果同意連線,就發出確認報文。確認報文是 ACK = 1,SYN = 1,並帶有一個確認號 ack = x +1,同時自己也生成一個序列號 seq = y。

第三次握手:TCP 客戶端程序收到確認後,向伺服器給出確認,確認報文是 ACK = 1,ack = y + 1。

四次揮手

第一次揮手:客戶端傳送結束請求給服務端,報文有 FIN = 1,其序列號為 seq = u。

第二次揮手:服務端收到客戶端發起的結束請求後返回 ACK = 1 , ack = u +1 ,並且自己生成一個序列號 seq = v。

第三次揮手:服務端向客戶端傳送關閉報文,FIN = 1,ack = u + 1, seq = w。

第四次揮手:客戶端收到服務端請求之後傳送 ACK 確認, ACK = 1,ack = w + 1,自己生成一個序列號 seq = u + 1。

為什麼需要三次握手

在網路連線中會存在這樣的情況,當第一次發起握手請求的時候,由於網路原因,在某個網路節點滯留了,這個連線請求就認為失效了,然後請求到服務端,服務端收到請求後會給客戶端迴應。如果沒有三次握手,那麼服務端就會一直連著,會浪費資源。

為什麼需要四次揮手

當客戶端發起關閉請求的時候,只表示沒有新的資料傳送給服務端了,但是不能表示當前的請求中所有的資料全部發送了。當服務端收到請求之後不會立刻關閉連線,會等一段時間,當自己這邊的資料處理完之後,會給客戶端傳送關閉請求,告訴客戶端,可以關閉了。

8
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 用這八個命令,可修復Windows 10上的幾乎所有網路問題