首頁 >常見問題 >http1.0和1.1區別

http1.0和1.1區別

(*-*)浩
(*-*)浩原創
2019-10-22 13:39:598807瀏覽

http1.0和1.1區別

1、HTTP 1.1支援長連線(PersistentConnection)和請求的管線(Pipelining)處理

HTTP 1.0規定瀏覽器與伺服器只保持短暫的連接,瀏覽器的每次請求都需要與伺服器建立一個TCP連接,伺服器完成請求處理後立即斷開TCP連接,伺服器不追蹤每個客戶也不記錄過去的請求。 (推薦學習:web前端視訊教學

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)。

以上是http1.0和1.1區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn