[點晴永久免費OA]從文本到二進制:HTTP/2不止于性能,更是對HTTP/1核心語義的傳承與革新
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
?云原生計算基金會(Cloud Native Computing Foundation,CNCF)是一個非盈利的開源組織,專注于推動云原生計算的發展和標準化。
而gRPC(Google Remote Procedure Call)是由Google發起并開源的高性能、跨語言RPC框架。 gRPC巧妙地結合了ProtoBuf、HTTP/2等成熟技術,為上述RPC三大問題提供了全面且標準化的解決方案。
HTTP/2協議
與HTTP/1.1的純文本傳輸不同,HTTP/2引入了二進制分幀層 (Binary Framing Layer),所有HTTP消息(請求/響應)都被封裝成一個個二進制編碼的幀 (Frame) 進行傳輸。 HTTP/2的核心架構包含以下幾個關鍵概念:
幀結構: 幀是一種長度前綴消息(Length-Prefixed-Message)。幀以固定的9字節作為幀頭,后面跟著變長的幀載荷(Frame Payload),幀頭包括如下公共字段:Type、Length、Flags, Stream Identifier。 +-----------------------------------------------+ | Length (24) | +---------------+---------------+---------------+ | Type (8) | Flags (8) | +-+-------------+---------------+-------------------------------+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +---------------------------------------------------------------+
HTTP/2協議定義了10種不同類型的幀(Frame),其中通用格式包含以下幾個關鍵類型,這些類型共同定義了幀的行為和內容。
消息的語義兼容性: HTTP/2 協議與 HTTP/1盡可能保持兼容。從應用程序的角度來看,協議的功能基本沒有變化。 HTTP/1使用消息起始行(start-line)來傳達目標 URI,請求方法和響應的狀態代碼,而HTTP/2為此使用以“:”字符開頭的特殊字段(pseudo-header)來達到相同的目的。 可以看到在第一個請求中,前兩個頭通常類似與HTTP/1:
現在被拆分為一個標題框。
而其余的頭則大致相同,都是lower-case字符。 HTTP/2嘗試盡可能地最小化有效載荷大小。它將壓縮與前一個請求中相同的頭。在HTTP/1中,一個連續的請求看起來像是針對不同資源的初始請求。
而在HTTP/2中,對同一服務器的連續請求只需要:path頭部信息。
因為所有其他頭部信息都被標記并壓縮緩存,并且可以通過“索引”進行還原。 參考文章:原文鏈接 該文章在 2025/8/28 17:06:05 編輯過 |
關鍵字查詢
相關文章
正在查詢... |