HTTP/HTTPS


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

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

HTTP & layers

1.3 HTTP / 1.1

在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的使用可以創建有狀態的會話。

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是無狀態協議。這很有用,不僅是因為能用到購物車這樣的電商業務上,更是因為,它使得任何網站都能夠配置頁面展現的東西了。

二、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是現行架構下最安全的解決方案,主要有以下幾個好處:

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

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

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

HTTPS的缺點:

技術方面

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

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

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

成本方面

1、SSL的專業證書需要購買,功能越強大的證書費用越高。個人網站、小網站可以選擇入門級免費證書。

2、SSL 證書通常需要綁定 固定IP,為服務器增加固定IP會增加一定費用;

3、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM