HTTP
協議,有條不紊的爲咱們的生活提供着便利及樂趣。
讓咱們穿越時空,去尋覓下 HTTP
的前世此生。讓咱們從新認識一下這位互聯網世界的大明星。html
上個世紀八十年代,互聯網誕生之初,一位計算機科學家蒂姆·伯納斯·李博士提出了一個遠程共享知識的構想:建立一個以超文本系統爲基礎的項目,容許在不一樣計算機之間分享信息,其目的是方便研究人員分享及更新信息。這個構想最終成了 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 協議
做爲文檔傳輸協議,是萬維網生態系統的核心基礎,它屬於應用層中的一個協議,在開放式系統互聯OSI(Open System Interconnect) 七層模型中的最上層,它採用 BS(Browser - Server)
架構,並不負責數據包的傳輸工做,只是定義了數據包在客戶端和服務器之間的通訊格式,默認使用 80 端口。HTTP
的成長曆程大概有一下幾個時間段:bash
HTTP 協議第一個版本,它只有一個指令:
GET
。經過GET
向服務器獲取資源,服務器僅僅可以爲你迴應最簡單的HTML格式字符串,在如今看來毫無價值!服務器
GET /index.html
複製代碼
因爲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
鏈接的創建都是很是消耗性能的操做,因此若是屢次請求,就會致使請求成本特別的高。網絡
爲了解決 1.0版本讓人詬病的性能缺陷,僅僅過去半年的時間,在1997年1月,加入了持久化鏈接
HTTP/1.1
版本再次發佈,即TCP
鏈接默認不關閉,能夠被多個請求複用,大大節約了請求成本。此外,HTTP/1.1
還新增了許多方法,例如:PUT
、PATCH
、HEAD
、OPTIONS
、DELETE
。今後HTTP
駐足不前,一直沿用至今,也成爲了目前的主流版本。此外,基於Restful
的架構風格的 Web服務也成了主流。架構
咱們知道 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協議
的誕生與成長以來,主要是爲了解決信息傳遞和共享的問題,並無考慮到互聯網高速發展後面臨的安全問題,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
加密協議,FireFox
、Safari
等主流瀏覽器也紛紛加入行列。在最新版Chrome
瀏覽器已經對全部 HTTP 網站標記「不安全」,並對須要輸入字段的HTTP頁面標記紅色「不安全」警告。在瀏覽器的推進下,近兩年全球網站HTTPS
部署率持續上升,爲建立安全、隱私的互聯網環境打下良好基礎。