1. 程式人生 > >HTTP協議的前世今生——各版本HTTP協議對比

HTTP協議的前世今生——各版本HTTP協議對比

轉自:http://www.cnblogs.com/andashu/p/6441271.html

HTTP協議是如今網際網路與服務端技術的基石,HTTP協議的演進也從側面反應了網際網路技術的快速發展。這兩天在準備一次關於HTTP1.1協議特性的技術分享過程中,順便了解了下各版本HTTP協議的特點,在這裡做個簡單的總結。

HTTP協議到現在為止總共經歷了3個版本的演化,第一個HTTP協議誕生於1989年3月。

1、HTTP 0.9

HTTP 0.9是第一個版本的HTTP協議,已過時。它的組成極其簡單,只允許客戶端傳送GET這一種請求,且不支援請求頭。由於沒有協議頭,造成了HTTP 0.9協議只支援一種內容,即純文字。不過網頁仍然支援用HTML語言格式化,同時無法插入圖片。

HTTP 0.9具有典型的無狀態性,每個事務獨立進行處理,事務結束時就釋放這個連線。由此可見,HTTP協議的無狀態特點在其第一個版本0.9中已經成型。一次HTTP 0.9的傳輸首先要建立一個由客戶端到Web伺服器的TCP連線,由客戶端發起一個請求,然後由Web伺服器返回頁面內容,然後連線會關閉。如果請求的頁面不存在,也不會返回任何錯誤碼。

HTTP 0.9協議文件:
http://www.w3.org/Protocols/HTTP/AsImplemented.html

2、HTTP 1.0

HTTP協議的第二個版本,第一個在通訊中指定版本號的HTTP協議版本,至今仍被廣泛採用。相對於HTTP 0.9 增加了如下主要特性:

  • 請求與響應支援頭域
  • 響應物件以一個響應狀態行開始
  • 響應物件不只限於超文字
  • 開始支援客戶端通過POST方法向Web伺服器提交資料,支援GET、HEAD、POST方法
  • 支援長連線(但預設還是使用短連線),快取機制,以及身份認證 

3、HTTP 1.1

HTTP協議的第三個版本是HTTP 1.1,是目前使用最廣泛的協議版本 。HTTP 1.1是目前主流的HTTP協議版本,因此這裡就多花一些筆墨介紹一下HTTP 1.1的特性。

HTTP 1.1引入了許多關鍵效能優化:keepalive連線,chunked編碼傳輸,位元組範圍請求,請求流水線等

  • Persistent Connection(keepalive連線)

    允許HTTP裝置在事務處理結束之後將TCP連線保持在開啟的狀態,一遍未來的HTTP請求重用現在的連線,直到客戶端或伺服器端決定將其關閉為止。
    在HTTP1.0中使用長連線需要新增請求頭 Connection: Keep-Alive,而在HTTP 1.1 所有的連線預設都是長連線,除非特殊宣告不支援( HTTP請求報文首部加上Connection: close )

            

  • chunked編碼傳輸
    該編碼將實體分塊傳送並逐塊標明長度,直到長度為0塊表示傳輸結束, 這在實體長度未知時特別有用(比如由資料庫動態產生的資料)
  • 位元組範圍請求
    HTTP1.1支援傳送內容的一部分。比方說,當客戶端已經有內容的一部分,為了節省頻寬,可以只向伺服器請求一部分。該功能通過在請求訊息中引入了range頭域來實現,它允許只請求資源的某個部分。在響應訊息中Content-Range頭域聲明瞭返回的這部分物件的偏移值和長度。如果伺服器相應地返回了物件所請求範圍的內容,則響應碼206(Partial Content)
  • Pipelining(請求流水線)
    A client that supports persistent connections MAY "pipeline" its requests (i.e., send multiple requests without waiting for each response). A server MUST send its responses to those requests in the same order that the requests were received.(摘自http://www.ietf.org/rfc/rfc2616.txt)

            

另外,HTTP 1.1還新增瞭如下特性:

  • 請求訊息和響應訊息都應支援Host頭域
    在HTTP1.0中認為每臺伺服器都繫結一個唯一的IP地址,因此,請求訊息中的URL並沒有傳遞主機名(hostname)。但隨著虛擬主機技術的發展,在一臺物理伺服器上可以存在多個虛擬主機(Multi-homed Web Servers),並且它們共享一個IP地址。因此,Host頭的引入就很有必要了。
  • 新增了一批Request method
    HTTP1.1增加了OPTIONS,PUT, DELETE, TRACE, CONNECT方法
  • 快取處理
    HTTP/1.1在1.0的基礎上加入了一些cache的新特性,引入了實體標籤,一般被稱為e-tags,新增更為強大的Cache-Control頭。 

4、HTTP 2.0

HTTP 2.0是下一代HTTP協議,目前應用還非常少。主要特點有:

  • 多路複用(二進位制分幀)
    HTTP 2.0最大的特點: 不會改動HTTP 的語義,HTTP 方法、狀態碼、URI 及首部欄位,等等這些核心概念上一如往常,卻能致力於突破上一代標準的效能限制,改進傳輸效能,實現低延遲和高吞吐量。而之所以叫2.0,是在於新增的二進位制分幀層。在二進位制分幀層上, HTTP 2.0 會將所有傳輸的資訊分割為更小的訊息和幀,並對它們採用二進位制格式的編碼 ,其中HTTP1.x的首部資訊會被封裝到Headers幀,而我們的request body則封裝到Data幀裡面。

    HTTP 2.0 通訊都在一個連線上完成,這個連線可以承載任意數量的雙向資料流。相應地,每個資料流以訊息的形式傳送,而訊息由一或多個幀組成,這些幀可以亂序傳送,然後再根據每個幀首部的流識別符號重新組裝。
  • 頭部壓縮
    當一個客戶端向相同伺服器請求許多資源時,像來自同一個網頁的影象,將會有大量的請求看上去幾乎同樣的,這就需要壓縮技術對付這種幾乎相同的資訊。
  • 隨時復位
    HTTP1.1一個缺點是當HTTP資訊有一定長度大小資料傳輸時,你不能方便地隨時停止它,中斷TCP連線的代價是昂貴的。使用HTTP2的RST_STREAM將能方便停止一個資訊傳輸,啟動新的資訊,在不中斷連線的情況下提高頻寬利用效率。
  • 伺服器端推流: Server Push
    客戶端請求一個資源X,伺服器端判斷也許客戶端還需要資源Z,在無需事先詢問客戶端情況下將資源Z推送到客戶端,客戶端接受到後,可以快取起來以備後用。
  • 優先權和依賴
    每個流都有自己的優先級別,會表明哪個流是最重要的,客戶端會指定哪個流是最重要的,有一些依賴引數,這樣一個流可以依賴另外一個流。優先級別可以在執行時動態改變,當用戶滾動頁面時,可以告訴瀏覽器哪個影象是最重要的,你也可以在一組流中進行優先篩選,能夠突然抓住重點流。 

相關推薦

HTTP協議前世今生——版本HTTP協議對比

轉自:http://www.cnblogs.com/andashu/p/6441271.html HTTP協議是如今網際網路與服務端技術的基石,HTTP協議的演進也從側面反應了網際網路技術的快速發展。這兩天在準備一次關於HTTP1.1協議特性的技術分享過程中,順便了解了下

HTTP前世今生:一次性搞懂 HTTP、HTTPS、SPDY、HTTP2

作為網際網路通訊協議的一員老將,HTTP 協議走到今天已經經歷了三次版本的變動,現在最新的版本是 HTTP2.0,相信大家早已耳熟能詳。今天就給大家好好介紹一下 HTTP 的前世今生。 HTTP/0.9 HTTP 的最早版本誕生在 1991 年,這個最早版本和現在比起來極其簡單,沒有 HTTP

HTTP前世今生

發布 最小 返回 進行 put 客戶 綁定 ats itl 作為互聯網通信協議的一員老將,HTTP 協議走到今天已經經歷了三次版本的變動,現在最新的版本是 HTTP2.0,相信大家早已耳熟能詳。今天就給大家好好介紹一下 HTTP 的前世今生。 HTTP/

HTTP前世今生,那些不為人知的祕密

> 每個時代,都不會虧待會學習的人。 大家好,我是 yes。 HTTP 協議在當今的網際網路可謂是隨處可見,一直默默的在背後支援著網路世界的執行,對於我們程式設計師來說 HTTP 更是熟悉不過。 平日裡我們都說架構是演進的,需求推動著技術的迭代、更新和進步,對於 HTTP 協議來說也是如此。 不知你是

http協議版本差異

mage lin 應用 分享圖片 安全性 ram 信息 網絡 服務器 http協議各版本差異 一、http協議介紹        http(Hypertext transfer protocol)超文本傳輸協議,它是互聯網上應用最為廣

http協議不同版本之間的對比(1.0 1.1 2.0)

http區別 http 1.0 短連接每一個請求建立一個TCP連接,請求完成後立馬斷開連接。這將會導致2個問題:連接無法復用,head of line blocking連接無法復用會導致每次請求都經歷三次握手和慢啟動。三次握手在高延遲的場景下影響較明顯,慢啟動則對文件類大請求影響較大。head of lin

計算機網絡相關:應用層協議(二):HTTP

toc connect html文本 con 也不會 http服務 lang 代碼 保存 前言 復習下計算機網絡的知識並記錄 正文 定義:HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協

HTTP協議,超文本傳輸協議

strong 聊天 讀取 基本結構 操作 應用 發送 一次 基本 HTTP協議,超文本傳輸協議a.Http協議現在使用的是1.1的版本b.Http協議是應用層協議,底層要求使用可靠傳輸協議傳輸數據。通常傳輸層協議使用Tcp協議c.Tcp協議規定兩臺計算機之間如何傳輸數據。

區塊鏈100講:HTTPS協議的原理及其與HTTP協議的區別

1 HTTPS協議是什麼 https協議比http協議多了一個s,字面意思上s=secure(安全)。它跟http協議一樣都是應用層協議,都是工作在TCP協議之上。 只不過https協議在傳輸過程中的資料都是經過了加密。本質上HTTPS協議就是在TCP協議之上又加了一層SS

HTTP協議概念與特點,HTTP的狀態碼,HTTPS是什麽?

ans -type col 服務器 協議 限制 狀態 訪問 toc 很多人在打開網頁的時候,在瀏覽器地址欄裏都會看到http ,在Java WEB裏,HTTP也是個重點內容,今天我們就來詳細了解和學習HTTP .HTTP是Hyper Text Transfer Proto

一次完整的HTTP請求需要的步驟(http通訊協議

<1> web瀏覽器(客戶端)和web應用伺服器建立tcp連線 http協議是tcp/ip 模型中的應用層的協議,是高層的協議。傳輸控制協議TCP位於傳輸層,tcp是建立本地主機和目標主機的會話,只有建立tcp連線,應用層http協議才可以有通道去進行

HTTP協議概念與特點,HTTP的狀態碼,HTTPS是什麼?

很多人在開啟網頁的時候,在瀏覽器位址列裡都會看到http  ,在Java WEB裡,HTTP也是個重點內容,今天我們就來詳細瞭解和學習HTTP . HTTP是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,HTTP協議是一個屬

HTTP安全協議詳細整理《圖解HTTP

一、HTTP的缺點 HTTP 主要有這些不足, 例舉如下。 通訊使用明文(不加密) , 內容可能會被竊聽 不驗證通訊方的身份, 因此有可能遭遇偽裝 無法證明報文的完整性, 所以有可能已遭篡改 這些問題不僅在 HTTP 上出現, 其他未加密的協議中也會存在這類

http協議基礎(四)http狀態碼 Status Code狀態碼詳解對照表

一:http狀態碼 表示客戶端http請求的返回結果、標記伺服器端的處理是否正常、通知出現的錯誤等工作 狀態碼的類別如下: http狀態碼種類繁多,大概有60多種,實際上經常使用的只有14種,下面為一一介紹   1、2XX 成功:請求被正常處理 1.1 200 OK 表示從客戶端發

HTTP版本及區別

HTTP(Hypertext transfer protocol)超文字傳輸協議,是一個應用層的通訊協議。 HTTP協議版本介紹: HTTP/0.9 :只接受GET一種請求方法,沒有在通訊中指定版本號,且不支援請求頭。由於該版本不支援POST方法,因此客戶端無法向伺服器傳遞太多資訊。 HTTP/1.0 

反向代理使用https協議,後臺tomcat使用http,redirect時使用錯誤協議的解決辦法

問題描述今天遇到一個奇怪的現象,原先部署在外網訪問的應用某些功能出現了異常錯誤,用chrome開發者工具除錯後發現一個奇怪的錯誤:意思基本上就是當前頁面是https協議載入的,但是這個頁面發起了一個http的ajax請求,這種做法是非法的。現象進一步分析後發現以下三個現象:在

如何用Wireshark lua編寫的協議解析器,檢視HTTP包的URI/URL的Query String裡的引數

Wireshark解析HTTP GET方法不會解析URI裡Query字串裡的引數(通常由GET方式提交form資料),本文介紹用lua編寫一個簡單的協議解析器,讓這些引數解析出來,並顯示在wireshark協議解析窗口裡。 首先編寫以下解析器lua指令碼(用文字編輯

http協議】訪問一個完整http請求會經歷哪些問題

一個完整的http請求主要有六個步驟:域名解析發起TCP的3次握手建立TCP連線後發起http請求伺服器端響應http請求,瀏覽器得到html程式碼瀏覽器解析html程式碼,並請求html程式碼中的資源瀏覽器對頁面進行渲染呈現給使用者。二.http與https的區別:HTTP

Android中的Http通訊(一)之Http協議基本知識

寫了這麼久的專案,幾乎每個專案都用到了網路請求,不對,是所有的專案。一直沒有對這一塊做過詳細的總結,今天結合一些網上的資料以及自己的理解,來談談Http。廢話不多說,直奔正題吧...... 我們如果想要真正的瞭解Http,我們必須要知道什麼是Http? 一、什麼是Http?