HTTP/HTTPS

1、HTTP
1.1 超文本傳輸協議(HTTP)是用於分佈式,協做式和超媒體信息系統的應用協議。它是Web上數據交換的基礎,是一種client-server協議,也就是說請求一般是由像瀏覽器這樣的接受方發起的。php

1.2 HTTP被設計於上20世紀90年代初期,是一種可擴展性的協議。雖然理論上它能夠經過任何可靠的傳輸協議來發送,可是它仍是經過TCP,或者是TLS-加密的TCP鏈接來發送。由於它很好的擴展性,時至今日它不只被用來傳輸超文本文檔,還用來傳輸圖片、視頻或者向服務器發送如HTML表單這樣的信息。HTTP還能夠根據網頁需求,來獲取部分web文檔的內容來更新網頁。html

HTTP & layers

1.3 HTTP / 1.1web

在HTTP / 0.9和1.0中,鏈接在單個請求/響應對以後關閉。在HTTP / 1.1中引入了保持活動機制,其中鏈接能夠重用於多個請求。這種持久鏈接可察覺地減小請求等待時間,由於客戶端在發送第一請求以後不須要從新協商TCP 3次握手鍊接。另外一個積極的意義在於,因爲TCP的慢啓動機制,一般鏈接隨時間變得更快。
協議的版本1.1還使得帶寬優化改進到HTTP / 1.0。例如,HTTP / 1.1引入了分塊傳輸編碼,以容許持續鏈接上的內容被流式傳輸而不是緩衝。 HTTP流水線進一步減小滯後時間,容許客戶端在等待每一個響應以前發送多個請求。協議的另外一個附加是字節服務,其中服務器僅傳送客戶端明確請求的資源的部分。算法

1.4 HTTP 的基本性質瀏覽器

HTTP 是簡單的

即使在HTTP/2中把HTTP消息封裝到了frames中,HTTP大致上仍是被設計成可讀的並且簡單的。HTTP的消息可以讓人讀懂且明白它的意思,還容許簡單的測試,放低了門檻,更有利於新來者瞭解。緩存

HTTP 是可擴展的

在HTTP/1中就出現了, HTTP headers讓協議擴展變得很是容易。只要服務端和客戶端在新的headers上語義達成一致,新的功能就能夠輕鬆地被加進來。安全

HTTP 是無狀態,有會話的

HTTP是無狀態的:在同一個鏈接中,兩個成功執行的請求之間是沒有關係的。這就帶來了一個問題,用戶沒辦法在一個網站進行連續的交互,好比在一個電商網站裏,用戶把某個商品加入了購物車中,換了一個頁面後再次添加商品,兩次添加商品的請求沒有聯繫,瀏覽器沒法知道最終用戶都選擇了哪些商品。而用HTTP的頭部擴展,HTTP Cookies就能夠解決這個問題。把Cookies添加到頭部中,建立一個會話來讓每次請求都能共享相同的上下文信息,相同的狀態。服務器

而HTTP的核心是無狀態的,cookies的使用能夠建立有狀態的會話。cookie

1.5 HTTP status code網絡

HTTP狀態代碼主要分爲五組,以更好地說明客戶端和服務器之間的請求和響應,名稱爲:

信息1XX,這一類型的狀態碼,表明請求已被接受,須要繼續處理。

成功2XX,這一類型的狀態碼,表明請求已成功被服務器接收、理解、並接受

重定向3XX,一般,這些狀態碼用來重定向,後續的請求地址(重定向目標)在本次響應的 Location 域中指明。

客戶端錯誤4XX,請求有語法錯誤或請求沒法實現,這類的狀態碼錶明瞭客戶端看起來可能發生了錯誤,妨礙了服務器的處理。

服務器錯誤5XX,這類狀態碼錶明瞭服務器在處理請求的過程當中有錯誤或者異常狀態發生,也有多是服務器意識到以當前的軟硬件資源沒法完成對請求的處理。

1.6 HTTP 能控制什麼

多年以來,HTTP良好的擴展性控制着愈來愈多Web的功能。緩存和認證方式很早就能夠由HTTP來控制了。另外一方面,對同源同域的限制到2010年纔有所改變。

下面就是能夠用HTTP來控制的常見特性。

1.61 緩存
文檔怎麼緩存可以經過HTTP來控制。服務端能告訴代理和客戶端什麼須要被緩存,緩存多久,而客戶端可以命令中間緩存代理來忽略存儲的文檔。

1.62 開放同源限制
爲了防止網絡窺聽和其它的隱私泄漏,瀏覽器強制對Web網站作了分割限制。只有來自於相同來源的網頁纔可以獲取網站的所有信息。這樣的限制有時反而成了負擔,HTTP能夠經過修改頭部來開放這樣的限制,所以web文檔能夠是由不一樣域下的信息拼接成的(在某些狀況下,這樣作還有安全因素考慮在裏面)。

1.63 認證
一些頁面可以被保護起來,僅讓特定的用戶進行訪問。基本的認證功能能夠直接經過HTTP提供,使用Authenticate類似的頭部就能夠,或者用HTTP cookies來設定指定的會話。

1.64 代理
服務端和客戶端一般都處在內部網上,彼此的真實地址都是不可見隱藏的。HTTP請求就要經過代理穿過網絡障礙。不是全部的代理都是HTTP代理的,像一些用SOCKS協議的代理就運做在更底層(一些其它的協議,像ftp也可以被它們處理)

1.65 會話
Cookies用一個服務端的狀態鏈接起了每個請求。這就建立了會話,雖然基本的HTTP是無狀態協議。這頗有用,不只是由於能用到購物車這樣的電商業務上,更是由於,它使得任何網站都可以配置頁面展示的東西了。

2、HTTPS

HTTP + SSL/TSL –> HTTPS

所以,超文本傳輸安全協議HTTPS常稱爲HTTP over TLS,HTTP over SSL或HTTP Secure是一種網絡安全傳輸協議。

2.1 歷史上,HTTPS鏈接主要用於萬維網上的支付交易,電子郵件和公司信息系統中的敏感交易。在2000年代末和2010年初,HTTPS開始在全部類型的網站上普遍使用保護頁面真實性,保護賬戶和保持用戶通訊,身份和網絡瀏覽私人。

2.2 在其在互聯網上的流行部署中,HTTPS提供與正在通訊的網站和相關聯的web服務器的認證,其防止中間人攻擊。此外,它提供客戶端和服務器之間的通訊的雙向加密,其防止竊聽和篡改或僞造通訊的內容。在實踐中,這提供了一個合理的保證,即正在與正在與意圖與之通訊的網站(與冒名頂替者相反)進行通訊,以及確保用戶和站點之間的通訊內容不能被讀取或僞造任何第三方。

2.3 SSL / TLS

事實上,SSL(Secure Sockets Layer)協議是Netcape公司於上世紀90年代中期提出的協議,自身發展到3.0版本。

1999年該協議由ITEL接管,進行了標準化,更名爲TLS(Transport Layer Security)。

能夠說,TLS 1.0就是SSL 3.1版本。在Wikipedia上並無SSL獨立的條目,而是會重定向到TLS,可見兩種協議關係之緊密。

HTTPS通知瀏覽器使用添加的SSL / TLS加密層來保護流量。 SSL / TLS特別適用於HTTP,由於它能夠提供一些保護,即便只有通訊的一側被認證。

這是因特網上的HTTP事務的狀況,其中一般只有服務器被認證(由客戶端檢查服務器的證書)。
HTTPS在不安全的網絡上建立安全通道。這確保了合理的保護免受竊聽者和中間人攻擊,只要使用足夠的密碼套件而且服務器證書被驗證和信任。

2.4 與HTTP的區別
HTTPS URL以「https://」開頭,默認使用端口443,而HTTP URL以「http://」開頭,默認使用端口80。
HTTP不加密,易受到中間人和竊聽攻擊的攻擊,攻擊者能夠訪問網站賬戶和敏感信息,並修改網頁以注入惡意軟件或廣告。 HTTPS被設計爲可以承受這種攻擊,並被認爲是安全的(除了舊的,不推薦的SSL版本)。

2.5 HTTPS侷限性

因爲客戶端和服務端都須要對數據進行加密/解密,這會耗費必定的時間,所以,爲了達到更好的體驗,在一個網站中,牽連到重要的信息的網頁可使用HTTPS協議,而其餘網頁可使用HTTP協議。

2.6 TLS包含三個基本階段:

  1. 對等協商支持的密鑰算法
  2. 基於非對稱密鑰的信息傳輸加密和身份認證、基於PKI證書的身份認證
  3. 基於對稱密鑰的數據傳輸保密

補充:

HTTPS的優勢:[1]

安全性方面

在目前的技術背景下,HTTPS是現行架構下最安全的解決方案,主要有如下幾個好處:

一、使用HTTPS協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器;

二、HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全,可防止數據在傳輸過程當中不被竊取、改變,確保數據的完整性。

三、HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增長了中間人攻擊的成本。

HTTPS的缺點:

技術方面

一、相同網絡環境下,HTTPS協議會使頁面的加載時間延長近50%,增長10%到20%的耗電。此外,HTTPS協議還會影響緩存,增長數據開銷和功耗。

二、HTTPS協議的安全是有範圍的,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什麼做用。

三、最關鍵的,SSL 證書的信用鏈體系並不安全。特別是在某些國家能夠控制 CA 根證書的狀況下,中間人攻擊同樣可行。

成本方面

一、SSL的專業證書須要購買,功能越強大的證書費用越高。我的網站、小網站能夠選擇入門級免費證書。

二、SSL 證書一般須要綁定 固定IP,爲服務器增長固定IP會增長必定費用;

三、HTTPS 鏈接服務器端資源佔用高較高多,相同負載下會增長帶寬和服務器投入成本;

 

參考資料:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP

https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE

http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE

https://zh.wikipedia.org/wiki/%E5%82%B3%E8%BC%B8%E5%B1%A4%E5%AE%89%E5%85%A8%E5%8D%94%E8%AD%B0

相關文章
相關標籤/搜索