【2025最新面試八股常問知識點】HTTP1.0,HTTP1.1,HTTP2.0,HTTP3.0,HTTP的進化之路。

HTTP


超文本傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用于分布式、協作式和超媒體信息系統的應用層協議。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。通過HTTP或者HTTPS協議請求的資源由統一資源標識符(Uniform Resource Identifiers,URI)來標識。

HTTP 協議是以 ASCII 碼傳輸,基于請求與響應模式的、無狀態的,建立在 TCP/IP 協議之上的應用層規范。。它不涉及數據包(packet)傳輸,主要規定了客戶端和服務器之間的通信格式,默認使用80端口。
?

HTTP協議主要的版本有4個,分別是HTTP/1.0、HTTP/1.1、HTTP/2和HTTP3.0HTTPS是另外一個協議,簡單講是HTTP的安全版。可以看我的另一篇博客

【2025計算機網絡-面試常問】http和https區別是什么,http的內容有哪些,https用的是對稱加密還是非對稱加密,流程是怎么樣的-CSDN博客https://blog.csdn.net/gwndjsh/article/details/147373157?spm=1001.2014.3001.5501

1. HTTP/1.0(1996年)

HTTP/1.0中瀏覽器與服務器只保持短暫的連接,連接無法復用。也就是說每個TCP連接只能發送一個請求。發送數據完畢,連接就關閉,如果還要請求其他資源,就必須再新建一個連接。

  • 核心特點

    • 短連接:每個請求/響應后立即關閉TCP連接,導致高延遲(需頻繁三次握手)。

    • 無狀態:服務器不記錄客戶端狀態(依賴Cookie等機制擴展)。

    • 基礎功能:支持GETPOSTHEAD方法,通過Content-Type支持多種數據類型(如HTML、圖片)。

  • 典型問題

    • TCP連接的建立需要三次握手,是很耗費時間的一個過程。所以,HTTP/1.0版本的性能比較差。現在,隨便打開一個網頁,上面都會有很多圖片、視頻等資源,HTTP/1.0顯然無法滿足性能要求。

      每個資源(如圖片、CSS)需單獨建立連接,頁面加載效率極低。


2. HTTP/1.1(1997年,主流版本)

最主要的改進就是引入了持久連接。所謂的持久連接就是:在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲。

  • 核心改進

    • 持久連接(Keep-Alive):默認復用TCP連接,減少握手開銷(通過Connection: keep-alive)。

    • 管道化(Pipelining):允許客戶端發送多個請求而不需等待響應(但服務器必須按順序返回,易隊頭阻塞)。

    • 分塊傳輸(Chunked Transfer):支持流式傳輸(Transfer-Encoding: chunked)。

    • 緩存控制:引入Cache-ControlETag等頭部優化緩存策略。

    • Host頭:支持虛擬主機(單IP托管多域名)。

  • 遺留問題

    • 隊頭阻塞(Head-of-Line Blocking):一個慢請求會阻塞后續請求。對于管道連接還是有一定的限制和要求的,其中一個比較關鍵的就是服務端必須按照與請求相同的順序回送HTTP響應。這也就意味著,如果一個響應返回發生了延遲,那么其后續的響應都會被延遲,直到隊頭的響應送達。這就是所謂的HTTP隊頭阻塞。

    • 頭部冗余:每次請求攜帶大量重復頭部(如Cookie)。


SPDY(過度時期)



雖然,HTTP/1.1在HTTP/1.0的基礎上提供了持久連接,提升了很大的效率,但是,還是有很大的提升空間。

正所謂時勢造英雄,正是因為HTTP存在著諸多不足,所以,才誕生了SPDY。2009年,谷歌公開了自行研發的 SPDY 協議,主要解決 HTTP/1.1 效率不高的問題。它的設計目標是降低 50% 的頁面加載時間。SPDY主要提供了以下功能(后文介紹HTTP2的時候再詳細介紹):

●多路復用(multiplexing)。多個請求共享一個tcp連接。
●header壓縮。刪除或者壓縮HTTP頭
●服務端推送。提供服務方發起通信,并向客戶端推送數據的機制。


SPDY位于HTTP之下,TCP和SSL之上,這樣可以輕松兼容老版本的HTTP協議。

3. HTTP/2.0(2015年,革命性升級)

HTTP/2主要是解決HTTP中存在的效率問題。它主要引入了二進制分幀、多路復用、header壓縮、以及服務端推送的新特性,大大的提升了效率。

而且,在HTTP/2中還解決了一個重要的問題,那就是HTTP的隊頭阻塞問題。

  • 核心改進

    • 二進制協議:替換文本格式,幀(Frames)和流(Streams)提高解析效率。主要是HTTP/2 會將所有傳輸的信息分割為更小的消息和幀(frame),并對它們采用二進制格式的編碼。這種單連接多資源的方式,減少了服務端的壓力,使得內存占用更少,連接吞吐量更大。而且,TCP連接數的減少使得網絡擁塞狀況得以改善,同時慢啟動時間的減少,使擁塞和丟包恢復速度更快。

    • 多路復用(Multiplexing):單連接并行傳輸多個請求/響應,徹底解決隊HTTP頭阻塞。多路復用允許同時通過單一的HTTP/2.0連接發起多重的請求-響應消息。

    • 頭部壓縮(HPACK):減少冗余頭部體積(專為HTTP設計的壓縮算法)。HTTP/1.1的header帶有大量信息,而且每次都要重復發送。HTTP/2 為了減少這部分開銷,采用了HPACK 頭部壓縮算法對Header進行壓縮。

    • 服務器推送(Server Push):服務器可主動推送資源(如CSS/JS)到客戶端緩存。簡單來講就是當用戶的瀏覽器和服務器在建立連接后,服務器主動將一些資源推送給瀏覽器并緩存起來的機制。有了緩存,當瀏覽器想要訪問已緩存的資源的時候就可以直接從緩存中讀取了。

    • 流優先級:允許設置請求優先級(如優先加載HTML而非圖片)。

  • 局限

    • 仍基于TCP,可能受TCP隊頭阻塞影響(如丟包時重傳阻塞所有流)。只能說HTTP/2解決了HTTP的隊頭阻塞問題,但是并沒有解決TCP隊頭阻塞問題!

    • 部署復雜度高(需TLS加密,依賴ALPN協商)。

  • 關于怎么解決的HTTP頭阻塞為問題

    • 在HTTP1.1中的HTTP頭阻塞是因為管道化的設計方式造成的。HTTP/2廢棄了管道化的方式,而是創新性的引入了幀、消息和數據流等概念。客戶端和服務器可以把 HTTP 消息分解為互不依賴的幀,然后亂序發送,最后再在另一端把它們重新組合起來。因為沒有順序了,所以就不需要阻塞了,就有效的解決了HTTP隊頭阻塞的問題。

  • 關于TCP頭阻塞的問題(發生原因)

    • 因為TCP傳輸過程中會把數據拆分為一個個按照順序排列的數據包,這些數據包通過網絡傳輸到了接收端,接收端再按照順序將這些數據包組合成原始數據,這樣就完成了數據傳輸。但是如果其中的某一個數據包沒有按照順序到達,接收端會一直保持連接等待數據包返回,這時候就會阻塞后續請求。這就發生了TCP隊頭阻塞。
      HTTP/1.1的管道化持久連接也是使得同一個TCP鏈接可以被多個HTTP使用,但是HTTP/1.1中規定一個域名可以有6個TCP連接。而HTTP/2中,同一個域名只是用一個TCP連接。
      所以,在HTTP/2中,TCP隊頭阻塞造成的影響會更大,因為HTTP/2的多路復用技術使得多個請求其實是基于同一個TCP連接的,那如果某一個請求造成了TCP隊頭阻塞,那么多個請求都會受到影響。

  • 放棄TCP(推薦)或者升級TCP(不推薦)

    • ?放棄TCP好理解和跟下面的HTTP3一樣,但是升級TCP的時候,這就涉及到一個”協議僵化“的問題。需要考慮中間層的問題,中間設備是指插入在數據終端和信號轉換設備之間,完成調制前或解調后某些附加功能的輔助設備。例如集線器、交換機和無線接入點、路由器、安全解調器、通信服務器等都是中間設備。一個網絡需要經過無數個中間設備的轉發才能到達終端用戶。操作系統也是一個重要的因素,因為TCP協議需要通過操作系統內核來實現,而操作系統的更新也是非常滯后的。所以,這種問題就被稱之為”中間設備僵化”,也是導致”協議僵化”的重要原因。這也是限制著TCP協議更新的一個重要原因。


4. HTTP/3.0(2022年正式標準,基于QUIC(應該是屬于傳輸層),這是一種完全基于UDP的協議

我們知道,HTTP/2之所以"被棄用",是因為他使用的傳輸層協議仍然是TCP,所以HTTP/3首要解決的問題就是繞開TCP,像上面所說如果改造TCP協議的話那么同樣還是會因為受到中間設備僵化的影響,導致無法被大規模應用。所以,研發人員們想到了一種基于UDP實現的方式

  • QUIC協議有以下特點:
    基于UDP的傳輸層協議:它使用UDP端口號來識別指定機器上的特定服務器。
    可靠性:雖然UDP是不可靠傳輸協議,但是QUIC在UDP的基礎上做了些改造,使得他提供了和TCP類似的可靠性。它提供了數據包重傳擁塞控制調整傳輸節奏以及其他一些TCP中存在的特性。
    實現了無序、并發字節流:QUIC的單個數據流可以保證有序交付,但多個數據流之間可能亂序,這意味著單個數據流的傳輸是按序的,但是多個數據流中接收方收到的順序可能與發送方的發送順序不同!
    快速握手:QUIC提供0-RTT(零往返時間)1-RTT(單往返時間)的連接建立
    使用TLS 1.3傳輸層安全協議:與更早的TLS版本相比,TLS 1.3有著很多優點,但使用它的最主要原因是其握手所花費的往返次數更低,從而能降低協議的延遲。

  • 優勢場景

    • 高延遲網絡(如移動端)、頻繁切換網絡的場景。

    • 對實時性要求高的應用(如視頻會議、在線游戲)。


版本對比總結

特性HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0
連接方式短連接持久連接多路復用QUIC多路復用
傳輸協議TCPTCPTCPUDP(QUIC)
頭部壓縮HPACKQPACK
隊頭阻塞嚴重管道化仍存在TCP層存在完全解決
服務器推送不支持不支持支持保留但使用率低
典型應用早期靜態頁面現代Web(兼容模式)主流高性能Web移動端/實時應用

演進背后的核心目標

  1. 性能優化:減少延遲(從短連接到QUIC)、提高吞吐量(多路復用)。

  2. 安全性:從明文(HTTP/1.0)到強制HTTPS(HTTP/2+)。

  3. 適應新場景:從靜態頁面到動態應用(SPA)、實時流媒體。


實際建議

  • 兼容性優先:多數服務仍支持HTTP/1.1(如CDN回源)。

  • 性能敏感場景:啟用HTTP/2(需TLS)或HTTP/3(如Cloudflare、Google服務已支持)。

  • 未來趨勢:HTTP/3將逐步普及,但需客戶端/服務器/網絡設備全面支持。

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

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

相關文章

【算法練習】歸并排序和歸并分治

文章目錄 1.歸并排序1.1 遞歸版本1.2 非遞歸版本 2.歸并分治2.1 計算數組的小和2.2 計算翻轉對 1.歸并排序 歸并排序的核心步驟是: 拆分:將無序數組不斷對半拆分成小塊,直到每個小塊只剩一個元素(自然有序)。 合并&a…

域對齊是什么

域對齊(Domain Alignment)是在機器學習和計算機視覺等領域中常用的技術 定義 域對齊旨在將不同域(Domain)的數據映射到一個共同的特征空間中,使得來自不同域的數據在該空間中具有相似的分布。這里的“域”可以指代不…

【linux】git安裝、升級

git安裝、升級 一、快捷安裝版本2.18.0二、自定義版本安裝(安裝、升級)1、移除舊文件2、安裝所需依賴3、選擇指定版本4、解壓文件、編譯5、增加環境變量,驗證是否版本 三、升級 一、快捷安裝版本2.18.0 yum install git git --version二、自…

編程日志4.24

棧的鏈表基礎表示結構 #include<iostream> #include<stdexcept> using namespace std; //模板聲明&#xff0c;表明Stack類是一個通用的模板&#xff0c;可以用于存儲任何類型的元素T template<typename T> //棧的聲明 //Stack類的聲明&#xff0c;表示一…

《冰雪傳奇點卡版》:探索冰雪世界的傳奇旅程!

《冰雪傳奇點卡版》以“純凈打金”為核心&#xff0c;摒棄復雜付費坑&#xff0c;回歸經典傳奇玩法。以下從核心玩法、資源獲取、職業搭配、交易變現四維度展開&#xff0c;助你高效開啟冰雪傳奇之旅。 一、核玩法解析&#xff1a;如何高效獲取資源&#xff1f; 1. 職業定位與…

DeepClaude開源程序可以實現代碼生成、創作詩句以及內容創作等功能

一、軟件介紹 文末提供程序和源碼下載 DeepClaude開源程序是增強的 AI&#xff0c;可以實現代碼生成&#xff1a;DeepSeek r1 Claude 3.7 十四行詩 - 無與倫比的性能&#xff01;內容創作&#xff1a;DeepSeek r1 Gemini 2.5 Pro - 卓越的質量&#xff01;OpenAI 兼容。流媒…

Java常用注解通俗解釋

注解就像是給Java代碼貼的"便利貼"&#xff0c;它們不會改變代碼本身的邏輯&#xff0c;但能給編譯器、開發工具或運行時環境提供額外信息。下面我用最通俗的方式解釋Java中最常用的注解&#xff1a; 一、基礎篇&#xff1a;人人必知的注解 1. Override - "我…

vscode chrome調試怎么在所有瀏覽器都好使

chrome調試時只能在打開的瀏覽器里進行調試&#xff0c;其它打開的chrome瀏覽器就不能調試了&#xff0c;怎么解決。 右鍵點擊 Chrome 的快捷方式圖標&#xff0c;選擇屬性 在目標一欄&#xff0c;最后加上--remote-debugging-port9222 注意要用空格隔開 lanch.json 文件配置 …

Unity PBR基礎知識

PBR原理 基于物理的渲染&#xff08;Physically Based Rendering&#xff0c;PBR&#xff09;是指使用基于物理原理和微平面理論建模的著色/光照模型&#xff0c;以及使用從現實中測量的表面參數來準確表示真實世界材質的渲染理念。 PBR基礎理念 微平面理論&#xff08;Micr…

COM組件使用方法

普通COM組件&#xff08;如DLL&#xff09;僅暴露方法/屬性接口&#xff0c;而ActiveX控件&#xff08;如OCX&#xff09;需要可視化交互&#xff08;如按鈕、表格&#xff09;&#xff0c;需通過 ??AxInterop?? 包裝器實現宿主環境集成。 項目中引入ActiveX控件流程如下。…

在 Spring Boot 項目中如何使用索引來優化 SQL 查詢?

在 Spring Boot 項目中使用索引來優化 SQL 查詢是提升數據庫性能最常用的方法之一。下面是詳細的步驟和實踐指南&#xff1a; 核心目標&#xff1a;讓數據庫能夠通過掃描索引&#xff08;小范圍、有序的數據結構&#xff09;快速定位到所需數據行&#xff0c;而不是掃描整個表…

Vue3生產環境與Vue Devtools

在 Vue 3 的生產環境中&#xff0c;默認情況下 Vue Devtools 是無法正常使用 的&#xff0c;但開發者可以通過配置強制啟用。以下是關鍵信息總結&#xff1a; &#x1f4cc; 核心結論 默認不可用 Vue 3 生產構建會移除 Devtools 支持以優化性能和安全性。 可強制啟用 通過構建…

ARP滲透學習1

ARP協議工作原理 1. 什么是ARP ARP定義: 地址解析協議&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根據IP地址獲取物理地址的一個TCP/IP協議。 2. 工作原理 ARP表: 每臺計算機都需要一個ARP表&#xff0c;用來保存IP地址和MAC地址的映射關系。查詢過…

甲骨文云2025深度解析:AI驅動的云原生生態與全球化突圍

一、戰略轉型&#xff1a;從數據庫巨頭到AI云服務先鋒 1. 技術重心向AI與云深度遷移 甲骨文在2025年加速向AI原生云架構轉型&#xff0c;其核心戰略圍繞生成式AI與量子計算展開。通過推出Oracle 23ai自治數據庫&#xff0c;深度集成AI向量搜索功能&#xff0c;并重構云基礎設…

【網絡原理】TCP異常處理(二):連接異常

目錄 一. 由進程崩潰引起的連接斷開 二. 由關機引起的連接斷開 三. 由斷電引起的連接斷開 四. 由網線斷開引起的連接斷開 一. 由進程崩潰引起的連接斷開 在一般情況下&#xff0c;進程無論是正常結束&#xff0c;還是異常崩潰&#xff0c;都會觸發回收文件資源&#xff0c;…

想做博聞強記的自己

2025年4月29日&#xff0c;13~25℃&#xff0c;還好 待辦&#xff1a; 冶金《物理》期末測試 閱卷&#xff08;冶金《物理》期末測試試卷&#xff09; 重修《物理》《物理2》電子材料歸檔 規則變更&#xff0c;《高等數學2》期末試卷推倒重來 遇見&#xff1a;直播畫面。 感受…

IP屬地是實時位置還是自己設置

刷微博、抖音時&#xff0c;評論區總能看到“IP屬地”&#xff1f;這個突然冒出來的小標簽&#xff0c;讓不少網友摸不著頭腦&#xff1a;?IP屬地是實時位置&#xff0c;還是可以自己設置&#xff1f;?別急&#xff0c;今天咱們就來聊聊這個話題&#xff01; 1、什么是IP屬地…

水力壓裂多裂縫擴展誘發光纖應變演化試驗研究

1.概述 本文基于OFDR技術的光纖應變監測方法&#xff0c;監測了真三軸條件下人造巖石試樣與頁巖的水力壓裂試驗。結果表明&#xff0c;OFDR技術能以毫米級分辨率實時監測裂縫起裂、擴展及閉合全過程&#xff0c;并建立基于應變演化的裂縫判別準則&#xff0c;為光纖壓裂監測的…

4、RabbitMQ的七種工作模式介紹

目錄 一、Simple(簡單模式) 1.1 概念 1.2 代碼實現 消費者 運行結果 二、Work Queue&#xff08;工作隊列&#xff09; 2.1 概念 1.2 代碼實現 生產者 消費者 運行結果 三、Publish/Subscribe&#xff08;發布/訂閱模式&#xff09; 3.1 概念 3.2 代碼實現 生產者…

厚銅PCB鉆孔工藝全解析:從參數設置到孔壁質量的關鍵控制點

在現代電子設備中&#xff0c;厚銅PCB&#xff08;印刷電路板&#xff09;扮演著至關重要的角色。它們不僅為電子元件提供了支撐&#xff0c;還實現了電路之間的連接。然而&#xff0c;在生產厚銅PCB時&#xff0c;鉆孔是一個關鍵環節。本文將為您介紹厚銅PCB生產中鉆孔的科普知…