大白話學習HTTP請求

 

三次握手服務器

  1. 客戶端發起一個我要建立的鏈接數據包的請求發送到服務端,這裏面有個標誌位syn=1(建立請求的數據包),seq=X
  2. 服務端接收到數據包以後知道了我有一個客戶要跟我建立鏈接了,建立鏈接以後呢,開啓TCP Socket的端口,端口開啓以後呢,返回給客戶端,返回給客戶端數據裏也是一個syn的標誌位,返回ack=X+1,seq=Y再發送一個seq,服務端的seq
  3. 客戶端拿到了以後說服務端容許我建立這個TCP鏈接了,它再去發送它的ack=Y+1,seq=Z(seq又等於一個新的數字)這就是建立一個TCP鏈接的過程

 

爲何要進行三次握手網絡

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

 

   HTTP請求建立TCP鏈接的過程中三次握手數據包的一個詳細內容代理

相關文章
相關標籤/搜索