Linux

TCP連接池是什麼意思?

  • September 8, 2020

為什麼創建一個新的 TCP 連接被認為是昂貴的?是我想到另一個問題時想到的問題。

保持 TCP 連接處於活動狀態以及通過連接池記憶體連接到底意味著什麼?(我確實理解執行緒池的概念,但與連接池的“連接”部分混淆)。

TCP 流量在到達目的地之前不應該流經許多基於 Internet 的 IP(電腦和路由器等)嗎?如果是這樣,那麼連接甚至意味著什麼?它是否指為 TCP 流量建立一次的路徑,並且重新使用連接意味著一次又一次地使用相同的路徑,直到該路徑中的某些 IP 不再可用?

TCP 連接通過三次握手來初始化,其中連接的兩端就它們用於發送數據包的序列號達成一致。

當三次握手完成後,連接處於 ESTABLISHED 狀態,這意味著數據可以雙向流動。

連接中的各個 TCP 段可以在發送方和接收方之間採用不同的路徑。TCP 關心的只是兩端對連接狀態有相同的想法。

保持 TCP 連接處於活動狀態意味著連接保持在 ESTABLISHED 狀態,即使沒有立即需要通過連接傳輸任何數據。Web 伺服器使用連接池來管理這些與客戶端的開放連接。

保持 TCP 連接打開的實際範例。網站訪問者載入https://www.example.com

  1. 瀏覽器打開到https://www.example.com埠 443 的 TCP 連接。
  2. 瀏覽器與 Web 伺服器進行 TLS 握手。
  3. 瀏覽器向GET /Web 伺服器發送請求,伺服器返迴響應頁面。
  4. 瀏覽器使 TCP 連接與 Web 伺服器保持打開狀態。

訪問者然後瀏覽該頁面並點擊https://www.example.com/example連結。

  1. 現在瀏覽器可以GET /example直接向 Web 伺服器發送請求,重用現有的 TCP 連接和 TLS 傳輸。

如果 Web 伺服器/客戶端沒有保持 TCP 連接打開,瀏覽器將不得不為第二個 HTTPS 請求重複步驟 1 和 2。

引用自:https://serverfault.com/questions/1032970