圖解HTTP權威指南(二)| 連線管理
阿新 • • 發佈:2020-12-25
一、兩個問題
1、HTTP是如何使用TCP連線的 2、HTTP的連線,並行連線、keep-alive(持久連線)和管道化連線二、TCP連線
1、什麼是TCP TCP/IP是全球計算機及網路裝置都在使用的一種常用的分組交換網路層協議分層協議集。客戶端應用程式可以開啟一條TCP/IP連線,連線到可能執行在世界任何地方的伺服器應用程式。一旦連線建立起來,在客戶端和伺服器的計算機之間的交換的報文就永遠不會丟失、受損或失序。 2、瀏覽器的請求過程
3、TCP的可靠資料管道 HTTP連線實際上就是TCP連線和一些使用連線的規則。TCP連線是因特網上的可靠連線。TCP為HTTP提供了一條可靠的位元傳輸管道。從TCP連線一段填入的位元組會從另一端以原有的順序、正確的傳送出來。
4、TCP流是分段的、由IP分組傳送 TCP的資料是通過名為IP分組(或IP資料報)的小資料塊來發送的。HTTP位於TCP/IP協議棧的最頂層。
HTTP要傳送一條報文時,會以流的形式將報文資料的內容通過一條開啟的TCP連線按序傳輸。TCP收到資料流之後,會將資料流砍成被稱作段的小資料塊,並將段封裝在IP分組中,通過因特網進行傳輸。所有的工作都是通過由TCP/IP軟體來處理的。 每個TCP段都是由IP分組承載,從一個IP地址傳送到另一個IP地址的。每個IP分組中都包括: 1)一個IP分組首部(通常為20位元組) 2)一個TCP段首部(通常為20位元組) 3)一個TCP資料塊(0個或多個位元組) IP首部包含了源和目的的IP地址,長度和其他一些標記。TCP段的首部包含了TCP埠號、TCP控制標記,以及用於資料排序和完整性檢查的一些數字值。 4、保持TCP連線的正確執行 在任意時刻計算機都可以有幾條TCP連線處於開啟狀態。TCP是通過埠號來保持所有這些連線的正確執行的。TCP連線通過4個值來識別的:<源IP地址、源埠號、目的IP地址、目的埠號>這四個值一起唯一地定義了一條連線。兩條不同的TCP連線不能擁有4個完全相同的地址元件值。
5、TCP套接字程式設計 作業系統提供了一些操縱其TCP連線的工具。
套接字API允許使用者建立TCP的端點資料結構,將這些端點與遠端伺服器的TCP端點進行連線,並對資料流進行讀寫。TCP API隱藏了所有底層網路協議的握手細節,以及TCP資料流與IP分組之間的分段和重灌細節。 客戶端和服務端在實現HTTP事務時所應執行的步驟:
三、HTTP的幾種連線
1、序列連線 序列事務處理時延,當你開啟一個index.html頁面時,裡面有包含3張圖片,那麼它的HTTP事務如圖
缺點:每個事務都需要一個新的連線,那麼連線時延和慢啟動時延就會疊加起來。 2、並行連線 每個事務都有自己的TCP連線,只是並行處理。
3、持久連線 HTTP/1.1允許HTTP裝置在事務處理結束之後將TCP連線保持在開啟狀態,以便為未來的HTTP請求重用現存的連線。在事務處理結束之後仍然保持在開啟狀態的TCP連線被稱為持久連線。非持久連線會在每個事務結束之後關閉。持久連線會在不同事務之間保持開啟狀態,直到客戶端或者伺服器決定將其關閉。 重用對目標伺服器開啟的空閒持久連線,就可以避開緩慢的連線建立階段。而且,已經開啟的連線還可以避免慢啟動的擁塞適應階段,以便更快速地進行資料的傳輸。
HTTP/1.0+:keep-alive連線 HTTP/1.1:persistent連線 4、管道化持久連線 HTTP/1.1允許在持久連上上可選的使用請求管道。在響應到達之前,可以將多條請求放入佇列。當第一條請求通過網路流向另一端的伺服器時,第二條和第三條請求也可以開始傳送了。早高時延網路條件下,這樣做可以降低網路的環回時間,提高效能。
四、學習交流
歡迎大家關注我的公眾號,一起交流、學習。