http1.0和http1.1的一些區別
http1.0最早在網頁中使用是在2023年,那個時候只是使用一些較為簡單的網頁上和網路請求上,而http1.1則在2023年才開始廣泛應用於現在的各大瀏覽器網路請求中,同時http1.1也是當前使用最為廣泛的http協議。 主要區別主要體現在:
** 快取處理**,在http1.0中主要使用header裡的if-modified-since,expires來做為快取判斷的標準,http1.1則引入了更多的快取控制策略例如entity tag,if-unmodified-since, if-match, if-none-match等更多可供選擇的快取頭來控制快取策略。
頻寬優化及網路連線的使用,http1.0中,存在一些浪費頻寬的現象,例如客戶端只是需要某個物件的一部分,而伺服器卻將整個物件送過來了,並且不支援斷點續傳功能,http1.1則在請求頭引入了range頭域,它允許只請求資源的某個部分,即返回碼是206(partial content),這樣就方便了開發者自由的選擇以便於充分利用頻寬和連線。
錯誤通知的管理,在http1.1中新增了24個錯誤狀態響應碼,如409(conflict)表示請求的資源與資源的當前狀態發生衝突;410(gone)表示伺服器上的某個資源被永久性的刪除。
host頭處理,在http1.0中認為每台伺服器都繫結乙個唯一的ip位址,因此,請求訊息中的url並沒有傳遞主機名(hostname)。但隨著虛擬主機技術的發展,在一台物理伺服器上可以存在多個虛擬主機(multi-homed web servers),並且它們共享乙個ip位址。http1.1的請求訊息和響應訊息都應支援host頭域,且請求訊息中如果沒有host頭域會報告乙個錯誤(400 bad request)。
長連線,http 1.1支援長連線(persistentconnection)和請求的流水線(pipelining)處理,在乙個tcp連線上可以傳送多個http請求和響應,減少了建立和關閉連線的消耗和延遲,在http1.1中預設開啟connection: keep-alive,一定程度上彌補了http1.0每次請求都要建立連線的缺點。
四、https與http的一些區別
https協議需要到ca申請證書,一般免費證書很少,需要交費。
http協議執行在tcp之上,所有傳輸的內容都是明文,https執行在ssl/tls之上,ssl/tls執行在tcp之上,所有傳輸的內容都經過加密的。
http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。
https可以有效的防止運營商劫持,解決了防劫持的乙個大問題。
五、spdy:http1.x的優化
2023年google如一聲驚雷提出了spdy的方案,優化了http1.x的請求延遲,解決了http1.x的安全性,具體如下:
降低延遲,針對http高延遲的問題,spdy優雅的採取了多路復用(multiplexing)。多路復用通過多個請求stream共享乙個tcp連線的方式,解決了hol blocking的問題,降低了延遲同時提高了頻寬的利用率。
請求優先順序(request prioritization)。多路復用帶來乙個新的問題是,在連線共享的基礎之上有可能會導致關鍵請求被阻塞。spdy允許給每個request設定優先順序,這樣重要的請求就會優先得到響應。比如瀏覽器載入首頁,首頁的html內容應該優先展示,之後才是各種靜態資源檔案,指令碼檔案等載入,這樣可以保證使用者能第一時間看到網頁內容。
header壓縮。前面提到http1.x的header很多時候都是重複多餘的。選擇合適的壓縮演算法可以減小包的大小和數量。
基於https的加密協議傳輸,大大提高了傳輸資料的可靠性。
服務端推送(server push),採用了spdy的網頁,例如我的網頁有乙個sytle.css的請求,在客戶端收到sytle.css資料的同時,服務端會將sytle.js的檔案推送給客戶端,當客戶端再次嘗試獲取sytle.js時就可以直接從快取中獲取到,不用再發請求了。spdy構成圖:
spdy位於http之下,tcp和ssl之上,這樣可以輕鬆相容老版本的http協議(將http1.x的內容封裝成一種新的frame格式),同時可以使用已有的ssl功能。
六、http2.0效能驚人
http/2: the future of the internet 是 akamai 公司建立的乙個官方的演示,用以說明 http/2 相比於之前的 http/1.1 在效能上的大幅度提公升。 同時請求 379 張,從load time 的對比可以看出 http/2 在速度上的優勢。
七、http2.0:spdy的公升級版
http2.0可以說是spdy的公升級版(其實原本也是基於spdy設計的),但是,http2.0 跟 spdy 仍有不同的地方,如下:
http2.0和spdy的區別:
http2.0 支援明文 http 傳輸,而 spdy 強制使用 https
http2.0 訊息頭的壓縮演算法採用 hpack,而非 spdy 採用的 deflate
八、http2.0和http1.x相比的新特性
新的二進位制格式(binary format),http1.x的解析是基於文字。基於文字協議的格式解析存在天然缺陷,文字的表現形式有多樣性,要做到健壯性考慮的場景必然很多,二進位制則不同,只認0和1的組合。基於這種考慮http2.0的協議解析決定採用二進位制格式,實現方便且健壯。
多路復用(multiplexing),即連線共享,即每乙個request都是是用作連線共享機制的。乙個request對應乙個id,這樣乙個連線上可以有多個request,每個連線的request可以隨機的混雜在一起,接收方可以根據request的 id將request再歸屬到各自不同的服務端請求裡面。
header壓縮,如上文中所言,對前面提到過http1.x的header帶有大量資訊,而且每次都要重**送,http2.0使用encoder來減少需要傳輸的header大小,通訊雙方各自cache乙份header fields表,既避免了重複header的傳輸,又減小了需要傳輸的大小。
服務端推送(server push),同spdy一樣,http2.0也具有server push功能。
九、http2.0的公升級改造
前文說了http2.0其實可以支援非https的,但是現在主流的瀏覽器像chrome,firefox表示還是只支援基於 tls 部署的http2.0協議,所以要想公升級成http2.0還是先公升級https為好。
當你的**已經公升級https之後,那麼公升級http2.0就簡單很多,如果你使用nginx,只要在配置檔案中啟動相應的協議就可以了,可以參考nginx***,nginx配置http2.0官方指南。
使用了http2.0那麼,原本的http1.x怎麼辦,這個問題其實不用擔心,http2.0完全相容http1.x的語義,對於不支援http2.0的瀏覽器,nginx會自動向下相容的。
十、附註
http2.0的多路復用和http1.x中的長連線復用有什麼區別?
http/1.* 一次請求-響應,建立乙個連線,用完關閉;每乙個請求都要建立乙個連線;
http/1.1 pipeling解決方式為,若干個請求排隊序列化單執行緒處理,後面的請求等待前面請求的返回才能獲得執行機會,一旦有某請求超時等,後續請求只能被阻塞,毫無辦法,也就是人們常說的線頭阻塞;
http/2多個請求可同時在乙個連線上並行執行。某個請求任務耗時嚴重,不會影響到其它連線的正常執行;
具體如圖:
伺服器推送到底是什麼?
服務端推送能把客戶端所需要的資源伴隨著index.html一起傳送到客戶端,省去了客戶端重複請求的步驟。正因為沒有發起請求,建立連線等操作,所以靜態資源通過服務端推送的方式可以極大地提公升速度。具體如下:
普通的客戶端請求過程:
服務端推送的過程:
為什麼需要頭部壓縮?
假定乙個頁面有100個資源需要載入(這個數量對於今天的web而言還是挺保守的), 而每一次請求都有1kb的訊息頭(這同樣也並不少見,因為cookie和引用等東西的存在), 則至少需要多消耗100kb來獲取這些訊息頭。http2.0可以維護乙個字典,差量更新http頭部,大大降低因頭部傳輸產生的流量。具體參考:http/2 頭部壓縮技術介紹
http2.0多路復用有多好?
http 效能優化的關鍵並不在於高頻寬,而是低延遲。tcp 連線會隨著時間進行自我「調諧」,起初會限制連線的最大速度,如果資料成功傳輸,會隨著時間的推移提高傳輸的速度。這種調諧則被稱為 tcp 慢啟動。由於這種原因,讓原本就具有突發性和短時性的 http 連線變的十分低效。
http/2 通過讓所有資料流共用同乙個連線,可以更有效地使用 tcp 連線,讓高頻寬也能真正的服務於 http 的效能提公升。
HTTP 1 0,1 1,2 0 特點 區別
首先,在了解他們之間區別之前,我們先簡單看一下http的工作過程 http的訪問其實是由兩個階段組成的。http請求 http request http響應 http response 一次http事務 請求 響應 當我們開啟瀏覽器時,瀏覽器會向伺服器端傳送乙個http的請求,伺服器收到請求以後,會...
HTTP1 0 1 1 2 0版本區別
1.http1.0最早在網頁中使用是在1996年,那個時候只是使用一些較為簡單的網頁上和網路請求上,而http1.1則在1999年才開始廣泛應用於現在的各大瀏覽器網路請求中,同時http1.1也是當前使用最為廣泛的http協議。主要區別主要體現在 2.快取處理,在http1.0中主要使用header...
http各版本之間的區別
http版本 value 缺點0.9 僅支援請求方式get,並且僅能請求訪問html格式的資源。1.0請求方式post和head 每次tcp連線只能傳送乙個請求,當伺服器響應後就會關閉這次連線,下乙個請求需要再次建立tcp連線,就是不支援keepalive 1.11.tcp連線預設不關閉,可以被多個...