HTTPS 建立連接的詳細過程

簡介

HTTPS是在HTTP的基礎上和ssl/tls證書結合起來的一種協議,保證了傳輸過程中的安全性,減少了被惡意劫持的可能.很好的解決了解決了http的三個缺點(被監聽、被篡改、被僞裝)

對稱加密和非對稱加密

  • 對稱加密

    • 即加密的密鑰和解密的密鑰相同,
  • 非對稱加密

    • 非對稱加密將密鑰分爲公鑰和私鑰,公鑰可以公開,私鑰需要保密,客戶端公鑰加密的數據,服務端可以通過私鑰來解密

建立連接

  • HTTP和HTTPS都需要在建立連接的基礎上來進行數據傳輸,是基本操作

  • 當客戶在瀏覽器中輸入網址的並且按下回車,瀏覽器會在瀏覽器DNS緩存,本地DNS緩存,和Hosts中尋找對應的記錄,如果沒有獲取到則會請求DNS服務來獲取對應的ip

  • 當獲取到ip後,tcp連接會進行三次握手建立連接

tcp的三次揮手和四次揮手

過程簡圖

三次揮手(建立連接)

  • 第一次:建立連接時,客戶端發送SYN包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;

  • 第二次:服務器收到SYN包,向客戶端返回ACK(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RCVD狀態;

  • 第三次:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

  • 完成三次握手,客戶端與服務器開始傳送數據,也就是ESTABLISHED狀態。

  • 三次握手保證了不會建立無效的連接,從而浪費資源。

四次揮手(斷開連接)

  • 第一次: TCP客戶端發送一個FIN,用來關閉客戶到服務器的數據傳送。

  • 第二次:服務器收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。和SYN一樣,一個FIN將佔用一個序號。

  • 第三次:服務器關閉客戶端的連接,發送一個FIN給客戶端。

  • 第四次:客戶端發回ACK報文確認,並將確認序號設置爲收到序號加1。

HTTP請求過程

  • 建立連接完畢以後客戶端會發送響應給服務端

  • 服務端接受請求並且做出響應發送給客戶端

  • 客戶端收到響應並且解析響應響應給客戶

HTTPS

  • 在使用HTTPS是需要保證服務端配置正確了對應的安全證書

  • 客戶端發送請求到服務端

  • 服務端返回公鑰和證書到客戶端

  • 客戶端接收後會驗證證書的安全性,如果通過則會隨機生成一個隨機數,用公鑰對其加密,發送到服務端

  • 服務端接受到這個加密後的隨機數後會用私鑰對其解密得到真正的隨機數,隨後用這個隨機數當做私鑰對需要發送的數據進行對稱加密

  • 客戶端在接收到加密後的數據使用私鑰(即生成的隨機值)對數據進行解密並且解析數據呈現結果給客戶

  • SSL加密建立

發佈了26 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章