http1.0與http1.1的區別


http1.0只能支持短鏈接,http1.1則可以支持長鏈接(並不是只支持)。對長鏈接的支持是因為添加了一些請求頭,如host字段、響應碼100(continue,允許發送方向服務器發送一個請求頭以試探是否有發送權限,與100相對應的響應碼是401)、Chunked transfer-coding(發送時將消息划分為幾個數據塊,結束時以一個空塊結尾 )、revalidation(當cache的age超過一定時限,不是直接排拋棄,而是等待重新激活)
 具體如下:
1、HTTP 1.1支持長連接(PersistentConnection)和請求的流水線(Pipelining)處理

HTTP 1.0規定瀏覽器與服務器只保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個TCP連接,服務器完成請求處理后立即斷開TCP連接,服務器不跟蹤每個客戶也不記錄過去的請求。

HTTP 1.1則支持持久連接Persistent Connection, 並且默認使用persistent  connection. 在同一個tcp的連接中可以傳送多個HTTP請求和響應. 多個請求和響應可以重疊,多個請求和響應可以同時進行. 更加多的請求頭和響應頭(比如HTTP1.0沒有host的字段).

在1.0時的會話方式:
 1. 建立連接
 2. 發出請求信息
 3. 回送響應信息
 4. 關掉連接

 HTTP 1.1的持續連接,也需要增加新的請求頭來幫助實現,例如,Connection請求頭的值為Keep-Alive時,客戶端通知服務器返回本次請求結果后保持連接;Connection請求頭的值為close時,客戶端通知服務器返回本次請求結果后關閉連接。HTTP 1.1還提供了與身份認證、狀態管理和Cache緩存等機制相關的請求頭和響應頭。

請求的流水線(Pipelining)處理,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲。例如:一個包含有許多圖像的網頁文件的多個請求和應答可以在一個連接中傳輸,但每個單獨的網頁文件的請求和應答仍然需要使用各自的連接。  HTTP 1.1還允許客戶端不用等待上一次請求結果返回,就可以發出下一次請求,但服務器端必須按照接收到客戶端請求的先后順序依次回送響應結果,以保證客戶端能夠區分出每次請求的響應內容。

2.HTTP 1.1增加host字段

在HTTP1.0中認為每台服務器都綁定一個唯一的IP地址,因此,請求消息中的URL並沒有傳遞主機名(hostname)。但隨着虛擬主機技術的發展,在一台物理服務器上可以存在多個虛擬主機(Multi-homed Web Servers),並且它們共享一個IP地址。

 HTTP1.1的請求消息和響應消息都應支持Host頭域,且請求消息中如果沒有Host頭域會報告一個錯誤(400 Bad Request)。此外,服務器應該接受以絕對路徑標記的資源請求。

3、100(Continue) Status(節約帶寬)

HTTP/1.1加入了一個新的狀態碼100(Continue)。客戶端事先發送一個只帶頭域的請求,如果服務器因為權限拒絕了請求,就回送響應碼401(Unauthorized);如果服務器接收此請求就回送響應碼100,客戶端就可以繼續發送帶實體的完整請求了。100 (Continue) 狀態代碼的使用,允許客戶端在發request消息body之前先用request header試探一下server,看server要不要接收request body,再決定要不要發request body。

4、HTTP/1.1中引入了Chunked transfer-coding來解決上面這個問題,發送方將消息分割成若干個任意大小的數據塊,每個數據塊在發送時都會附上塊的長度,最后用一個零長度的塊作為消息結束的標志。這種方法允許發送方只緩沖消息的一個片段,避免緩沖整個消息帶來的過載。

5、HTTP/1.1在1.0的基礎上加入了一些cache的新特性,當緩存對象的Age超過Expire時變為stale對象,cache不需要直接拋棄stale對象,而是與源服務器進行重新激活(revalidation)。


免責聲明!

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



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