首頁 web前端 html教學 一次性搞懂 HTTP、HTTPS、SPDY、HTTP2

一次性搞懂 HTTP、HTTPS、SPDY、HTTP2

Nov 13, 2018 pm 04:20 PM
http https


這篇文章帶給大家的內容是關於一次性搞懂HTTP、HTTPS、SPDY、HTTP2,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一次性搞懂 HTTP、HTTPS、SPDY、HTTP2

作為網路通訊協定的一員老將,HTTP 協定走到今天已經經歷了三次版本的變動,現在最新的版本是HTTP2.0,相信大家早已耳熟能詳。今天就來跟大家好好介紹一下 HTTP 的前世今生。

HTTP/0.9

HTTP 的最早版本誕生在1991 年,這個最早版本和現在比起來極其簡單,沒有HTTP 頭,沒有狀態碼,甚至版本號也沒有,後來它的版本號碼才被定為0.9 來和其他版本的HTTP 區分。 HTTP/0.9 只支援一種方法- Get,請求只有一行。

GET /hello.html
回應也是非常簡單的,只包含 html 文件本身。

<HTML>
Hello world
</HTML>
登入後複製

當 TCP 建立連線之後,伺服器會向客戶端傳回 HTML 格式的字串。發送完畢後,就關閉 TCP 連線。由於沒有狀態碼和錯誤代碼,如果伺服器處理的時候發生錯誤,只會傳回一個特殊的包含問題描述資訊的 HTML 檔案。這就是最早的 HTTP/0.9 版本。

HTTP/1.0

1996 年,HTTP/1.0 版本發布,大大豐富了HTTP 的傳輸內容,除了文字,還可以傳送圖片、影片等,這為互聯網的發展奠定了基礎。相較於HTTP/0.9,HTTP/1.0 主要有以下特性:

請求與回應支援HTTP 頭,增加了狀態碼,回應物件的一開始是回應狀態行

協定版本訊息需要隨著請求一起傳送,支援HEAD,POST 方法

支援傳輸HTML 檔案以外其他類型的內容

一個典型的HTTP/1.0 的請求像這樣:

GET /hello.html HTTP/1.0
User-Agent:NCSA_Mosaic/2.0(Windows3.1)
200 OK
Date: Tue, 15 Nov 1996 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
一个包含图片的页面
<img  src="/static/imghw/default1.png"  data-src="/smile.gif"  class="lazy" alt="一次性搞懂 HTTP、HTTPS、SPDY、HTTP2" >
</HTML>
登入後複製

HTTP/1.1


#在HTTP/1.0 發布幾個月後,HTTP/1.1 就發布了。 HTTP/1.1 更多的是作為對HTTP/1.0 的完善,在HTTP1.1 中,主要具有如下改進:

#可以復用連接

增加pipeline:HTTP 管線化是將多個HTTP 請求整批提交的技術,而在傳送過程中不需先等待服務端的回應。管線化機制須透過永久連接(persistent connection)完成。瀏覽器將HTTP請求大批提交可大幅縮短頁面的載入時間,特別是在傳輸延遲(lag/latency)較高的情況下。有一點要注意的是,只有冪等的請求可以使用 pipeline,如 GET,HEAD 方法。

chunked 編碼傳輸:此編碼將實體分塊傳送並逐塊標明長度,直到長度為0 塊表示傳輸結束, 這在實體長度未知時特別有用(例如由資料庫動態產生的資料)

引入更多快取控制機制:如etag,cache-control

引入內容協商機制,包括語言,編碼,類型等,並允許客戶端和伺服器之間約定以最合適的內容進行交換

請求訊息和回應訊息都支援Host 頭域:在HTTP1.0 中認為每台伺服器都綁定一個唯一的IP 位址,因此,請求訊息中的URL並沒有傳遞主機名(hostname)。但隨著虛擬主機技術的發展,在一台實體伺服器上可以存在多個虛擬主機(Multi-homed Web Servers),並且它們共用一個 IP 位址。因此,Host 頭的引進就很有必要了。

新增了OPTIONS,PUT, DELETE, TRACE, CONNECT 方法

#雖然HTTP/1.1 已經優化了很多點,作為一個目前使用最廣泛的協定版本,已經能夠滿足很多網絡需求,但隨著網頁變得越來越複雜,甚至演變成為獨立的應用,HTTP/1.1 逐漸暴露出了一些問題:

在傳輸資料時,每次都要重新建立連接,對行動端特別不友善

傳輸內容是明文,不夠安全

header 內容過大,每次請求header 變化不大,造成浪費

keep-alive 給服務端帶來效能壓力

為了解決這些問題,HTTPS 和SPDY 應運而生。

SPDY

其實 SPDY 並不是新的一種協議,而是在 HTTP 之前做了一層會話層。

在 2010 年到 2015 年,Google透過實踐一個實驗性的 SPDY 協議,證明了一個在客戶端和伺服器端交換資料的另類方式。其收集了瀏覽器和伺服器端的開發者的焦點問題,明確了回應數量的增加和解決複雜的資料傳輸。在啟動 SPDY 這個專案時預設的目標是:

頁面載入時間 (PLT) 減少 50%。

無須網站作者修改任何內容。

將部署複雜度降至最低,無需變更網路基礎架構。

與開源社群合作開發這個新協定。

收集真實效能數據,驗證這個實驗性協定是否有效。

為了達到降低目標,減少頁面載入時間的目標,SPDY 引入了一個新的二進位分幀資料層,以實現多向請求和回應、優先順序、最小化及消除不必要的網路延遲,目的是更有效地利用底層TCP 連接。

HTTP/2.0

時間來到 2015 年,HTTP/2.0 問世。先來介紹一下HTTP/2.0 的特點:

使用二進位分幀層:在應用層與傳輸層之間增加一個二進位分幀層,以此達到在不改動HTTP 的語義,HTTP 方法、狀態碼、URI 及首部欄位的情況下,突破HTTP1.1 的效能限制,改善傳輸效能,實現低延遲及高吞吐量。在二進位分幀層上,HTTP2.0 會將所有傳輸的資訊分割為更小的訊息和幀,並對它們採用二進位格式的編碼,其中HTTP1.x 的首部資訊會被封裝到Headers 幀,而我們的request body 則封裝到Data 訊框裡面。

二進位分幀

多路復用:對於HTTP/1.x,即使開啟了長連接,請求的發送也是串行發送的,在頻寬足夠的情況下,對頻寬的利用率不夠,HTTP/2.0 採用了多工的方式,可以並行發送多個請求,提高對頻寬的利用率。

多路復用

資料流優先權:由於請求可以並發發送了,那麼如果出現了瀏覽器在等待關鍵的CSS 或者JS 檔案完成對頁面的渲染時,伺服器卻在專注的發送圖片資源的情況怎麼辦呢? HTTP/2.0 對資料流可以設定優先值,這個優先值決定了客戶端和服務端處理不同的流採用不同的優先權策略。

服務端推送:在HTTP/2.0 中,伺服器可以向客戶發送請求以外的內容,例如正在請求一個頁面時,伺服器會把頁面相關的logo,CSS 等檔案直接推送到客戶端,而不會等到請求來的時候再發送,因為伺服器認為客戶端會用到這些東西。這相當於在一個 HTML 文件內集合了所有的資源。

頭部壓縮:使用首部表來追蹤和儲存先前發送的鍵值對,對於相同的內容,不會再每次請求和回應時發送。

以上就是對一次性搞懂 HTTP、HTTPS、SPDY、HTTP2的全部介紹,如果您想了解更多有關Html5教程,請關注PHP中文網。



以上是一次性搞懂 HTTP、HTTPS、SPDY、HTTP2的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

http狀態碼520是什麼意思 http狀態碼520是什麼意思 Oct 13, 2023 pm 03:11 PM

http狀態碼520是指伺服器在處理請求時遇到了一個未知的錯誤,無法提供更具體的資訊。用於表示伺服器在處理請求時發生了一個未知的錯誤,可能是由於伺服器配置問題、網路問題或其他未知原因導致的。通常是由伺服器配置問題、網路問題、伺服器過載或程式碼錯誤等原因導致的。如果遇到狀態碼520錯誤,最好聯絡網站管理員或技術支援團隊以取得更多的資訊和協助。

http狀態碼403是什麼 http狀態碼403是什麼 Oct 07, 2023 pm 02:04 PM

http狀態碼403是伺服器拒絕了客戶端的請求的意思。解決http狀態碼403的方法是:1、檢查身份驗證憑證,如果伺服器要求身份驗證,確保提供正確的憑證;2、檢查IP位址限制,如果伺服器對IP位址進行了限制,確保客戶端的IP位址被列入白名單或未列入黑名單;3、檢查文件權限設置,如果403狀態碼與文件或目錄的權限設置有關,確保客戶端具有足夠的權限訪問這些文件或目錄等等。

如何使用Nginx Proxy Manager實現HTTPS協定下的反向代理 如何使用Nginx Proxy Manager實現HTTPS協定下的反向代理 Sep 26, 2023 am 08:40 AM

如何使用NginxProxyManager實現HTTPS協定下的反向代理近年來,隨著網際網路的普及和應用場景的多樣化,網站和應用程式的存取方式變得越來越複雜。為了提高網站的存取效率和安全性,許多網站開始採用反向代理來處理使用者的請求。而針對HTTPS協定的反向代理,在保護使用者隱私和確保通訊安全性方面扮演著重要的角色。本文將介紹如何使用NginxProxy

瞭解網頁重定向的常見應用場景並了解HTTP301狀態碼 瞭解網頁重定向的常見應用場景並了解HTTP301狀態碼 Feb 18, 2024 pm 08:41 PM

掌握HTTP301狀態碼的意思:網頁重定向的常見應用場景隨著網路的快速發展,人們對網頁互動的要求也越來越高。在網頁設計領域,網頁重定向是一種常見且重要的技術,透過HTTP301狀態碼來實現。本文將探討HTTP301狀態碼的意義以及在網頁重新導向中的常見應用場景。 HTTP301狀態碼是指永久重新導向(PermanentRedirect)。當伺服器接收到客戶端發

如何使用Nginx Proxy Manager實現HTTP到HTTPS的自動跳轉 如何使用Nginx Proxy Manager實現HTTP到HTTPS的自動跳轉 Sep 26, 2023 am 11:19 AM

如何使用NginxProxyManager實現HTTP到HTTPS的自動跳轉隨著互聯網的發展,越來越多的網站開始採用HTTPS協議來加密傳輸數據,以提高數據的安全性和用戶的隱私保護。由於HTTPS協定需要SSL憑證的支持,因此在部署HTTPS協定時需要有一定的技術支援。 Nginx是一款強大且常用的HTTP伺服器和反向代理伺服器,而NginxProxy

HTTP 200 OK:了解成功回應的意義與用途 HTTP 200 OK:了解成功回應的意義與用途 Dec 26, 2023 am 10:25 AM

HTTP狀態碼200:探索成功回應的意義與用途HTTP狀態碼是用來表示伺服器回應狀態的數字代碼。其中,狀態碼200表示請求已成功被伺服器處理。本文將探討HTTP狀態碼200的具體意義與用途。首先,讓我們來了解HTTP狀態碼的分類。狀態碼分為五個類別,分別是1xx、2xx、3xx、4xx和5xx。其中,2xx表示成功的回應。而200是2xx中最常見的狀態碼

快速應用:PHP 非同步 HTTP 下載多個檔案的實用開發案例分析 快速應用:PHP 非同步 HTTP 下載多個檔案的實用開發案例分析 Sep 12, 2023 pm 01:15 PM

快速應用:PHP非同步HTTP下載多個檔案的實用開發案例分析隨著互聯網的發展,檔案下載功能已成為許多網站和應用程式的基本需求之一。而對於需要同時下載多個檔案的場景,傳統的同步下載方式往往效率低且耗費時間。為此,使用PHP非同步HTTP下載多個檔案成為了越來越常見的解決方案。本文將透過一個實際的開發案例,詳細分析如何使用PHP非同步HTTP

C#常見的網路通訊與安全性問題及解決方法 C#常見的網路通訊與安全性問題及解決方法 Oct 09, 2023 pm 09:21 PM

C#中常見的網路通訊和安全性問題及解決方法在當今互聯網時代,網路通訊已成為了軟體開發中必不可少的一部分。在C#中,我們通常會遇到一些網路通訊的問題,例如資料傳輸的安全性、網路連線的穩定性等。本文將針對C#中常見的網路通訊和安全性問題進行詳細討論,並提供相應的解決方法和程式碼範例。一、網路通訊問題網路連線中斷:網路通訊過程中,可能會出現網路連線的中斷,這會導致

See all articles