Java 9和Spring Boot 2.0紛紛宣布支持的HTTP/2到底是什么?

      網友投稿 898 2025-04-04

      關于HTTP/2,最近你可能沒少聽到過他。首先,如果你了解過Java 9的特性,那么你會發現在Java9中,提供了新的方式來處理HTTP調用,提供了新的HTTP Client,將替代HttpURLConnection,并提供對WebSocket和HTTP/2的支持。還有前兩天剛剛發布的Spring Boot 2.0 的新特性中,也會看到,Spring Boot 2.0支持的Web容器中Tomcat、Undertow和Jetty均已支持HTTP/2。

      那么,這篇文章,我們就來了解下,到底什么是HTTP/2。

      HTTP

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

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

      HTTP協議主要的版本有3個,分別是HTTP/1.0、HTTP/1.1和HTTP/2。HTTPS是另外一個協議,簡單講是HTTP的安全版。

      HTTP/1.0

      1996年5月,HTTP/1.0 版本發布,為了提高系統的效率,HTTP/1.0規定瀏覽器與服務器只保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個TCP連接,服務器完成請求處理后立即斷開TCP連接,服務器不跟蹤每個客戶也不記錄過去的請求。

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

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

      HTTP/1.1

      為了解決HTTP/1.0存在的缺陷,HTTP/1.1于1999年誕生。相比較于HTTP/1.0來說,最主要的改進就是引入了持久連接。所謂的持久連接就是:在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲。

      引入了持久連接之后,在性能方面,HTTP協議有了明顯的提升,基本可以用于日常使用,這也是這一版本一直延用至今的原因。當然還是有些力不從心的,后面會詳細介紹。

      關于HTTP/1.0和HTTP/1.1還有些其他區別,這里就不展開介紹了。網上也很多資料,可以自行查閱。

      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協議。

      實際上在 HTTP2 提出來之前,SPDY 流行了很長一段時間。當下很多著名的互聯網公司都在自己的網站或 APP 中采用了 SPDY 系列協議(當前最新版本是 SPDY/3.1),因為它對性能的提升是顯而易見的。主流的瀏覽器(谷歌、火狐、Opera)也都早已經支持 SPDY,它已經成為了工業標準。HTTP Working-Group 最終決定以 SPDY/2 為基礎,開發 HTTP/2。

      HTTP/2

      下圖是Akamai 公司建立的一個官方的演示,主要用來說明在性能上HTTP/1.1和HTTP/2在性能升的差別。同時請求 379 張圖片,HTTP/1.1加載用時4.54s,HTTP/2加載用時1.47s。

      HTTP/2 是 HTTP 協議自 1999 年 HTTP 1.1 發布后的首個更新,主要基于 SPDY 協議。由互聯網工程任務組(IETF)的 Hypertext Transfer Protocol Bis(httpbis)工作小組進行開發。該組織于2014年12月將HTTP/2標準提議遞交至IESG進行討論,于2015年2月17日被批準。HTTP/2標準于2015年5月以RFC 7540正式發表。

      下面來看下,HTTP/2相對于HTTP/1.1有哪些改進:

      在HTTP/2中,在應用層(HTTP2.0)和傳輸層(TCP或者UDP)之間加了一層:二進制分幀層。這是HTTP2中最大的改變。HTTP2之所以性能會比HTTP1.1有那么大的提高,很大程度上正是由于這一層的引入。

      在二進制分幀層中, HTTP/2 會將所有傳輸的信息分割為更小的消息和幀(frame),并對它們采用二進制格式的編碼。

      這種單連接多資源的方式,減少了服務端的壓力,使得內存占用更少,連接吞吐量更大。而且,TCP連接數的減少使得網絡擁塞狀況得以改善,同時慢啟動時間的減少,使擁塞和丟包恢復速度更快。

      多路復用允許同時通過單一的HTTP/2.0連接發起多重的請求-響應消息。在HTTP1.1協議中,瀏覽器客戶端在同一時間,針對同一域名下的請求有一定數量的限制,超過了這個限制的請求就會被阻塞。而多路復用允許同時通過單一的 HTTP2.0 連接發起多重的“請求-響應”消息。

      Java 9和Spring Boot 2.0紛紛宣布支持的HTTP/2到底是什么?

      HTTP2的請求的TCP的connection一旦建立,后續請求以stream的方式發送。每個stream的基本組成單位是frame(二進制幀)。客戶端和服務器可以把 HTTP 消息分解為互不依賴的幀,然后亂序發送,最后再在另一端把它們重新組合起來。

      也就是說, HTTP2.0 通信都在一個連接上完成,這個連接可以承載任意數量的雙向數據流。就好比,我請求一個頁面 http://www.hollischuang.com 。頁面上所有的資源請求都是客戶端與服務器上的一條 TCP 上請求和響應的!

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

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

      推薦一個阿里P9專家的架構師課程,?掃描文末二維碼即可報名:

      這個專欄共 50期,從 4月 28日開始,每周二四六更新,形式為圖文 +音頻,中間會穿插專門的答疑和直播板塊。

      現在他們在做活動,一方面報名便宜一些,另一方面如果你報名后可以生產我這樣的邀請 碼,邀請一個人給提成24元,也就是說你有可能會免費學習這門課程,算是福利送給大家把。

      HTTP Java Spring

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:GESTEP
      下一篇:加工企業和生產企業的區別(生產和加工不同的企業類型)
      相關文章
      亚洲av无码一区二区三区天堂| 亚洲一区二区无码偷拍| 亚洲精品福利你懂| 亚洲欧洲日本国产| 内射干少妇亚洲69XXX| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 亚洲综合色区在线观看| 亚洲精品国产精品乱码不卡| 亚洲国产成人精品91久久久| 亚洲黄片手机免费观看| 亚洲女同成人AⅤ人片在线观看| 内射无码专区久久亚洲| 亚洲А∨精品天堂在线| 亚洲免费日韩无码系列| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲第一成年人网站| 亚洲电影在线免费观看| 亚洲国产高清在线精品一区| 亚洲免费观看网站| 亚洲成年网站在线观看| 亚洲av无码一区二区三区四区| 国产亚洲欧美日韩亚洲中文色| 日韩亚洲综合精品国产| 亚洲精品在线视频| 在线亚洲人成电影网站色www| 亚洲色偷偷偷鲁综合| 亚洲AV无码精品色午夜在线观看| 无码乱人伦一区二区亚洲一 | 日韩色视频一区二区三区亚洲| 国产精品亚洲小说专区| 亚洲综合久久夜AV | 亚洲AV永久无码精品成人| 久久精品九九亚洲精品| 亚洲日韩国产精品无码av| 亚洲视频无码高清在线| 亚洲AV无码专区亚洲AV桃| 亚洲无码精品浪潮| 亚洲AV永久无码精品水牛影视| 久久久久亚洲精品美女| 亚洲成人福利在线观看| 亚洲熟妇AV一区二区三区浪潮 |