HTTP發展簡史
HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。
HTTP 是基於 TCP/IP 協議的應用層協議。它不涉及數據包(packet)傳輸,主要規定了客戶端和服務器之間的通訊格式,默認使用80端口。css
HTTP/0.9版本
- 1991年發佈0.9版本,該版本只有一個GET命令。
- 僅支持html格式。
- 服務器不支持長鏈接,當客戶端和服務端通訊完後就會關閉鏈接,一次鏈接一個請求。
HTTP/1.0版本
- 1996年5月發佈1.0版本,有很大改進。
- 支持了更多文件格式,好比圖片、視頻、二進制文件,使得網頁內容更加豐富。
- 支持了更多的方法:GET、POST、HEAD。
- 增長了包頭信息(HTTP header)、狀態碼、緩存、權限等功能。
- 和0.9版本同樣,服務器不支持長鏈接,當客戶端和服務端通訊完後就會關閉鏈接,一次鏈接一個請求。
HTTP/1.1版本
- 1997年1月發佈1.1版本,目前主流依然是1.1
- 支持了持久鏈接,一個鏈接能夠發送多個請求,而且支持一個鏈接同時發送多個請求(服務器端須要按順序返回結果)
- 支持了更多的方法:PUT、PATCH、DELETE、OPTIONS
- 客戶端請求頭信息增長Host字段,指定服務器的域名,這樣服務器上支持了虛擬主機,即一臺機器多個站點
HTTP/2 版本
- 2015年發佈,目前還未正式大規模使用,但大多瀏覽器已經支持HTTP/2
- 在以前版本HTTP header必須是文本(ASCII編碼)格式,body部分能夠是文本也能夠是二進制,但在HTTP/2,不管是header仍是body都是二進制數據
- HTTP/2支持了在一個鏈接裏,客戶端和服務端同時發送多個請求
- 由於支持了在一個鏈接裏同時發送多個請求和多個迴應,爲了區分它們就須要對數據作標記,每一個請求或迴應的全部數據包爲一個數據流(stream),每一個數據流都有一個惟一的ID,客戶端發送的請求ID爲奇數,服務端返回的爲偶數
- HTTP/2支持header壓縮,而且支持header信息索引(客戶端和服務端有一張相同的索引表,不一樣的header對應不一樣的索引號,發送請求時不會再發header,而是發索引號)
- HTTP/2支持服務端主動推送功能,若是一個網頁中含有大量的靜態資源(js、css、圖片等),以前版本是當該網頁傳輸完成後解析全部html代碼,而後再去傳輸網頁中包含的資源,HTTP/2版本能夠在網頁沒有傳輸完以前就主動把該網頁中包含的靜態資源推送到客戶端,這樣省去了客戶端再次發請求的過程。