三次握手服務器
爲何要進行三次握手網絡
爲了防止服務端開啓一些無用的鏈接,由於咱們知道網絡傳輸是有延時的,由於咱們中間可能隔着很是遠的距離,要經過光纖,而後還有各類中間的代理服務器,來進行一個傳輸,傳輸的過程中,好比說客戶端這邊發起了一個syn=1建立鏈接的請求,若是服務端這邊就直接建立了這個鏈接,返回的這個內容給客戶端,這個數據包由於網絡傳輸的緣由丟失了,丟失了以後,客戶端就一直沒有接收到服務器返回的這個東西,它這邊有設置了一個超時時間說我關閉了,超過了這個時間以後鏈接建立就關閉了,我可能再發起一個新的建立鏈接的請求,這個時候服務端,若是咱們沒有第三次握手在這裏的話服務端是根本不知道客戶端它到底有沒有接收到我返回的信息,而且它沒有給我一個確認要建立仍是要關閉這個請求,那麼它這邊的端口就一直開着等着,客戶端來發送實際的請求數據了,那這個時候服務端開銷就浪費了,由於它不知道鏈接已經建立失敗了,客戶端可能去建立別的新的鏈接了,因此咱們須要三次握手來確認這個過程,讓客戶端和服務端可以及時的察覺到說咱們由於一些網絡緣由的問題致使數據端沒有查到,這個端口鏈接就已經關閉了,咱們不須要一直等在那邊,因此這種狀況。三次握手主要是爲了規避網絡傳輸當中延時而致使的一些服務器開銷的問題。spa
HTTP請求建立TCP鏈接的過程中三次握手數據包的一個詳細內容代理