HTTP三次握手


  • 在客戶端和服務器之間進行HTTP的發送和請求的過程中,需要創建一個TCP connection(TCP鏈接)的東西。
  • 因為HTTP不存在連接這個概念的,只有請求和響應這個概念,請求和響應都是數據包,需要經過一個傳輸的通道的,這個傳輸的通道就在TCP里面創建了一個從客戶端發起和服務端接收的這樣一個連接,這個連接可以一直保持在這里,http請求就是在這個連接的基礎上來發送的。因此在一個TCP連接上就可以發送多個HTTP請求。
  • 在HTTP1.0中,是在創建http請求的時候就創建TCP連接,請求發送過去服務器響應以后TCP連接就關閉了。
  • 在HTTP1.1中,可以聲明這個連接可以一直保持在那里,就是第一個請求發送以后這個連接不關閉,后續HTTP請求可以繼續使用這個連接。
  • 因為TCP連接在創建的過程中是有三次握手這么一個消耗的。
  • 在HTTP2.0里面,TCP連接中的HTTP請求是可以並發的,即一個用戶向一個服務器發起一個網絡請求的時候,只需要一個TCP連接。

1.三次握手

 

  • 客戶端發起一個創建連接的數據包的請求。
    • SYN:標志位。表示這是一個創建請求的數據包
    • Seq:數字,一般為1
  • 服務端接收到這個數據包。就會開啟一個TCP socket的端口,端口開啟以后返回給客戶端
    • SYN:標志位。
    • ACK:客戶端的SYN+1。
    • Seq:服務端的Seq
  • 客戶端拿到了。繼續返回
    • ACK
    • Seq

為什么要有三次握手:

  • 防止服務端開啟無用的連接。因為網絡傳輸是有延時的,可以規避網絡延時導致服務器額外的開銷


免責聲明!

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



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