HTTP與HTTPS作為互聯網數據傳輸的核心協議,其通信機制與安全特性深刻影響著現代網絡應用的可靠性與用戶體驗。本文將解析兩者的通信流程、安全機制及核心差異。
一、HTTP的通信機制
先來看看HTTP是什么吧。
HTTP基于TCP/IP協議棧,采用經典客戶端-服務器模型:
- TCP連接建立\
通過三次握手創建可靠傳輸通道(源IP:端口 ? 目標IP:端口),默認端口80。 - 請求-響應交互\
瀏覽器發起到服務器的 TCP 連接。
<!---->
GET /index.html HTTP/1.1
Host: www.baidu.com
- 服務器處理與響應\
服務器接收來自瀏覽器的 TCP 連接。
<!---->
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>
- 交換信息\
瀏覽器(HTTP 客戶端)與 Web 服務器(HTTP 服務器)交換 HTTP 消息。 - 連接終止\
完成傳輸后通過四次揮手斷開連接,關閉 TCP 連接。
二、HTTPS的進化
HTTPS在HTTP與TCP層之間插入SSL/TLS加密層,通過三重防護機制應對安全威脅:
安全威脅 | 防護機制 | 實現方式 |
---|---|---|
數據竊聽 | AES-256等對稱加密 | 會話密鑰動態協商 |
數據篡改 | SHA-256摘要算法 | 數字簽名驗證數據完整性 |
身份偽造 | X.509數字證書體系 | CA機構簽發服務器身份證書 |
那么,SSL 和 TLS 的區別是什么呢?
總的來說,SSL 和 TLS 沒有太大的區別。
SSL 指安全套接字協議(Secure Sockets Layer),首次發布與 1996 年。SSL 的首次發布其實已經是他的 3.0 版本,SSL 1.0 從未面世,SSL 2.0 則具有較大的缺陷(DROWN 缺陷——Decrypting RSA with Obsolete and Weakened eNcryption)。很快,在 1999 年,SSL 3.0 進一步升級,新版本被命名為 TLS 1.0。因此,TLS 是基于 SSL 之上的,但由于習慣叫法,通常把 HTTPS 中的核心加密協議混稱為 SSL/TLS。
HTTPS握手流程:
- Client Hello:客戶端發送支持的加密套件+隨機數
- Server Hello:服務器選擇加密套件+證書+隨機數
- 密鑰交換:ECDHE算法生成預主密鑰
- 會話密鑰:通過HKDF算法生成加密密鑰
- 加密通信:應用層數據使用對稱加密傳輸
如下圖所示,以TLS層為例。
三、HTTP與HTTPS的不同
在協議層看看它們有什么不同。
對比維度 | HTTP | HTTPS |
---|---|---|
傳輸加密 | 明文傳輸 | SSL/TLS加密傳輸 |
端口號 | 80 | 443 |
證書要求 | 無需證書 | 需CA簽發數字證書 |
響應速度 | RTT 3次 | RTT 5-7次(支持會話恢復) |
頭部結構 | 無加密標識 | 包含加密協議版本等安全參數 |
資源消耗 | 低 | 增加15-20% CPU負載 |
四、HTTPS安全機制解析
- 混合加密體系\
結合非對稱加密(RSA/ECC)的安全密鑰交換與對稱加密(AES)的高效數據加密,兼顧安全與性能。 - 證書鏈驗證\
通過根證書→中間證書→服務器證書的信任鏈驗證,防止中間人攻擊。OCSP協議實時檢查證書吊銷狀態。 - HSTS策略\
強制瀏覽器使用HTTPS連接,防范SSL剝離攻擊。
五、總結
- 端口號:HTTP 默認是 80,HTTPS 默認是 443。
- URL 前綴:HTTP 的 URL 前綴是?
http://
,HTTPS 的 URL 前綴是?https://
。 - 安全性和資源消耗:HTTP協議基于TCP協議構建,其傳輸的數據均為明文形式,且通信雙方無法驗證彼此身份。而HTTPS作為HTTP的安全演進版本,其通信架構分為兩層:底層通過SSL/TLS協議與TCP建立安全通道,上層則承載經過加密處理的HTTP通信。該加密體系采用混合加密機制,即使用服務器數字證書中的公鑰對對稱會話密鑰進行非對稱加密傳輸,實際數據傳輸階段則采用高效對稱加密算法。相較于HTTP,HTTPS通過雙重加密機制顯著提升了安全性,但同時也因加解密運算增加了服務器的計算負載。
行業拓展
近 10 年間,甚至連傳統企業都開始大面積數字化時,我們發現開發內部工具的過程中,大量的頁面、場景、組件等在不斷重復,這種重復造輪子的工作,浪費工程師的大量時間。 針對這類問題,JNPF 低代碼平臺把某些重復出現的場景、流程,具象化成一個個組件、api、數據庫接口,避免了重復造輪子,極大的提高了程序員的生產效率。
體驗地址:https://www.jnpfsoft.com
這是一個基于 Flowable 引擎(支持 java、.NET),已支持 MySQL、SqlServer、Oracle、PostgreSQL、DM(達夢)、 KingbaseES(人大金倉)6 個數據庫,支持私有化部署,前后端封裝了上千個常用類,方便擴展,框架集成了表單、報表、圖表、大屏等各種常用的 Demo 方便直接使用。
至少包含表單建模、流程設計、報表可視化、代碼生成器、系統管理、前端 UI 等組件,這種情況下我們避免了重復造輪子,已內置大量的成熟組件,選擇合適的組件進行集成或二次開發復雜功能,即可自主開發一個屬于自己的應用系統。
?