閱讀140 返回首頁    go 阿裏雲 go 技術社區[雲棲]


HTTP 1.1與HTTP 1.0的比較

一、HTTP簡介
web瀏覽器和服務器之類的交互過程必須遵守的協議。HTTP協議是TCP/IP中的一個應用協議。用來協議數據交換過程和數據本身的格式.主要的有HTTP/1.0和HTTP1.1。

 

HTTP/1.0和HTTP/1.1都把TCP作為底層的傳輸協議。HTTP客戶首先發起建立與服務器TCP連接。一旦建立連接,瀏覽器進程和服務器進程就可以通過各自的套接字來訪問TCP。如前所述,客戶端套接字是客戶進程和TCP連接之間的“門”,服務器端套接字是服務器進程和同一TCP連接之間的 “門”。客戶往自己的套接字發送HTTP請求消息,也從自己的套接字接收HTTP響應消息。類似地,服務器從自己的套接字接收HTTP請求消息,也往自己的套接字發送HTTP響應消息。客戶或服務器一旦把某個消息送入各自的套接字,這個消息就完全落入TCP的控製之中。TCP給HTTP提供一個可靠的數據傳輸服務;這意味著由客戶發出的每個HTTP請求消息最終將無損地到達服務器,由服務器發出的每個HTTP響應消息最終也將無損地到達客戶。我們可從中看到分層網絡體係結構的一個明顯優勢——HTTP不必擔心數據會丟失,也無需關心TCP如何從數據的丟失和錯序中恢複出來的細節。這些是TCP和協議棧中更低協議層的任務。

 

TCP還使用一個擁塞控製機製。該機製迫使每個新的TCP連接一開始以相對緩慢的速率傳輸數據,然而隻要網絡不擁塞,每個連接可以迅速上升到相對較高的速率。這個慢速傳輸的初始階段稱為緩啟動(slow start)。

 

需要注意的是,在向客戶發送所請求文件的同時,服務器並沒有存儲關於該客戶的任何狀態信息。即便某個客戶在幾秒鍾內再次請求同一個對象,服務器也不會響應說:自己剛剛給它發送了這個對象。相反,服務器重新發送這個對象,因為它已經徹底忘記早先做過什麼。既然HTTP服務器不維護客戶的狀態信息,於是說HTTP是一個無狀態的協議(stateless protocol)。

 

二、HTTP1.1和HTTP1.0主要區別
在同一個tcp的連接中可以傳送多個HTTP請求和響應.
多個請求和響應可以重疊,多個請求和響應可以同時進行.
更加多的請求頭和響應頭(比如HTTP1.0沒有host的字段).
總之在HTTP/1.0中,大多實現為每個請求/響應交換使用新的連接。在HTTP/1.1中,一個連接可用於一次或多次請求/響應交換,盡管連接可能由於各種原因被關閉。


三、HTTP1.1和HTTP1.0區別詳解
一個WEB站點每天可能要接收到上百萬的用戶請求,為了提高係統的效率,HTTP 1.0規定瀏覽器與服務器隻保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個TCP連接,服務器完成請求處理後立即斷開TCP連接,服務器不跟蹤每個客戶也不記錄過去的請求。


這也造成了一些性能上的缺陷,例如,一個包含有許多圖像的網頁文件中並沒有包含真正的圖像數據內容,而隻是指明了這些圖像的URL地址,當WEB瀏覽器訪問這個網頁文件時,瀏覽器首先要發出針對該網頁文件的請求,當瀏覽器解析WEB服務器返回的該網頁文檔中的HTML內容時,發現其中的img圖像標簽後,瀏覽器將根據img標簽中的src屬性所指定的URL地址再次向服務器發出下載圖像數據的請求。


顯然,訪問一個包含有許多圖像的網頁文件的整個過程包含了多次請求和響應,每次請求和響應都需要建立一個單獨的連接,每次連接隻是傳輸一個文檔和圖像,上一次和下一次請求完全分離。即使圖像文件都很小,但是客戶端和服務器端每次建立和關閉連接卻是一個相對比較費時的過程,並且會嚴重影響客戶機和服務器的性能。當一個網頁文件中包含Applet,JavaScript文件,CSS文件等內容時,也會出現類似上述的情況。

 

為了克服HTTP 1.0的這個缺陷,HTTP 1.1支持持久連接,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲。一個包含有許多圖像的網頁文件的多個請求和應答可以在一個連接中傳輸,但每個單獨的網頁文件的請求和應答仍然需要使用各自的連接。HTTP 1.1還允許客戶端不用等待上一次請求結果返回,就可以發出下一次請求,但服務器端必須按照接收到客戶端請求的先後順序依次回送響應結果,以保證客戶端能夠區分出每次請求的響應內容,這樣也顯著地減少了整個下載過程所需要的時間。基於HTTP 1.1協議的客戶機與服務器的信息交換過程。


可見HTTP 1.1在繼承了HTTP 1.0優點的基礎上,也克服了HTTP 1.0的性能問題。不僅如此,HTTP 1.1還通過增加更多的請求頭和響應頭來改進和擴充HTTP 1.0的功能。例如,由於HTTP 1.0不支持Host請求頭字段,WEB瀏覽器無法使用主機頭名來明確表示要訪問服務器上的哪個WEB站點,這樣就無法使用WEB服務器在同一個IP地址和端口號上配置多個虛擬WEB站點。在HTTP 1.1中增加Host請求頭字段後,WEB瀏覽器可以使用主機頭名來明確表示要訪問服務器上的哪個WEB站點,這才實現了在一台WEB服務器上可以在同一個IP地址和端口號上使用不同的主機名來創建多個虛擬WEB站點。HTTP 1.1的持續連接,也需要增加新的請求頭來幫助實現,例如,Connection請求頭的值為Keep-Alive時,客戶端通知服務器返回本次請求結果後保持連接;Connection請求頭的值為close時,客戶端通知服務器返回本次請求結果後關閉連接。HTTP 1.1還提供了與身份認證、狀態管理和Cache緩存等機製相關的請求頭和響應頭。

 

原帖地址
https://blog.csdn.net/elifefly/article/details/3964766
https://blog.csdn.net/macrossdzh/article/details/5256565

關於虛擬主機的配置請參見《Tomcat的設置3——設置虛擬主機》https://blog.csdn.net/woshixuye/article/details/18818863


最後更新:2017-04-03 12:54:53

  上一篇:go 大國之殤:從修齊治平看中國式做人的自我扼殺
  下一篇:go [LeetCode]143.Reorder List