午夜国产福利一区二区三区_日韩激情无码不卡_视频二区一区在线_a国产在线∨的不卡视频_人妻无码久久一二三区免费_午夜毛片不卡免費觀看視頻_日韩高清无码专区_中国一级黄色录像片_亚洲韩国在线视频_丰满少妇伦精品无码专区在线观看

您所在的位置: 首頁(yè)>關(guān)于我們>公司動(dòng)態(tài)>建站知識(shí)>HTTP的前世今生:一次性搞懂HTTP、HTTPS、SPDY、HTTP2

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

發(fā)表于:2019-05-21 閱讀:1426 關(guān)鍵詞:

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

  1、HTTP/0.9

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


GET /hello.html


  響應(yīng)也是非常簡(jiǎn)單的,只包含 html 文檔本身。

Hello world 


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

  2、HTTP/1.0

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

●請(qǐng)求與響應(yīng)支持 HTTP 頭,增加了狀態(tài)碼,響應(yīng)對(duì)象的一開(kāi)始是一個(gè)響應(yīng)狀態(tài)行

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

●支持傳輸 HTML 文件以外其他類型的內(nèi)容一個(gè)典型的 HTTP/1.0 的請(qǐng)求像這樣:

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一個(gè)包含圖片的頁(yè)面


  3、HTTP/1.1

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

●可以復(fù)用連接

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

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

●引入更多緩存控制機(jī)制:如 etag,cache-control

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

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

●新增了 OPTIONS,PUT, DELETE, TRACE, CONNECT 方法雖然 HTTP/1.1 已經(jīng)優(yōu)化了很多點(diǎn),作為一個(gè)目前使用最廣泛的協(xié)議版本,已經(jīng)能夠滿足很多網(wǎng)絡(luò)需求,但是隨著網(wǎng)頁(yè)變得越來(lái)越復(fù)雜,甚至演變成為獨(dú)立的應(yīng)用,HTTP/1.1 逐漸暴露出了一些問(wèn)題:

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

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

●header 內(nèi)容過(guò)大,每次請(qǐng)求 header 變化不大,造成浪費(fèi)

●keep-alive 給服務(wù)端帶來(lái)性能壓力為了解決這些問(wèn)題,HTTPS 和 SPDY 應(yīng)運(yùn)而生。


  4、HTTPS

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

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

●HTTPS 協(xié)議使用 ca 申請(qǐng)證書,由于免費(fèi)證書較少,需要一定費(fèi)用。

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

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


  5、SPDY

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

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

頁(yè)面加載時(shí)間 (PLT) 減少 50%。

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

●將部署復(fù)雜性降至最低,無(wú)需變更網(wǎng)絡(luò)基礎(chǔ)設(shè)施。

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

●收集真實(shí)性能數(shù)據(jù),驗(yàn)證這個(gè)實(shí)驗(yàn)性協(xié)議是否有效。為了達(dá)到降低目標(biāo),減少頁(yè)面加載時(shí)間的目標(biāo),SPDY 引入了一個(gè)新的二進(jìn)制分幀數(shù)據(jù)層,以實(shí)現(xiàn)多向請(qǐng)求和響應(yīng)、優(yōu)先次序、最小化及消除不必要的網(wǎng)絡(luò)延遲,目的是更有效地利用底層 TCP 連接。


  6、HTTP/2.0

  時(shí)間來(lái)到 2015 年,HTTP/2.0 問(wèn)世。先來(lái)介紹一下 HTTP/2.0 的特點(diǎn)吧:

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

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

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

●服務(wù)端推送:在 HTTP/2.0 中,服務(wù)器可以向客戶發(fā)送請(qǐng)求之外的內(nèi)容,比如正在請(qǐng)求一個(gè)頁(yè)面時(shí),服務(wù)器會(huì)把頁(yè)面相關(guān)的 logo,CSS 等文件直接推送到客戶端,而不會(huì)等到請(qǐng)求來(lái)的時(shí)候再發(fā)送,因?yàn)榉?wù)器認(rèn)為客戶端會(huì)用到這些東西。這相當(dāng)于在一個(gè) HTML 文檔內(nèi)集合了所有的資源。

●頭部壓縮:使用首部表來(lái)跟蹤和存儲(chǔ)之前發(fā)送的鍵值對(duì),對(duì)于相同的內(nèi)容,不會(huì)再每次請(qǐng)求和響應(yīng)時(shí)發(fā)送。

  可以看到 HTTP/2.0 的新特點(diǎn)和 SPDY 很相似,其實(shí) HTTP/2.0 本來(lái)就是基于 SPDY 設(shè)計(jì)的,可以說(shuō)是 SPDY 的升級(jí)版。

      但是 HTTP/2.0 仍有和 SPDY 不同的地方,主要有如下兩點(diǎn):

HTTP2.0 支持明文 HTTP 傳輸,而 SPDY 強(qiáng)制使用 HTTPS。

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