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具有身份驗證、信息加密和完整性校驗的功能避免此類問題發生。

這裏寫圖片描述

圖中的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權威指南》

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 存在加密解密環節相關的計算耗時以及協議交互所增加的網絡耗時,性能有一定損失。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章