http系列2 連線管理

2021-10-08 13:04:26 字數 1648 閱讀 1333

思維導圖

http是基於tcp進行連線的。

tcp時延包括三次握手,慢啟動等

如果只是簡單的序列連線,每個事務都需要建立一條新的連線 ,tcp的效能時延可能會疊加。

http允許客戶端開啟多條連線,並行的執行多個http事務。

http1.1 使用的就是並行連線,即同時傳送多條http請求,每次都會同時重新發起新的http請求。

不是說同乙個連線同時只能傳送乙個http請求嗎,為什麼還可以並行連線呢?

答:乙個連線只能同時傳送乙個http請求,但是瀏覽器可以同時建立多個連線,就可以同時傳送多個請求了,這就是並行連線。

如圖:可以看到前6個請求忽略程式時延,幾乎是同時開始的。

但是並不是所有的瀏覽器都是最大同時同域允許6個http事務,詳情可以自行查詢。

圖中前6個請求會分別建立6個連線,

注意:這裡的連線不是同乙個tcp連線中不同的http,而是不同的tcp連線,搞清楚層級概念這是乙個非常重要的概念

證明如下圖

每個鏈結都會發起dns定址,說明重新建立了連線。

為什麼瀏覽器要限制同域最大並行數量?

同時開啟大量的鏈結會消耗很多記憶體資源,引發自身的效能問題。

同時過多的請求數會給伺服器帶來效能問題。

並行連線的一定快嗎?

不一定,如果頻寬有限,會造成多個請求搶占頻寬,反而會讓使用者感覺頁面更慢了(白屏),相比序列先出現一部分來說,體驗更差。

http1.0開始有個keep-alive首部,但是http1.0預設關閉,http1.1開始才預設開啟。

這個首部如果不開啟的話,每次乙個http請求完成之後,tcp連線就會關閉。下乙個http請求需要重新建立連線,經歷tcp連線三次握手,浪費時間。

持久連線就是允許http裝置在事務處理結束之後將tcp連線保持在開啟狀態,以便將來的http請求重用現存的連線。

在事務處理結束之後仍保持開啟狀態的tcp連線被稱為持久連線。

好處是:

避免了tcp緩慢的連線建立的過程

避免tcp慢啟動的擁塞適應階段

持久連線和並行連線配合使用是最高效的方式,現代瀏覽器大多也是這樣配合使用的

如下圖:可以看到確實沒有再重新發起dns查詢,使用的是同一條tcp連線

http1.1允許在持久連線上可選的使用請求管道。這是對keep-alive的又一次優化。在響應到達之前,可以將多條請求放入到佇列中。當第一條到達伺服器後,第二條也可以開始傳送。

但是管道存在很多問題,所以很少使用。

http協議讀書筆記2 連線管理

一 http是如何使用tcp連線的?http連線本質就是tcp連線和一些使用連線的規則。所有的http通訊都是由tcp ip來承載的。tcp ip是全球計算機及網路裝置都在使用的一種常用的分組交換的網路分層協議集。客戶端程式開啟一條tcp ip連線。連線到可能執行在世界任何地方的伺服器應用程式。1....

HTTP連線管理

http通訊是由tcp ip承載的,tcp ip是全球計算機及網路裝置都在使用的一種常用的分組交換網路分層協議集。http連線實際上就是tcp連線和一些使用連線的規則。tcp的資料是通過名為ip分組 或ip資料報 的小資料塊來傳送的。http要傳送一條報文時,會以流的形式將報文資料的內容通過一條開啟...

1 4連線管理

這部分可以了解到 http是如何使用tcp連線的,tcp的時延,瓶頸,障礙,http的優化,包括並行連線,keep alive和管道話連線等。1.4.1 tcp連線 世界上幾乎所有的http通訊都是由tcp ip承載的。當瀏覽器收到乙個url時,回經過下圖的步驟 1.4.1.1 tcp的可靠資料管道...