前言
通過(guò)這篇文章你可以了解到:
1. 什么是HTTP協(xié)議?
2. HTTP 1.1 / 2.0 / 3.0 的發(fā)展變更
3. HTTP 1.1 / 2.0 / 3.0 的主要區(qū)別
4. HTTP 3.0 進(jìn)化發(fā)展的意義
什么是HTTP協(xié)議?
HTTP
HTTP( Hyper Text Transfer Protocol 超文本傳輸協(xié)議),是一個(gè)用于傳輸超文本文檔的應(yīng)用層協(xié)議,基于TCP協(xié)議,它是為Web瀏覽器與Web服務(wù)器之間的通信而設(shè)計(jì)的。
基本特點(diǎn):
1. 基于TCP協(xié)議,應(yīng)用層協(xié)議
2. 傳輸一些HTML、CSS、JavaScript內(nèi)容
3. 請(qǐng)求及響應(yīng)
4. 簡(jiǎn)單可擴(kuò)展:語(yǔ)義簡(jiǎn)單且可在請(qǐng)求頭自定義內(nèi)容
5. 無(wú)狀態(tài):請(qǐng)求之間是相互孤立的
HTTP協(xié)議到目前為止所有的版本可以分為HTTP 0.9、HTTP 1.0、HTTP 1.1、HTTP 2.0、HTTP 3.0,其中普遍應(yīng)用的是HTTP 1.1版本,正在推進(jìn)HTTP 2.0版本,以及未來(lái)的HTTP 3.0版本,今天主要介紹這三個(gè)版本。
HTTP 1.1 / 2.0 / 3.0 之間的發(fā)展變更
HTTP
「HTTP 1.1 」
HTTP代表超文本傳輸協(xié)議,這是一種自1989年推出以來(lái)用于通過(guò)萬(wàn)維網(wǎng)進(jìn)行通信的應(yīng)用程序協(xié)議。HTTP是互聯(lián)網(wǎng)上的計(jì)算機(jī)和服務(wù)器用來(lái)請(qǐng)求和發(fā)送信息的一種方法。
HTTP 1.1是標(biāo)準(zhǔn)化的協(xié)議,HTTP 1.1消除了大量歧義內(nèi)容并引入了多項(xiàng)改進(jìn)。
「工作方式」
HTTP利用一些簡(jiǎn)單的方法在計(jì)算機(jī)之間發(fā)送和接收信息。兩種最常見(jiàn)的方法是:(1)獲取;(2)發(fā)布。當(dāng)客戶端計(jì)算機(jī)與服務(wù)器通信時(shí),它會(huì)發(fā)送這些命令之一來(lái)指示服務(wù)器下一步該做什么。作為響應(yīng),服務(wù)器通常會(huì)將資源(如 HTML 網(wǎng)頁(yè))返回給客戶端計(jì)算機(jī)。
「獲取示例」
讓我們把它放到一個(gè)可能發(fā)生的示例HTTP事務(wù)中。
在此示例中,客戶端計(jì)算機(jī)使用 GET 方法從地址為“www.example.co.uk”的主機(jī)服務(wù)器請(qǐng)求名為“index.html”的 HTML 文檔,該文檔采用 HTTP/1.1 協(xié)議。作為響應(yīng),Web 服務(wù)器將“index.html”文檔連同任何相關(guān)的樣式表、圖像或其他資源一起返回到客戶端計(jì)算機(jī)。
但是,這些資源不會(huì)在一個(gè)事務(wù)中全部返回 - 請(qǐng)求和響應(yīng)將來(lái)回傳遞,直到所有相關(guān)數(shù)據(jù)都已傳輸并且客戶端可以在其瀏覽器上顯示網(wǎng)頁(yè)。
「開(kāi)機(jī)自檢示例」
下面的另一個(gè)示例是如何執(zhí)行具有 POST 命令的典型 HTTP 事務(wù):
在此示例中,客戶端計(jì)算機(jī)使用 POST 方法將數(shù)據(jù)發(fā)送到指定的服務(wù)器。這里發(fā)送的數(shù)據(jù)是“field1=value1&field2=value2”。第一行定義正在使用的方法、要將數(shù)據(jù)發(fā)送到的文件以及 HTTP 版本?!癶ost”行定義了在發(fā)送指定數(shù)據(jù)之前,客戶端計(jì)算機(jī)應(yīng)連接到的位置。
「HTTP 2.0 」
HTTP / 2是HTTP協(xié)議的第一個(gè)主要修訂版,旨在通過(guò)實(shí)施各種優(yōu)化技術(shù)來(lái)減少網(wǎng)頁(yè)加載延遲。HTTP/2 由 IETF(互聯(lián)網(wǎng)工程任務(wù)組)于 2015 年 5 月發(fā)布,旨在成為與所有可用 Web 瀏覽器兼容的標(biāo)準(zhǔn)通信方法。
「特點(diǎn)」
1. HTTP/2 連接都是永久的,而且僅需要每個(gè)來(lái)源一個(gè)連接。
2. 流控制:阻止發(fā)送方向接收方(服務(wù)器)發(fā)送大量數(shù)據(jù)的機(jī)制。
3. 服務(wù)器可主動(dòng)推送信息。
「工作方式」
雖然HTTP / 1.1和HTTP / 2共享語(yǔ)義以促進(jìn)兩個(gè)協(xié)議之間的通信,但它們用于傳遞數(shù)據(jù)的方法可能會(huì)有很大差異。
HTTP/2 和 HTTP/1.x 之間的主要區(qū)別如下:
(1)HTTP/2 將請(qǐng)求和響應(yīng)消息編碼為二進(jìn)制,而不是傳輸使用 HTTP/1.1 看到的普通純文本消息。
(2)HTTP/2是完全多路復(fù)用和并發(fā)的,這意味著與HTTP/1.x中的有限請(qǐng)求相比,它可以向網(wǎng)站發(fā)出更多的請(qǐng)求。
(3)利用網(wǎng)站資產(chǎn)的流優(yōu)先級(jí)。
(4)標(biāo)頭壓縮用于減少開(kāi)銷(xiāo)處理。
「HTTP 3.0 」
HTTP/3是2020年8月發(fā)布的基于QUIC網(wǎng)絡(luò)協(xié)議的新版本HTTP。HTTP 3.0作為超文本傳輸協(xié)議(HTTP)的第三個(gè)版本,以前稱為HTTP-over-QUIC。QUIC(Quick UDP Internet Connections)最初由Google開(kāi)發(fā),是HTTP 2.0的繼任者。谷歌和Facebook等公司已經(jīng)在使用QUIC來(lái)加速網(wǎng)絡(luò)。
「工作方式」作為一個(gè)非常新的協(xié)議,HTTP / 3可能會(huì)在未來(lái)幾年內(nèi)發(fā)生一些變化,但它的基礎(chǔ)仍將牢牢地基于QUIC協(xié)議。
QUIC(快速UDP互聯(lián)網(wǎng)連接)是一種新的網(wǎng)絡(luò)傳輸層協(xié)議,與TCP相比,旨在顯著減少延遲并提高效率。從本質(zhì)上講,連接建立得更快 - 特別是當(dāng)網(wǎng)絡(luò)條件不是最佳時(shí)。由于QUIC減少了TCP慢啟動(dòng)問(wèn)題,視頻流的速度可能會(huì)顯著提高,尤其是在UHD及以上版本中。此外,在移動(dòng)網(wǎng)絡(luò)和Wi-Fi網(wǎng)絡(luò)之間移動(dòng)時(shí),出于同樣的原因,HTTP / 3也可以提供速度改進(jìn)。
HTTP/3 與 HTTP /1 / 2 有何不同?
HTTP
HTTP/ 3與HTTP / 1和2中使用的傳統(tǒng)方法有幾個(gè)顯著差異。讓我們來(lái)看看其中的一些關(guān)鍵區(qū)別。
①網(wǎng)絡(luò)協(xié)議 – UDP 與 TCP:
HTTP / 3和舊版本(僅使用TCP)之間最明顯的區(qū)別是HTTP / 3完全基于QUIC,它利用UDP。UDP是一種用于快速通信的傳輸協(xié)議,通過(guò)該協(xié)議可以錯(cuò)誤地傳輸數(shù)據(jù)。這主要用于視頻傳輸,其中接收實(shí)時(shí)圖像至關(guān)重要,并且視頻幀損壞不是主要問(wèn)題。
使用新的QUIC協(xié)議,Web服務(wù)器現(xiàn)在能夠發(fā)送并行請(qǐng)求/響應(yīng)。這意味著,如果一個(gè)請(qǐng)求或響應(yīng)遇到數(shù)據(jù)包丟失,則其他請(qǐng)求或響應(yīng)不會(huì)因此而停止。
②標(biāo)頭壓縮 – QPACK 與 HPACK:HTTP/3 使用 QPACK,這是一種壓縮格式,用于表示 HTTP 通過(guò) QUIC 在 HTTP 中使用的 HTTP 標(biāo)頭。
HTTP 3.0 進(jìn)化發(fā)展的意義
HTTP
就像HTTP 2.0一樣,這是由Google的帶頭推動(dòng)的進(jìn)步。斷續(xù)器或者很快,HTTP 3.0將再次建立在這些成就之上。雖然HTTP 2.0確實(shí)為我們提供了多路復(fù)用,并減輕了行頭阻塞,但它受到TCP的約束。
您可以將單個(gè)TCP連接用于多路復(fù)用在一起的多個(gè)流來(lái)傳輸數(shù)據(jù),但是當(dāng)其中一個(gè)流遭受數(shù)據(jù)包丟失時(shí),整個(gè)連接(及其所有流)都會(huì)受到約束,也就是說(shuō),直到TCP完成其任務(wù)(重新傳輸丟失的數(shù)據(jù)包)。
這意味著,在目標(biāo)節(jié)點(diǎn)的緩沖區(qū)中,所有數(shù)據(jù)包(即使它們已經(jīng)傳輸并正在等待)都會(huì)被阻止,直到重新傳輸丟失的數(shù)據(jù)包。QUIC不受此限制。通過(guò)基于無(wú)連接 UDP 協(xié)議的 QUIC 構(gòu)建,連接的概念不具有 TCP 的限制,并且一個(gè)流的故障不必影響其余流。QUIC(Quick UDP Internet Connections)于2012年由Google首次部署。
它重新定義了網(wǎng)絡(luò)層的邊界,依賴于較低級(jí)別的UDP協(xié)議,重新定義了“用戶空間”中的握手,可靠性功能和安全功能,避免了升級(jí)互聯(lián)網(wǎng)系統(tǒng)內(nèi)核的需要。
?
審核編輯:湯梓紅
評(píng)論
查看更多