字節二面(狠狠拷打系列):什么是http1.1,2.0,3.0,分別在什么場景里面用的多

文章目錄

    • 從單行到新紀元:HTTP/0.9、1.0、1.1、2.0與3.0的核心區別
      • HTTP/0.9:協議的黎明 (1991)
      • HTTP/1.0:功能擴展與標準化 (1996)
      • HTTP/1.1:持久連接與性能優化 (1997)
      • HTTP/2.0:二進制與多路復用 (2015)
      • HTTP/3.0:切換賽道,擁抱QUIC (2022)
      • 各版本對比一覽表
      • 推薦閱讀

從單行到新紀元:HTTP/0.9、1.0、1.1、2.0與3.0的核心區別

超文本傳輸協議(HTTP)是支撐萬維網(World Wide Web)數據通信的基石。從其最初僅用于傳輸簡單文檔的形態,到如今為復雜交互式應用提供動力,HTTP經歷了多次關鍵迭代。了解從0.9到3.0版本的演進,就是理解整個Web技術發展史的核心脈絡。

它們之間的核心區別可以概括為:連接效率的提升、傳輸格式的優化、以及底層協議的革命


HTTP/0.9:協議的黎明 (1991)

HTTP/0.9是協議的起點,其設計極度簡化,目標單一。

  • 單行協議:請求只有一個 GET 方法,后面直接跟資源路徑,沒有版本號,也沒有請求頭(Header)。
  • 響應純粹:服務器的響應內容只有HTML文檔本身,不包含任何元數據(如狀態碼或內容類型)。
  • 無狀態碼:如果請求出錯,服務器會返回一個特殊的HTML頁面來描述問題。
  • 短暫連接:每個請求都需要建立一個新的TCP連接,請求完成后連接立即關閉,效率低下。

一句話總結:一個只能獲取HTML文檔的“原始”協議,是后續所有版本的基礎。


HTTP/1.0:功能擴展與標準化 (1996)

為滿足日益豐富的網頁內容需求,HTTP/1.0引入了眾多至今仍在使用的核心概念。

  • 引入版本號和頭信息:請求和響應都包含了版本號和HTTP頭,使得傳輸元數據成為可能。
  • 豐富的元數據
    • 狀態碼:引入了200 OK, 404 Not Found等標準狀態碼,客戶端可以明確得知請求結果。
    • 內容類型 (Content-Type):允許傳輸圖片、視頻、CSS等任意類型的文件。
  • 增加請求方法:除了GET,還增加了POSTHEAD方法,功能更為強大。
  • 連接管理:默認仍是“短連接”,每個請求響應后斷開。雖然引入了非標準的Connection: keep-alive頭來嘗試復用連接,但并非默認行為。

一句話總結:一個標準化的、能傳輸多種媒體類型、但連接效率依然低下的協議。


HTTP/1.1:持久連接與性能優化 (1997)

HTTP/1.1是統治Web長達近20年的經典版本,其核心目標是解決1.0的性能瓶頸。

  • 默認持久連接 (Persistent Connection):這是最重要的改進。TCP連接默認保持打開(Keep-Alive),允許多個請求在同一連接上完成,極大減少了連接建立的開銷。
  • 管道化 (Pipelining):允許客戶端在同一連接上連續發送多個請求,而無需等待前一個響應。但服務器必須按序響應,如果第一個請求處理慢,后續響應會被阻塞,這就是著名的“隊頭阻塞 (Head-of-Line Blocking)”。
  • Host頭字段:請求頭中必須包含Host字段,使得一臺物理服務器能托管多個網站(虛擬主機)。
  • 更精細的緩存控制:引入了ETag, If-Match等更多緩存頭,提升了緩存效率。

一句話總結:通過持久連接大幅提升了性能,是現代Web應用的基礎,但仍受“隊頭阻塞”問題困擾。


http1.1隊頭阻塞
在這里插入圖片描述

HTTP/2.0:二進制與多路復用 (2015)

HTTP/2是對HTTP/1.1的重大革新,旨在從根本上解決性能問題,專為現代復雜網頁設計。

  • 二進制分幀 (Binary Framing):HTTP/2將所有傳輸信息分割為更小的消息和幀,并采用二進制格式編碼。解析更高效、緊湊且不易出錯。
  • 多路復用 (Multiplexing)核心特性。允許在單個TCP連接上同時、并行地發送和接收多個請求和響應流,它們可以交錯傳輸。這徹底解決了HTTP/1.1的應用層“隊頭阻塞”問題。
  • 頭部壓縮 (Header Compression):使用HPACK算法對重復的請求頭進行壓縮,顯著減少了網絡開銷。
  • 服務器推送 (Server Push):服務器可以主動將客戶端未來可能需要的資源(如CSS、JS)推送到客戶端緩存中,減少請求延遲。

一句話總結:通過二進制和多路復用技術,解決了應用層隊頭阻塞,大幅提升了傳輸效率和并發能力。


http2.0的TCP層阻塞
在這里插入圖片描述

HTTP/3.0:切換賽道,擁抱QUIC (2022)

HTTP/2雖然解決了應用層的隊頭阻塞,但其底層的TCP協議本身也存在隊頭阻塞問題(一個數據包丟失,會導致整個TCP連接等待重傳)。為了徹底解決這個問題,HTTP/3做出了顛覆性的改變。

  • 全新的底層協議QUIC:HTTP/3不再基于TCP,而是構建在Google開發的**QUIC (Quick UDP Internet Connections)**協議之上。QUIC運行在UDP上。
  • 解決TCP隊頭阻塞:QUIC在內部實現了自己的多路復用和流量控制。單個數據流的丟包不會影響在同一QUIC連接上的其他流,從而徹底解決了傳輸層的隊頭阻塞問題
  • 更快的連接建立:QUIC將傳輸層握手(類似TCP三次握手)和加密握手(TLS 1.3)結合在一起,大大減少了連接建立所需的往返時間(RTT),可以實現0-RTT或1-RTT連接。
  • 連接遷移 (Connection Migration):當用戶的網絡環境變化時(如從Wi-Fi切換到4G),連接不會中斷。QUIC使用連接ID來標識連接,而不是TCP的四元組(源IP、源端口、目標IP、目標端口),因此IP地址變化后連接依然可以保持。

一句話總結:通過切換到基于UDP的QUIC協議,解決了傳輸層隊頭阻塞,并帶來了更快的連接建立和更穩定的移動網絡體驗,是為未來互聯網設計的下一代協議。
http3.0徹底解決隊頭阻塞
在這里插入圖片描述

各版本對比一覽表

特性HTTP/0.9HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0
底層協議TCPTCPTCPTCPUDP (QUIC)
連接管理短連接默認短連接默認持久連接多路復用多路復用
隊頭阻塞不適用嚴重應用層存在應用層解決,TCP層存在徹底解決
協議格式純文本純文本純文本二進制二進制
頭部壓縮HPACKQPACK (為QUIC優化)
連接建立延遲較高較高極低 (0/1-RTT)
網絡切換連接斷開連接斷開連接斷開連接斷開連接保持 (連接遷移)

推薦閱讀

  • (生活比喻)http2.0和http3.0的隊頭阻塞,http2.0應用層解決,TCP層存在,3.0就是徹底解決,到底怎么理解區別???
    https://hwg985.blog.csdn.net/article/details/149201081?fromshare=blogdetail&sharetype=blogdetail&sharerId=149201081&sharerefer=PC&sharesource=weixin_46028606&sharefrom=from_link
  • HTTP/3.0的連接遷移使用連接ID來標識連接為什么可以做到連接不會中斷https://hwg985.blog.csdn.net/article/details/149200478?fromshare=blogdetail&sharetype=blogdetail&sharerId=149200478&sharerefer=PC&sharesource=weixin_46028606&sharefrom=from_link

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914028.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914028.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914028.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java教程:JavaWeb ---MySQL高級

?博客主頁: https://blog.csdn.net/m0_63815035?typeblog 💗《博客內容》:大數據開發、.NET、Java.測試開發、Python、Android、Go、Node、Android前端小程序等相關領域知識 📢博客專欄: https://blog.csdn.net/m0_…

Audio筆試和面試題型解析

本專欄預計更新90期左右。當前第27期-音頻部分. 音頻硬件在消費電子(手機、電腦、耳機、智能音箱)、汽車、專業音響等領域是用戶體驗的關鍵組成部分。大廠(如蘋果、三星、Google、華為、小米、各種汽車Tier 1供應商等)的硬件工程師在設計和優化音頻系統時,需要對喇叭(揚…

DeepSeek俄羅斯方塊網頁版HTML5(附源碼)

用DeepSeek生成一個俄羅斯方塊游戲網頁版的,基于HTML5,效果很棒。 提示詞prompt 幫我做一個俄羅斯方塊 網頁版的 基于HTML5游戲功能說明 基本功能: 完整的俄羅斯方塊游戲邏輯 7種不同形狀的方塊 分數計算系統 等級提升系統(速度會隨等級提高)…

企業電商平臺搭建:ZKmall開源商城服務器部署與容災方案

企業級電商平臺最核心的訴求,就是得讓 “業務一直在線”—— 不管是平時運營要穩如磐石,還是突然出故障了能火速恢復,都離不開靠譜的服務器部署架構和周全的容災方案。ZKmall 開源商城攢了 6000 多家企業客戶的實戰經驗,琢磨出一套…

【軟件運維】前后端部署啟動的幾種方式

.sh啟動 #!/bin/bash# 解析軟鏈接,獲取真實腳本目錄 SOURCE"${BASH_SOURCE[0]}" while [ -L "$SOURCE" ]; doDIR"$( cd -P "$( dirname "$SOURCE" )" && pwd )"SOURCE"$(readlink "$SOURCE&q…

[爬蟲知識] DrissionPage:強大的自動化工具

相關爬蟲實戰案例:[爬蟲實戰] 使用 DrissionPage 自動化采集小紅書筆記 相關爬蟲專欄:JS逆向爬蟲實戰 爬蟲知識點合集 爬蟲實戰案例 逆向知識點合集 前言: 在當今數據驅動的世界里,網絡爬蟲和自動化測試扮演著越來越重要的角…

數據分析師如何構建自己的底層邏輯?

目錄 一、什么是“底層邏輯”? 二、底層邏輯的核心是什么?三句話講清楚 1. 你到底在解決什么問題? 2. 你有沒有一套“框架”來組織你的分析思路? 3. 你能不能用數據說出“結論 因果 建議”? 三、從 BI 視角出發…

殘差連接+層歸一化:Transformer訓練穩定秘訣

什么是:殘差連接+層歸一化 殘差連接 (Residual Connection):防止梯度消失 核心原理 簡單理解:走樓梯時,既可以走樓梯,也可以坐電梯,最后在同一層匯合。 # 殘差連接的數學表示 輸出 = F(輸入) + 輸入 # ↑處理后 ↑原始輸入具體數值例子 處理句子"我愛學習…

公網 IP 不穩定監控實戰:用多點 Ping 策略實現高可達率保障

更多云服務器知識,盡在hostol.com 你有沒有遇到過這種情況:明明服務器的監控系統說一切正常,服務狀態綠油油一片,但用戶那邊卻反饋“時好時壞”、“丟包嚴重”甚至“根本連不上”。你掏出手機連上公網去試試,誒&#…

uniapp類似抖音視頻滑動

最近需求說要做個類似抖音那種視頻的&#xff0c;我二話不說就用了swiper-view組件&#xff0c;但是效果不太理想&#xff0c;后面改用css屬性先放效果圖&#xff1a;<template><view class"video-scroll-container" touchstart"handleTouchStart"…

Umi-OCR 的 Docker(win制作鏡像,Linux(Ubuntu Server 22.04)離線部署)

前置博客&#xff1a;Ubuntu-Server 22.04.4 詳細安裝圖文教程 wget命令在windows終端下不能使用的原因及解決辦法 在 Ubuntu 22.04 LTS 上離線安裝 Docker 手把手教你在Win11下安裝docker Umi-OCR 完整部署流程 第一步&#xff1a;在 Windows 上構建/獲取 Umi-OCR Docker…

AI Agent革命:當大模型學會使用工具、記憶與規劃

以下是針對Lilian Weng的AI Agent綜述文章&#xff08;原文鏈接&#xff09;的深度解析與整理&#xff1a; AI Agent革命&#xff1a;當大模型學會使用工具、記憶與規劃 ——解析LLM驅動的下一代智能體技術架構 一、核心范式轉變 傳統AI模型&#xff08;如ChatGPT&#xff09…

Claude Code:完爆 Cursor 的編程體驗

前言 最近&#xff0c;聽說Claude Code這款代碼輔助編寫產品很強&#xff0c;有人把Cursor比作實習生水平&#xff0c;Claude Code比作高級工程師水平。 起初不以為意&#xff0c;因為特殊原因&#xff0c;Claude 無法直接訪問。然而&#xff0c;有人做了鏡像站&#xff0c;可以…

ModbusTCP通訊

supply服務-ModbusTCP通訊&#xff1a; winForm-HZHControls-Sqllite本地小項目架構補充&#xff1a;

前端面試專欄-算法篇:23. 圖結構與遍歷算法

&#x1f525; 歡迎來到前端面試通關指南專欄&#xff01;從js精講到框架到實戰&#xff0c;漸進系統化學習&#xff0c;堅持解鎖新技能&#xff0c;祝你輕松拿下心儀offer。 前端面試通關指南專欄主頁 前端面試專欄規劃詳情 圖結構與遍歷算法 在計算機科學中&#xff0c;圖&a…

滲透測試之木馬后門實驗

一、實驗背景 根據CNCERT的監測數據顯示&#xff0c;2018年位于美國的1.4萬余臺木馬或僵尸網絡控制服務器&#xff0c;控制了中國境內334萬余臺主機&#xff1b;2018年位于美國的3325個IP地址向中國境內3607個網站植入木馬&#xff0c;根據對控制中國境內主機數量及控制中國境內…

【LeetCode 熱題 100】24. 兩兩交換鏈表中的節點——(解法一)迭代+哨兵

Problem: 24. 兩兩交換鏈表中的節點 題目&#xff1a;給你一個鏈表&#xff0c;兩兩交換其中相鄰的節點&#xff0c;并返回交換后鏈表的頭節點。你必須在不修改節點內部的值的情況下完成本題&#xff08;即&#xff0c;只能進行節點交換&#xff09;。 文章目錄整體思路完整代碼…

微積分核心考點全解析

一、微積分核心知識框架 1. 極限與連續&#xff08;重點&#xff01;&#xff09; 核心概念&#xff1a; 極限定義&#xff08;ε-δ語言&#xff09;重要極限&#xff1a;lim?x→0sin?xx1limx→0?xsinx?1&#xff0c;lim?x→∞(11x)xelimx→∞?(1x1?)xe連續性判定&am…

TypeScript---泛型

一.簡介TypeScript 就引入了“泛型”&#xff08;generics&#xff09;。泛型的特點就是帶有“類型參數”&#xff08;type parameter&#xff09;。在日常 TypeScript 編程中&#xff0c;我們經常會遇到這樣的場景&#xff1a;函數的參數類型與返回值類型密切相關。此時&#…

手把手一起使用Miniforge3+mamba平替Anaconda(Win10)

Anaconda 開始對企業收費&#xff0c;目前急需平替Anaconda。這里采用Minforgemamba作為替代&#xff0c;可以避免Anaconda追責&#xff0c;并100%兼容原conda倉庫及使用方式&#xff0c;如果各位小伙伴有更好的平替方式&#xff0c;歡迎分享。 Miniforge3安裝 下載并安裝Min…