HTTP/2協議

詳細描述了HTTP/2協議的工作原理。 我建議先閱讀HTTP教程 HTTP/2是當前版本的HTTP協議。它由IETF(互聯網工程任務組)委員會於2015年發布,由於其獨特的功能,目前被廣泛采用。 HTTP/2比上一個版本的HTTP 1.1要更高效。在當時,HTTP/2的速度提升如此引人注目,以至於它很快就被廣泛采用。通過對Web服務器進行簡單的更改(因為HTTP/2與HTTP 1.1完全向下兼容),您的網站和Web應用程序現在自動運行得更快,這對用戶和SEO都有益處(因為速度是排名的關鍵因素)。 HTTP/2如何比HTTP/1.1更快?原因有很多,都是為了減少上一個版本的低效性,並引入能夠使瀏覽器更能快速提供資源的功能。 新版本協議的主要功能有: 請求和響應多路徑 HTTP標頭的高效壓縮 服務器推送 二進制通信 多路徑 在HTTP/2之前,每個TCP連接一次只能提供一個響應。 TCP是HTTP的底層協議。TCP位於傳輸層,而HTTP位於應用層。 HTTP/2在單個TCP連接上實現了請求/響應多路徑,允許服務器使用同一個連接提供多個請求,從而實現更快的通信。 這是一個對您的應用程序很有益的單一變化,使得一些優化技術變得過時,包括圖像合併(將多個圖像合併為一個,然後使用特殊的CSS技術進行“解多路”)和域名分片,另一種防止瀏覽器對同一域名的同時連接數量限制的技巧。 標頭壓縮 頁面和資源上的HTTP標頭可能會變得很大,考慮到正常使用Cookie和其他標頭值。壓縮使得HTTP的佔用空間更輕,減少了客戶端和服務器之間交換的數據量。 服務器推送 服務器推送是一種功能,允許將多個響應發送到單個請求。由於服務器知道在請求資源時,客戶端將要求其他補充資源(如CSS、JS、頁面上的圖像),因此服務器可以決定立即發送這些資源。 服務器可以還可以決定發送可能在未來請求中需要的資源,預先優化下一頁的加載並將其放在客戶端缓存中。 請注意,服務器推送也可能有一些缺點-例如,可能會向客戶端發送未必需要的過多數據(可能已在客戶端緩存中可用),因此需要謹慎使用。 二進制通信 HTTP/1.1使用基於文本的通信。HTTP/2使用二進制通信,這有一些優點,包括更容易解析、更少的錯誤以及更緊湊的格式。 未來的發展方向是什麼? HTTP/3正在開發中,將從實驗性項目HTTP-over-QUIC進行調整。 QUIC是一種基於UDP(而不是TCP)的傳輸層協議,這意味著HTTP/3將基於與HTTP/2和HTTP/1.x完全不同的技術堆棧進行。

TCP Protocol

對傳輸控制協定(TCP)的高層次概述 TCP 代表傳輸控制協定,它是 Web 和其他應用程序(如郵件)的基礎。 TCP 在 1981 年的 RFC 793 中被定義,是互聯網最古老的支柱之一。 TCP 位於網際網路協定(IP)之上,建立了一個基礎系統,供應用層協定如 HTTP、FTP、IMAP 等使用。 與 IP 和 UDP 相反,TCP 是面向連接的。 在 TCP 上傳輸之前,必須建立連接。數據以小包的形式發送,並在通信結束時關閉連接。 在使用 TCP 傳輸數據時,有一個相對複雜的流程稱為握手必須發生。 我不會在這裡詳細介紹,但這個握手允許端對端的連接,並確保 TCP 提供其獨特的功能之一:可靠性。使用 TCP,我們始終可以知道發送者發送的封包是否被接收者正確接收。 如果封包丟失,協議能夠處理它並重新發送封包。 在 IP 協議中,連接由電腦到電腦進行。在 TCP 中,連接是從進程到進程的,使用了埠的概念。 與 IP 位址相關聯的埠用於唯一標識計算機上的進程,例如: localhost:8080 或 google.com:1234 每個應用層協定都有一個默認的埠。例如,HTTP 的默認埠是 80,HTTPS 的默認埠是 443,FTP 的默認埠是 21。這就是為什麼您通常不需要在瀏覽器中指定埠。 程序不需要使用默認值,這就是為什麼在本地計算機上啟動新應用程序時,您可能會看到類似 1313 或 8080 的埠。 埠號範圍從 1 到 65535(埠號是一個 16 位無符號數,對應於 2^16 個可能值)。