圖解HTTP權威指南(二)| 連接管理


 

 

 

一、兩個問題

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允許在持久連上上可選的使用 請求管道在響應到達之前,可以將多條請求放入隊列。當第一條請求通過網絡流向另一端的服務器時,第二條和第三條請求也可以開始發送了。早高時延網絡條件下,這樣做可以降低網絡的環回時間,提高性能。
 

 

 四、學習交流

歡迎大家關注我的公眾號,一起交流、學習。 

 
 


免責聲明!

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



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