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

 

 

 

1、兩個問題

一、HTTP是如何使用TCP鏈接的
二、HTTP的鏈接,並行鏈接、keep-alive(持久鏈接)和管道化鏈接
 

2、TCP鏈接

一、什麼是TCP
 
TCP/IP是全球計算機及網絡設備都在使用的一種經常使用的分組交換 網絡層協議分層協議集。客戶端應用程序能夠打開一條TCP/IP鏈接,鏈接到可能運行在世界任何地方的服務器應用程序。一旦鏈接創建起來,在客戶端和服務器的計算機之間的交換的報文就永遠不會丟失、受損或失序。
 
二、瀏覽器的請求過程
 

 

 

三、TCP的可靠數據管道
 
HTTP鏈接實際上就是TCP鏈接和一些使用鏈接的規則。TCP鏈接是因特網上的可靠鏈接。 TCP爲HTTP提供了一條可靠的比特傳輸管道。從TCP鏈接一段填入的字節會從另外一端以原有的順序、正確的傳送出來。

 

 

四、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控制標記,以及用於數據排序和完整性檢查的一些數字值。
 
四、保持TCP鏈接的正確運行
 
在任意時刻計算機均可以有幾條TCP鏈接處於打開狀態。 TCP是經過端口號來保持全部這些鏈接的正確運行的。TCP鏈接經過4個值來識別的: <源IP地址、源端口號、目的IP地址、目的端口號>這四個值一塊兒惟一地定義了一條鏈接。兩條不一樣的TCP鏈接不能擁有4個徹底相同的地址組件值。

 

 

 
五、TCP套接字編程
 
操做系統提供了一些操縱其TCP鏈接的工具。
 

 

 

 
套接字API容許用戶建立TCP的端點數據結構,將這些端點與遠程服務器的TCP端點進行鏈接,並對數據流進行讀寫。TCP API隱藏了全部底層網絡協議的握手細節,以及TCP數據流與IP分組之間的分段和重裝細節。
 
客戶端和服務端在實現HTTP事務時所應執行的步驟:

 

  

3、HTTP的幾種鏈接

一、串行鏈接
 
串行事務處理時延,當你打開一個index.html頁面時,裏面有包含3張圖片,那麼它的HTTP事務如圖

 

 

缺點:每一個事務都須要一個新的鏈接,那麼鏈接時延和慢啓動時延就會疊加起來。
 
 
二、並行鏈接
 
每一個事務都有本身的TCP鏈接,只是並行處理。

 

 

   
三、持久鏈接
 
HTTP/1.1容許HTTP設備在事務處理結束以後將TCP鏈接保持在打開狀態,以便爲將來的HTTP請求重用現存的鏈接。在事務處理結束以後仍然保持在打開狀態的TCP鏈接被稱爲持久鏈接。非持久鏈接會在每一個事務結束以後關閉。持久鏈接會在不一樣事務之間保持打開狀態,直到客戶端或者服務器決定將其關閉。
 
重用對目標服務器打開的空閒持久鏈接,就能夠避開緩慢的鏈接創建階段。並且,已經打開的鏈接還能夠避免慢啓動的擁塞適應階段,以便更快速地進行數據的傳輸。
 

 

 

 
HTTP/1.0+:keep-alive鏈接
HTTP/1.1:persistent鏈接
 
四、管道化持久鏈接
 
HTTP/1.1容許在持久連上上可選的使用 請求管道在響應到達以前,能夠將多條請求放入隊列。當第一條請求經過網絡流向另外一端的服務器時,第二條和第三條請求也能夠開始發送了。早高時延網絡條件下,這樣作能夠下降網絡的環回時間,提升性能。
 

 

 4、學習交流

歡迎你們關注個人公衆號,一塊兒交流、學習。 html

相關文章
相關標籤/搜索