【HTTP】HTTP 協議的前世此生

移動互聯網在咱們生活中的已經全方位滲透,天天都會伴隨着大量的互聯網操做,好比微信聊天、淘寶購物、頭條看新聞、抖音刷短視頻等等,而這些操做無一例外都在遵循着 HTTP 協議,有條不紊的爲咱們的生活提供着便利及樂趣。

讓咱們穿越時空,去尋覓下 HTTP 的前世此生。讓咱們從新認識一下這位互聯網世界的大明星。html

萬維網( WWW )的誕生

上個世紀八十年代,互聯網誕生之初,一位計算機科學家蒂姆·伯納斯·李博士提出了一個遠程共享知識的構想:建立一個以超文本系統爲基礎的項目,容許在不一樣計算機之間分享信息,其目的是方便研究人員分享及更新信息。這個構想最終成了 WWW(World Wide Web) 萬維網的基礎,完全改變了人類社會的溝通交流方式。瀏覽器

這個提案的提出,包含了網絡的基本概念並逐步創建了 3 項 WWW 構建技術:緩存

  • HTTP 超文本傳輸協議(Hypertext Transfer Protocol),做爲文檔傳輸協議,容許用戶經過單擊超連接訪問資源;
  • HTML 超文本標記語言(Hypertext Markup Language),做爲建立網頁的標準;
  • URL 統一資源定位符號URL(Uniform Resource Locator),做爲網站地址系統,就是沿用至今的 http://www URL格式;

後來隨着 Netscape(網景通訊公司)開始推出網頁瀏覽器後,今後基於 HTTP 的Web技術也開始了真正的爆發。安全

HTTP 協議的成長曆程

  HTTP 協議 做爲文檔傳輸協議,是萬維網生態系統的核心基礎,它屬於應用層中的一個協議,在開放式系統互聯OSI(Open System Interconnect) 七層模型中的最上層,它採用 BS(Browser - Server) 架構,並不負責數據包的傳輸工做,只是定義了數據包在客戶端和服務器之間的通訊格式,默認使用 80 端口。HTTP的成長曆程大概有一下幾個時間段:bash

  • HTTP/0.9版本

HTTP 協議第一個版本,它只有一個指令:GET。經過 GET 向服務器獲取資源,服務器僅僅可以爲你迴應最簡單的HTML格式字符串,在如今看來毫無價值!服務器

GET /index.html
複製代碼
  • HTTP/1.0版本

因爲0.9版本太過簡單,徹底沒法知足互聯網數據傳輸的需求。在1996年,脫胎換骨的 HTTP/1.0 版本正式發佈。新增POST 指令和 HEAD 指令,使得基於 HTTP協議 傳輸文字、圖像、視頻、文件等任何格式都不在話下。除了增長了請求方法以及對發送文件的支持以外,還增長了格式的改變。除了數據部分,每次通訊都必須包括頭信息 HTTP header,用來描述一些元數據。另外還增長了狀態碼、多字符集支持、多部分發送(multi-part type)、權限(authorization)、緩存(cache)、內容編碼(content encoding)等等,這個版本的升級,爲互聯網賦予了豐富多彩的信息交互,也爲互聯網的快速發展奠基了基礎。微信

雖然 HTTP/1.0 相比較 0.9版本,能夠說是脫胎換骨,然而依舊並不完美,最大的問題就是,傳輸性能低下。每一次創建 TCP 鏈接只能發送一個請求。發送數據完畢,鏈接就關閉,若是還要請求其餘資源,就必須再從新創建一個鏈接。而每一次 TCP 鏈接的創建都是很是消耗性能的操做,因此若是屢次請求,就會致使請求成本特別的高。網絡

  • HTTP/1.1版本

爲了解決 1.0版本讓人詬病的性能缺陷,僅僅過去半年的時間,在1997年1月,加入了持久化鏈接 HTTP/1.1 版本再次發佈,即 TCP 鏈接默認不關閉,能夠被多個請求複用,大大節約了請求成本。此外,HTTP/1.1 還新增了許多方法,例如:PUTPATCHHEADOPTIONSDELETE。今後 HTTP 駐足不前,一直沿用至今,也成爲了目前的主流版本。此外,基於 Restful 的架構風格的 Web服務也成了主流。架構

  • HTTP/2版本

咱們知道 1.1版本的發佈,優化了一些網絡性能問題,然而隨着網頁內容豐富程度的提升和交互吞吐量的急劇增長,即便 HTTP/1.1 容許複用TCP 鏈接,而同一個 TCP 鏈接裏面,全部的數據通訊是按次序進行的,服務器只有處理完一個迴應,纔會進行下一個迴應,要是前面的迴應特別慢,後面就會有許多請求排隊等着,這就是隊頭堵塞 (Head-of-line blocking),性能上也仍是有所缺陷。此外,HTTP 明文鏈接致使的一些網絡安全問題也一直威脅着咱們。ide

因而多年駐足不前的 HTTP, 在2015年,發佈了下一代協議 HTTP/2 版本(它不叫 HTTP/2.0 是由於標準委員會不打算再發布子版本了)。該版本只用於 HTTPS加密鏈接HTTP 明文鏈接 將繼續使用 HTTP/1協議,目的是在開放互聯網上增強加密技術的應用,提高網絡鏈接安全性,抵禦網絡劫持等安全威脅。

HTTP/2增長了二進制分幀多路複用服務器推送(server push)頭部壓縮等新特性。具體內容,後面章節會詳細講解。

  • HTTP/3版本

HTTP/3 協議即將標準化~

HTTPS 時代到來,提高 Web 安全性

HTTP協議的誕生與成長以來,主要是爲了解決信息傳遞和共享的問題,並無考慮到互聯網高速發展後面臨的安全問題,HTTP協議不具有任何數據加密、身份校驗等機制,使用 HTTP協議 傳遞的數據以明文形式在網絡中傳輸,任意節點的第三方均可以隨意劫持流量、篡改數據或竊取信息,沒法確保數據的保密性、完整性和真實性,已經不能適應現代互聯網應用的安全需求。

1994年,Netscape建立了 SSL協議 的原始規範並逐步發佈協議改進版本,1996年,Netscape和Paul Kocher共同設計發佈 SSL 3.0協議,得到互聯網普遍承認和支持。因特網工程任務組(IETF)接手負責該協議,並將其重命名爲傳輸層安全(TLS)協議。

SSL(Secure SocketsLayer ,安全套接層)介於應用層和TCP層之間,應用層數據再也不直接傳遞給傳輸層而是傳遞給SSL層SSL層對從應用層收到的數據進行加密,利用數據加密、身份驗證和消息完整性驗證機制,爲網絡上數據的傳輸提供安全性保證。

2014年起,谷歌開始計劃在Chrome瀏覽器上針對 HTTP 協議的不安全性對用戶發出警告,並逐步升級警告範圍,最終目標是將全部 HTTP 網站標記紅色「不安全」警告,推進網站遷移至更安全的HTTPS加密協議,FireFoxSafari等主流瀏覽器也紛紛加入行列。在最新版Chrome瀏覽器已經對全部 HTTP 網站標記「不安全」,並對須要輸入字段的HTTP頁面標記紅色「不安全」警告。在瀏覽器的推進下,近兩年全球網站HTTPS部署率持續上升,爲建立安全、隱私的互聯網環境打下良好基礎。

相關文章
相關標籤/搜索