天天看點

HTTP與HTTPS協定介紹

HTTP與HTTPS協定簡介

随着網際網路飛速發展,每天都有爆炸性的資料、文本、HTML頁面、音視訊等資源通過網際網路在世界各地傳輸,這些資料借助于HTTP/HTTPS(HTTP加密安全版)協定載體迅速、便捷、可靠地将Web 伺服器搬移到人們桌面上的 Web 浏覽器。

HTTP(Hypertext Transfer Protocol,超文本傳輸協定) 在OSI 七層模型屬于應用層協定,在網絡與傳輸層使用可靠的資料傳輸協定TCP/IP,是以,通常情況下即使資料來自地球的另一端,HTTP協定也能夠確定資料在傳輸的過程中不會被損壞或産生混亂,使用者在通路資訊時就不用擔心其完整性了。然而在網絡環境中,資料的安全性在某些情境中也變得至關重要,比如通路銀行賬戶、網絡購物等場景,HTTP協定采用明文傳輸資訊的方式,不可避免存在資訊被竊聽、篡改和劫持的風險,此時一種安全可靠地HTTPS協定産生了。

HTTPS (Secure Hypertext Transfer Protocol,安全超文本傳輸協定)是一個安全通信通道,基于HTTP開發,用于在用戶端和伺服器之間交換資訊時采用安全套接字層(SSL)進行資訊交換。通俗地講,HTTPS是HTTP的安全版,即使用了TLS/SSL加密的HTTP協定, HTTPS克服了HTTP協定中采用明文傳輸資訊,存在竊聽、篡改和劫持的風險,使用協定TLS/SSL具有身份驗證、資訊加密和完整性校驗的功能避免此類問題發生。

HTTP與HTTPS協定介紹

圖中的TLS/SSL(Transport Layer Security,安全傳輸層協定Transport Layer Security)是介于TCP和HTTP之間的一層安全協定,它的存在不影響原有的TCP協定和HTTP協定,實際使用上HTTPS基本不需要對HTTP頁面進行太多的改造。

HTTP與HTTPS傳輸過程

實際使用中通過URL實作告知伺服器去是否采用HTTPS安全協定版本, 通常情況下,未加密HTTP 的 URL 字首為http,例如:http://www.csdn.net/

而在安全HTTPS協定中,URL 的字首為https,例如:https://www.pbc.gov.cn

用戶端對某伺服器執行請求時,通過檢查URL來區分:

  • 如果 URL 的方案為 http,用戶端就會打開一條到伺服器端口 80(預設情況下)的連接配接,并向其發送普通的HTTP 指令。
  • 如果 URL 的方案為 https,用戶端就會打開一條到伺服器端口 443(預設情況下)的連接配接,然後與伺服器“握手”,以二進制格式與伺服器交換一些 SSL 安全參數,附上加密的 HTTP 指令。

在未加密 HTTP 中,用戶端會打開一條到伺服器端口 80 的 TCP 連接配接,發送一條請求封包,接收一條響應封包,關閉連接配接。HTTPS 中這個過程會略微複雜一些,在 HTTPS 中,用戶端首先打開一條到伺服器端口 443(安全 HTTP 的預設端口)的連接配接。一旦建立了 TCP 連接配接,用戶端和伺服器就會初始化 SSL 層,對加密參數進行溝通,并交換密鑰。握手完成之後,SSL 初始化就完成了,用戶端就可以将請求封包發送給安全層了,在将這些封包發送給 TCP 之前,要先對其進行加密。伺服器的響應保溫,也同樣才用加密傳輸。

HTTP與HTTPS傳輸過程參考下圖:

HTTP與HTTPS協定介紹

注:圖檔來自《HTTP權威指南》

HTTP與HTTPS差別

兩者差異上述介紹已經部分提及,主要差別總結如下:

  1. HTTP是超文本傳輸協定,資訊是明文傳輸,HTTPS則是具有安全性的SSL加密傳輸協定。
  2. HTTPS需要用到SSL證書,需要到CA申請證書,一般免費證書很少,需要交費,而HTTP不用。
  3. HTTP的連接配接很簡單,是無狀态的,HTTPS協定是由SSL+HTTP協定建構的可進行加密傳輸、身份認證的網絡協定 ,要HTTP更加安全,對搜尋引擎更友好。
  4. 兩者連結端口不同,HTTPS标準端口443,HTTP标準端口80。
  5. HTTPS相對于HTTP 存在加密解密環節相關的計算耗時以及協定互動所增加的網絡耗時,性能有一定損失。

繼續閱讀