HTTP協議詳解 持久連線與非持久連線

2021-08-25 12:53:50 字數 1170 閱讀 1308

最近寫作完http協議一節,略做總結:

非持久連線是在http/1.0中定義,而對於http/1.1中預設的是持久連線(帶流水線),以下是詳細描述:

非持久連線」的概念

某網頁由最基本的 html 和10個jpeg 影象構成,10個jpeg 影象檔案存放在同一臺伺服器中。設這個網頁的url為www.server.com/somepath/index.html。如果使用者請求該網頁並採用「非持久連線」,那麼在http 客戶(通常是使用者瀏覽器)和伺服器之間將發生以下操作:

1. http 客戶端初始化乙個與伺服器主機www.server.com中的http伺服器的tcp 連線。伺服器使用預設埠80監聽來自http客戶的建立連線請求。

2. http客戶端經由與tcp關聯的本地socket發出乙個http請求訊息(request)。這個訊息中包含路徑名/somepaht/index.html。

3. http伺服器經由與tcp關聯的本地socket接收到這個請求訊息,再從伺服器主機的記憶體或者硬碟中取出檔案/somepath/index.html,經由同一socket向 http客戶端傳送包含該檔案的響應訊息(response message)。

4. http伺服器通知tcp服務層關閉這個tcp連線;tcp服務層並不立即關閉這個連線,而是在客戶收到剛才那個響應訊息後才會真正終止這個連線。

5. http客戶端經由同一socket接收這個響應訊息(response message)。tcp連線隨後終止。客戶端所收到的訊息中封裝了客戶端所請求的 html檔案。客戶端瀏覽器從中取出這個檔案,加以分析後發現這個檔案中還有有10個jpeg物件引用。

6. 對每個引用到的jpeg物件重複步驟1~4。

上述步驟之所以稱為使用非持久連線,原因是每次伺服器傳送乙個物件後相關的tcp連線就被關閉,也就是說每個連線沒有持續到可以傳輸其他物件。每個tcp連線只能傳送乙個請求訊息和響應訊息。就上述例子,使用者請求的那個web頁面就產生了11個tcp連線(1個網頁請求連線和10個圖象請求連線)。

在上述的例子中,並沒有明確指出客戶是依次開啟10 逐一取得每個jpeg 物件,還是同時開啟多個 tcp連線同時取得多個 jpeg物件。實際上,現今的瀏覽器允許使用者通過配置來控制並行連線的程度。大多數瀏覽器預設可以開啟5~10個並行tcp連線,每個連線處理乙個請求/響應事務。如果把並行連線數設定為1,那樣的話這個傳送jpeg的10個連線是序列建立的。使用並行連線可以縮短響應時間。

HTTP協議的持續連線和非持續連線

在使用http 1.0的情況下,如果開啟乙個包含乙個html檔案和10個內聯圖象物件的網頁時,http就要建立11次tcp連線才能把檔案從服務機傳送到客戶機。而使用http 1.1的情況下,如果開啟同樣的檔案時,http建立一次tcp連線就可把檔案從服務機傳送到客戶機。使用一次tcp連線傳送乙個物件...

關於HTTP持續連線與非持續連線問題

1 問題描述 在許多網際網路應用程式中,客戶和伺服器在乙個相當長的時間範圍類通訊,其中客戶發出一系列請求並且伺服器對每個請求進行響應。當客戶和伺服器的互動是經tcp進行的,應用程式的研製者就需要做乙個決定,即每個請求 響應對是經乙個單獨的tcp連線傳送,還是所有的請求及其響應經相同的tcp連線傳送,...

HTTP協議之無連線與無狀態

http協議一共有五大特點,1 支援客戶 伺服器模式 2 簡單快速 3 靈活 4 無連線 5 無狀態。其中無狀態是其中主要特點之一。因此,常說 http是乙個無狀態協議。所謂的無狀態是指協議對於事務處理沒有記憶能力。伺服器向客戶機傳送被請求的檔案時,並不儲存任何關於該客戶機的狀態資訊。而無連線又是 ...