在使用http/1.0的情況下,如果開啟乙個包含乙個html檔案和10個內聯圖象物件的網頁時,http就要建立11次tcp連線才能把檔案從服務機傳送到客戶機。而使用http/1.1的情況下,如果開啟同樣的檔案時,http建立一次tcp連線就可把檔案從服務機傳送到客戶機。使用一次tcp連線傳送乙個物件的效率比較低,這體現在下列幾個方面:
(1) 每次tcp連線必需要建立和斷開。客戶機和服務機建立一次連線需要執行三向溝通連線法(three-way handshake),服務機在物件遞送之後要斷開tcp連線。在建立和斷開連線時要占用cpu的資源。如果使用一次連線代替11次連線的話,占用客戶機和服務機的cpu時間可大大減少。
(2) 對每次連線,客戶機和服務機都必須分配傳送和接收快取。這就意味著要影響客戶機和服務機的儲存器資源,這同樣要占用cpu的時間。
(3) 對由大數量物件組成的檔案,tcp的低速啟動演算法(slow start-up algorithm)會限**務機向客戶機傳送物件的速度。使用http/1.1之後,大多數物件都可以盡最大的速率傳送。
由於http/1.1允許持續連線,檔案中的所有物件都可在相同的tcp連線上傳送。http/1.1也允許在客戶機接收到服務機的訊息響應之前傳送多個訊息請求,這叫做流水線式請求(pipelined request)。
持久連線分為不帶流水線(without pipelining)和帶流水線(with pipelining)兩個版本。如果是不帶流水線的版本,那麼客戶只在收到前乙個請求的響應後才發出新的請求。這種情況下,web頁面所引用的每個物件(上例中的10個影象)都經歷1個rtt的延遲,用於請求和接收該物件。與非持久連線2個rtt的延遲相比,不帶流水線的持久連線已有所改善,不過帶流水線的持久連線還能進一步降低響應延遲。不帶流水線版本的另乙個缺點是,伺服器送出乙個物件後開始等待下乙個請求,而這個新請求卻不能馬上到達。這段時間伺服器資源便閒置了。
http/1.1的預設模式使用帶流水線的持久連線。這種情況下,http客戶每碰到乙個引用就立即發出乙個請求,因而http客戶可以乙個接乙個緊挨著發出各個引用物件的請求。伺服器收到這些請求後,也可以乙個接乙個緊挨著發出各個物件。如果所有的請求和響應都是緊挨著傳送的,那麼所有引用到的物件一共只經歷1個rtt的延遲(而不是像不帶流水線的版本那樣,每個引用到的物件都各有1個rtt的延遲)。另外,帶流水線的持久連線中伺服器空等請求的時間比較少。與非持久連線相比,持久連線(不論是否帶流水線)除降低了1個rtt的響應延遲外,緩啟動延遲也比較小。其原因在於既然各個物件使用同乙個tcp連線,伺服器發出第乙個物件後就不必再以一開始的緩慢速率傳送後續物件。相反,伺服器可以按照第乙個物件傳送完畢時的速率開始傳送下乙個物件。
http/1.1都有非持續連線(non-persistent connection)和持續連線(persistent connection)功能。非持續連線是指啟動一次tcp連線服務機就向客戶機傳送乙個物件,而持續連線是指服務機可在相同的tcp連線上向客戶機傳送多個物件。http/1.0的預設設定是非持續連線,而http/1.1的預設設定是持續連線。
關於HTTP持續連線與非持續連線問題
1 問題描述 在許多網際網路應用程式中,客戶和伺服器在乙個相當長的時間範圍類通訊,其中客戶發出一系列請求並且伺服器對每個請求進行響應。當客戶和伺服器的互動是經tcp進行的,應用程式的研製者就需要做乙個決定,即每個請求 響應對是經乙個單獨的tcp連線傳送,還是所有的請求及其響應經相同的tcp連線傳送,...
HTTP協議(持續更新)
http請求由三部分組成,分別是 請求行 訊息報頭 請求正文 http 超文字傳輸協議 是乙個基於請求與響應模式的 無狀態的 應用層的協議,常基於tcp的連線方式,http1.1版本中給出一種持續連線的機制,絕大多數的web開發,都是構建在http協議之上的web應用。特點 1 http是無連線 無...
wireshark講解HTTP協議持續更新
frame 物理層的資料幀概況,包括時間,編號,幀長度,幀中所含有的協議 ethernet ii 資料鏈路層乙太網幀頭部資訊,包括傳送端和目標端mac位址資訊等 上層協議型別 internet protocol version 4 網路層,ip協議 版本,頭部長度,總長度,標誌位,源 目的ip位址,...