【HTTP 2】HTTP/2 協議概述(HTTP/2 Protocol Overview)

HTTP/2

前情提要

在上一篇文章《【HTTP 2.0】 簡介(Introduction)》中,咱們簡單介紹了 HTTP 2。html

在本篇文章中,咱們將會了解到 HTTP 2 協議概述部分的內容。git

HTTP/2 協議概述(HTTP/2 Protocol Overview)

HTTP 2 優化了 HTTP 傳輸部分的語義。HTTP 2 支持 HTTP 1.1 中全部的特性,它旨在經過多種方法提高 HTTP 的效率。服務器

HTTP 2 協議的基礎單元是幀(Frame)(參考章節 4.1)。每種幀的目的各不相同。好比,HEADERS 幀和 DATA幀組成了 HTTP 的請求和相應(參考章節 8.1)。其餘類型的幀則用於支持 HTTP 2 的其餘特性,好比 SETTINGS、WINDOW_UPDATE 和 PUSH_PROMISE。網絡

每個 HTTP 經過在其流(參考章節 5)中關聯請求與相應,以實現請求的多路複用。流與流之間是相互獨立的,因此,一個掛起的或者慢速的請求或響應,將不會影響其餘流的進度。併發

經過流量控制和優先級來保證流的多路複用效率。流量控制(參考章節 5.2)保證可用數據可以傳達至接收者。優先級(參考章節 5.3)保證有限的資源可以最早被應用在最重要的流中。優化

HTTP 2 新增了互動模式,以實現服務器主動推送響應內容至客戶端(參考章節 8.2)的功能。服務器推送技術容許服務器預測客戶端所需的數據,並推送至客戶端,經過付出一些網絡資源來下降等待延遲。服務器經過發送 PUSH_PROMISE 幀,創建合成請求,以後即可以經過合成請求在單獨的流中發送響應信息。spa

在一個鏈接中包含大量重複的 HTTP 報頭字段,幀中包括了這些字段,並對其進行了壓縮(參考章節 4.3)。在大多數狀況下,這有利於請求大小的優化,容許不少請求被壓縮至一個數據包。翻譯

文檔組織結構

HTTP 2 規範分爲如下四部分:代理

  • 發起 HTTP 2(第3章)包括瞭如何初始化一個 HTTP 2 鏈接。
  • 幀層(第4章)和流層(第5章)描述了 HTTP 2 中幀的構成,以及如何造成多路複用流。
  • 幀定義(第6章)和異常定義(第7章)包括了 HTTP 2 中的幀的詳細信息以及異常的類型。
  • HTTP 映射(第8章)和附加要求(第9章)描述了 HTTP 語法是如何表達幀和流的。

幀和流的概念有一部分是獨立於 HTTP 的,本規範沒有定義徹底通用的幀層。幀和流是根據 HTTP 協議以及服務器推送而定製的。code

約定和術語

本文檔中的關鍵詞 「MUST」,「MUST NOT」,「REQUIRED」,「SHALL」,「SHALL NOT」,「SHOULD」,「SHOULD NOT」,「RECOMMENDED」,「MAY」,「OPTIONAL」如 RFC 2119 中所描述的進行解讀。

全部數值都是按網絡字節順序。值均爲無符號,除非進行特殊說明。字面量經過十進制或者十六進制表示。十六進制字面量以 0x 做爲前綴,以區別於十進制字面量。

如下術語用於:

客戶端(client):

發起一個 HTTP 2 鏈接的終端。客戶端發送 HTTP 請求,並接收 HTTP 響應。

鏈接(connection):

兩個終端之間的傳輸層鏈接。

鏈接錯誤(connection error):

影響整個 HTTP 2 鏈接的錯誤。

終端(endpoint):

鏈接中的客戶端或者服務器。

幀(frame):

一個 HTTP 2 鏈接內通訊的最小單位。是一個由報頭和幀類型(八種幀類型之一)所組成的可變長度序列。

點(peer):

點是一個終端。當討論一個特定終端時,「點」指代的是討論的主題所對應的遠程終端。

接收者(receiver):

接收幀的終端。

發送者(sender):

發送幀的終端。

服務器(server):

接受 HTTP 2 鏈接的的終端。服務器接收 HTTP 請求,併發送 HTTP 響應。

流(stream):

HTTP 2 鏈接中雙向流動的幀。

流錯誤(stream error):

獨立的 HTTP 2 流中產生的錯誤。

最後,術語「網關」,「中介」,「代理」和「隧道」在 RFC 7230 的 2.3 章節中有所定義。中介在不一樣的時候即充當客戶端又充當服務器。

術語「有效載荷體」在 RFC 7230 的 3.3 章節中有所定義。


本文以 CC BY-NC-SA 3.0 CN 協議共享,轉載、共享及二次創做時請保留原文出處及連接,請勿用於商業用途。

本文連接:http://litecodes.com/dev/http-2-spec-protocol-overview/

本系列文章將會在個人 GitBook:http2-spec-zh 同步更新,

下一篇文章將會翻譯協議的第三部分:Starting HTTP/2(發起 HTTP 2),不要錯過喲~

相關文章
相關標籤/搜索