深入HTTP2 (幀格式)

h2 的幀

h2 的傳輸過程中最重要的角色就是幀了。

h2 的其他相關(guān)文章
深入 HTTP2(幀染乌,消息,流)
H2 升級前的調(diào)研

標(biāo)準(zhǔn)幀頭部
  • Length : 代表整個 frame 的長度肝匆,用一個 24 位無符號整數(shù)表示

但是這不意味著就能處理 2^24 16M大小的幀,一般是默認(rèn)只支持2^16 16k以下的幀顺献,而2^16 - 2^24 16M 的幀 需要接收端公布自己可以處理這么大的幀旗国,需要在 SETTINGS_MAX_FRAME_SIZE 幀中告知。

  • Type : 定義 frame 的類型注整。幀類型決定了幀主體的格式和語義能曾,如果 type 為 unknown 應(yīng)該忽略或拋棄。
幀類型 編碼類型 用途
DATA 0x0 傳遞HTTP包體
HEADERS 0x1 傳遞HTTP包頭
PRIORITY 0x2 指定Stream 流的優(yōu)先級
RST_STREAM 0x3 終止Stream流
SETTINGS 0x4 修改連接或者Stream流的配置
PUSH_PROMISE 0x5 服務(wù)端推送資源時(shí)描述請求的幀
PING 0x6 心跳監(jiān)測兼具測量RTT的功能
GOAWAY 0x7 優(yōu)雅的終止錯誤或通知錯誤
WINDOW_UPDATE 0x8 實(shí)現(xiàn)流量控制
CONTINUATION 0x9 傳遞較大HTTP頭部時(shí)的持續(xù)幀
  • Flags :是為幀類型相關(guān)而預(yù)留的布爾標(biāo)識肿轨。標(biāo)識對于不同的幀類型賦予了不同的語義寿冕。
    在HEADER幀中。(注意不同的幀中萝招,F(xiàn)lags不一樣)

    HEADER 中的 Flags

  • R: 是一個保留的比特位蚂斤。這個比特的語義沒有定義,發(fā)送時(shí)它必須被設(shè)置為 (0x0), 接收時(shí)需要忽略槐沼。

  • Frame Payload : 是主體內(nèi)容曙蒸,由幀類型決定

SETTING 幀

SETTING幀只運(yùn)行在 0 號流上。SETTING幀不是協(xié)商岗钩,而是通知纽窟。


SETTING

幀類型

  • SETTINGS_HEADER_TABLE_SIZE (0x1): 通知對端索引表的最大尺寸(單位字節(jié),初始 4096 字節(jié))用于解碼header塊的header壓縮表的最大尺寸兼吓。
  • SETTINGS_ENABLE_PUSH (0x2): Value設(shè)置為 0 時(shí)可禁用服務(wù)器推送功能臂港,1 表示啟用推送功能。如果禁用對端就不能發(fā)送PUSH_PROMISE 幀视搏,如果客戶端收到PUSH_PROMISE 就視為PROTOCOL_ERROR 的連接錯誤审孽。
  • SETTINGS_MAX_CONCURRENT_STREAMS (0x3): 告訴接收端允許的最大并發(fā)流數(shù)量。
  • SETTINGS_INITIAL_WINDOW_SIZE (0x4): 聲明發(fā)送端的窗口大小浑娜,用于Stream級別流控佑力,初始值2^16-1 (65,535)
    字節(jié)
  • SETTINGS_MAX_FRAME_SIZE (0x5):設(shè)置幀的最大大小,初始值 2^14 (16,384)字節(jié)
  • SETTINGS_MAX_HEADER_LIST_SIZE (0x6): 知會對端頭部索引表的最大尺寸筋遭,單位字節(jié)打颤,基于未壓縮前的頭部
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市漓滔,隨后出現(xiàn)的幾起案子编饺,更是在濱河造成了極大的恐慌,老刑警劉巖响驴,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件透且,死亡現(xiàn)場離奇詭異,居然都是意外死亡豁鲤,警方通過查閱死者的電腦和手機(jī)石蔗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門罕邀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人养距,你說我怎么就攤上這事∪瞻荆” “怎么了棍厌?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長竖席。 經(jīng)常有香客問我耘纱,道長,這世上最難降的妖魔是什么毕荐? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任束析,我火速辦了婚禮,結(jié)果婚禮上憎亚,老公的妹妹穿的比我還像新娘员寇。我一直安慰自己,他們只是感情好第美,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布蝶锋。 她就那樣靜靜地躺著,像睡著了一般什往。 火紅的嫁衣襯著肌膚如雪扳缕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天别威,我揣著相機(jī)與錄音躯舔,去河邊找鬼。 笑死省古,一個胖子當(dāng)著我的面吹牛粥庄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衫樊,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼飒赃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了科侈?” 一聲冷哼從身側(cè)響起载佳,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臀栈,沒想到半個月后蔫慧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡权薯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年姑躲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睡扬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡黍析,死狀恐怖卖怜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阐枣,我是刑警寧澤马靠,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蔼两,受9級特大地震影響甩鳄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜额划,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一妙啃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俊戳,春花似錦揖赴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至圆恤,卻和暖如春突倍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盆昙。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工羽历, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人淡喜。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓秕磷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親炼团。 傳聞我的和親對象是個殘疾皇子澎嚣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容