成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

avwu / 810人閱讀

摘要:的最早版本誕生在年,這個最早版本和現(xiàn)在比起來極其簡單,沒有頭,沒有狀態(tài)碼,甚至版本號也沒有,后來它的版本號才被定為來和其他版本的區(qū)分。由于沒有狀態(tài)碼和錯誤代碼,如果服務器處理的時候發(fā)生錯誤,只會傳回一個特殊的包含問題描述信息的文件。

作為互聯(lián)網(wǎng)通信協(xié)議的一員老將,HTTP 協(xié)議走到今天已經(jīng)經(jīng)歷了三次版本的變動,現(xiàn)在最新的版本是 HTTP2.0,相信大家早已耳熟能詳。今天就給大家好好介紹一下 HTTP 的前世今生。

HTTP/0.9

HTTP 的最早版本誕生在 1991 年,這個最早版本和現(xiàn)在比起來極其簡單,沒有 HTTP 頭,沒有狀態(tài)碼,甚至版本號也沒有,后來它的版本號才被定為 0.9 來和其他版本的 HTTP 區(qū)分。HTTP/0.9 只支持一種方法—— Get,請求只有一行。

GET /hello.html

響應也是非常簡單的,只包含 html 文檔本身。


Hello world

當 TCP 建立連接之后,服務器向客戶端返回 HTML 格式的字符串。發(fā)送完畢后,就關閉 TCP 連接。由于沒有狀態(tài)碼和錯誤代碼,如果服務器處理的時候發(fā)生錯誤,只會傳回一個特殊的包含問題描述信息的 HTML 文件。這就是最早的 HTTP/0.9 版本。

HTTP/1.0

1996 年,HTTP/1.0 版本發(fā)布,大大豐富了 HTTP 的傳輸內(nèi)容,除了文字,還可以發(fā)送圖片、視頻等,這為互聯(lián)網(wǎng)的發(fā)展奠定了基礎。相比 HTTP/0.9,HTTP/1.0 主要有如下特性:

請求與響應支持 HTTP 頭,增加了狀態(tài)碼,響應對象的一開始是一個響應狀態(tài)行

協(xié)議版本信息需要隨著請求一起發(fā)送,支持 HEAD,POST 方法

支持傳輸 HTML 文件以外其他類型的內(nèi)容

一個典型的 HTTP/1.0 的請求像這樣:

GET /hello.html HTTP/1.0
User-Agent:NCSA_Mosaic/2.0(Windows3.1)

200 OK
Date: Tue, 15 Nov 1996 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html


一個包含圖片的頁面

HTTP/1.1

在 HTTP/1.0 發(fā)布幾個月后,HTTP/1.1 就發(fā)布了。HTTP/1.1 更多的是作為對 HTTP/1.0 的完善,在 HTTP1.1 中,主要具有如下改進:

可以復用連接

增加 pipeline:HTTP 管線化是將多個 HTTP 請求整批提交的技術,而在傳送過程中不需先等待服務端的回應。管線化機制須通過永久連接(persistent connection)完成。瀏覽器將HTTP請求大批提交可大幅縮短頁面的加載時間,特別是在傳輸延遲(lag/latency)較高的情況下。有一點需要注意的是,只有冪等的請求可以使用 pipeline,如 GET,HEAD 方法。

chunked 編碼傳輸:該編碼將實體分塊傳送并逐塊標明長度,直到長度為 0 塊表示傳輸結束, 這在實體長度未知時特別有用(比如由數(shù)據(jù)庫動態(tài)產(chǎn)生的數(shù)據(jù))

引入更多緩存控制機制:如 etag,cache-control

引入內(nèi)容協(xié)商機制,包括語言,編碼,類型等,并允許客戶端和服務器之間約定以最合適的內(nèi)容進行交換

請求消息和響應消息都支持 Host 頭域:在 HTTP1.0 中認為每臺服務器都綁定一個唯一的 IP 地址,因此,請求消息中的URL并沒有傳遞主機名(hostname)。但隨著虛擬主機技術的發(fā)展,在一臺物理服務器上可以存在多個虛擬主機(Multi-homed Web Servers),并且它們共享一個 IP 地址。因此,Host 頭的引入就很有必要了。

新增了 OPTIONS,PUT, DELETE, TRACE, CONNECT 方法

雖然 HTTP/1.1 已經(jīng)優(yōu)化了很多點,作為一個目前使用最廣泛的協(xié)議版本,已經(jīng)能夠滿足很多網(wǎng)絡需求,但是隨著網(wǎng)頁變得越來越復雜,甚至演變成為獨立的應用,HTTP/1.1 逐漸暴露出了一些問題:

在傳輸數(shù)據(jù)時,每次都要重新建立連接,對移動端特別不友好

傳輸內(nèi)容是明文,不夠安全

header 內(nèi)容過大,每次請求 header 變化不大,造成浪費

keep-alive 給服務端帶來性能壓力

為了解決這些問題,HTTPS 和 SPDY 應運而生。

HTTPS

HTTPS 是以安全為目標的 HTTP 通道,簡單講是 HTTP 的安全版,即 HTTP 下加入 SSL 層,HTTPS 的安全基礎是 SSL,因此加密的詳細內(nèi)容就需要 SSL。

HTTPS 協(xié)議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?;另一種就是確認網(wǎng)站的真實性。
HTTPS 和 HTTP 的區(qū)別主要如下:

HTTPS 協(xié)議使用 ca 申請證書,由于免費證書較少,需要一定費用。

HTTP 是明文傳輸,HTTPS 則是具有安全性的 SSL 加密傳輸協(xié)議。

HTTP 和 HTTPS使用的是完全不同的連接方式,用的端口也不一樣,前者是 80,后者是 443。

SPDY

其實 SPDY 并不是新的一種協(xié)議,而是在 HTTP 之前做了一層會話層。

在 2010 年到 2015 年,谷歌通過實踐一個實驗性的 SPDY 協(xié)議,證明了一個在客戶端和服務器端交換數(shù)據(jù)的另類方式。其收集了瀏覽器和服務器端的開發(fā)者的焦點問題,明確了響應數(shù)量的增加和解決復雜的數(shù)據(jù)傳輸。在啟動 SPDY 這個項目時預設的目標是:

頁面加載時間 (PLT) 減少 50%。

無需網(wǎng)站作者修改任何內(nèi)容。

將部署復雜性降至最低,無需變更網(wǎng)絡基礎設施。

與開源社區(qū)合作開發(fā)這個新協(xié)議。

收集真實性能數(shù)據(jù),驗證這個實驗性協(xié)議是否有效。

為了達到降低目標,減少頁面加載時間的目標,SPDY 引入了一個新的二進制分幀數(shù)據(jù)層,以實現(xiàn)多向請求和響應、優(yōu)先次序、最小化及消除不必要的網(wǎng)絡延遲,目的是更有效地利用底層 TCP 連接。

HTTP/2.0

時間來到 2015 年,HTTP/2.0 問世。先來介紹一下 HTTP/2.0 的特點吧:

使用二進制分幀層:在應用層與傳輸層之間增加一個二進制分幀層,以此達到在不改動 HTTP 的語義,HTTP 方法、狀態(tài)碼、URI 及首部字段的情況下,突破HTTP1.1 的性能限制,改進傳輸性能,實現(xiàn)低延遲和高吞吐量。在二進制分幀層上,HTTP2.0 會將所有傳輸?shù)男畔⒎指顬楦〉南⒑蛶?,并對它們采用二進制格式的編碼,其中 HTTP1.x 的首部信息會被封裝到 Headers 幀,而我們的 request body 則封裝到 Data 幀里面。

多路復用:對于 HTTP/1.x,即使開啟了長連接,請求的發(fā)送也是串行發(fā)送的,在帶寬足夠的情況下,對帶寬的利用率不夠,HTTP/2.0 采用了多路復用的方式,可以并行發(fā)送多個請求,提高對帶寬的利用率。

數(shù)據(jù)流優(yōu)先級:由于請求可以并發(fā)發(fā)送了,那么如果出現(xiàn)了瀏覽器在等待關鍵的 CSS 或者 JS 文件完成對頁面的渲染時,服務器卻在專注的發(fā)送圖片資源的情況怎么辦呢?HTTP/2.0 對數(shù)據(jù)流可以設置優(yōu)先值,這個優(yōu)先值決定了客戶端和服務端處理不同的流采用不同的優(yōu)先級策略。

服務端推送:在 HTTP/2.0 中,服務器可以向客戶發(fā)送請求之外的內(nèi)容,比如正在請求一個頁面時,服務器會把頁面相關的 logo,CSS 等文件直接推送到客戶端,而不會等到請求來的時候再發(fā)送,因為服務器認為客戶端會用到這些東西。這相當于在一個 HTML 文檔內(nèi)集合了所有的資源。

頭部壓縮:使用首部表來跟蹤和存儲之前發(fā)送的鍵值對,對于相同的內(nèi)容,不會再每次請求和響應時發(fā)送。


可以看到 HTTP/2.0 的新特點和 SPDY 很相似,其實 HTTP/2.0 本來就是基于 SPDY 設計的,可以說是 SPDY 的升級版。
但是 HTTP/2.0 仍有和 SPDY 不同的地方,主要有如下兩點:

HTTP2.0 支持明文 HTTP 傳輸,而 SPDY 強制使用 HTTPS。

HTTP2.0 消息頭的壓縮算法采用 HPACK,而非 SPDY 采用的 DEFLATE。


文 / Xss

編 / 熒聲

我們正在進行限時有獎讀者調(diào)查,歡迎參加:

創(chuàng)宇前端期待聽到你的聲音


本文已由作者授權發(fā)布,版權屬于創(chuàng)宇前端。歡迎注明出處轉載本文。本文鏈接:https://knownsec-fed.com/2018...

想要訂閱更多來自知道創(chuàng)宇開發(fā)一線的分享,請搜索關注我們的微信公眾號:創(chuàng)宇前端(KnownsecFED)。歡迎留言討論,我們會盡可能回復。

感謝您的閱讀。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/11435.html

相關文章

  • 未來已到——HTTP/2

    摘要:通過或者協(xié)議請求的資源由統(tǒng)一資源標識符,來標識。標準于年月以正式發(fā)表,替換成為的實現(xiàn)標準。該系列協(xié)議由谷歌開發(fā),于年公開。主流的瀏覽器谷歌火狐也都早已經(jīng)支持,它已經(jīng)成為了工業(yè)標準。配合負載均衡有層和層協(xié)議負載。 HTTP/2 is the future of the Web, and it is here! 使用 HTTP/1.1 和 HTTP/2 在相同環(huán)境各加載 300 多張小圖片...

    songze 評論0 收藏0
  • 一文了解阿里云CDN HTTP2.0

    摘要:摘要本文由阿里視頻云高級技術專家空見撰寫,主要介紹的歷史特性如何使用和使用之后的性能對比驗證。實踐證明解決了的一些頑疾,在性能上提升顯著,最終正式考慮制定的計劃,最后決定以為基礎起草,的部分設計人員也被邀請參與了的設計。 摘要: 本文由阿里視頻云高級技術專家空見撰寫,主要介紹HTTP2.0的歷史、特性、如何使用和使用之后的性能對比驗證。 背景介紹 要了解HTTP2.0,先了解一下HT...

    niceforbear 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<