https建立連線原理筆記

2021-10-06 02:42:37 字數 1382 閱讀 6779

tcp協議–通訊雙方通過三次握手建立tcp連線

tls(transport layer security)協議–通訊雙方通過四次握手建立tls連線

http協議–client向server發起request,server發揮response

ps:以下筆記只針對tls1.2

tcp三次握手建立連線

客戶端向服務端傳送帶有 syn 的資料段以及客戶端開始傳送資料段(segment)的初始序列號 seq = 100

服務端收到資料段時,向客戶端傳送帶有 syn 和 ack 的資料段;

客戶端向服務端傳送帶有 ack 的資料段,確認服務端的初始序列號,其中包含 ack = 301

tcp 連線的雙方會通過三次握手確定 tcp 連線的初始序列號、視窗大小以及最大資料段,這樣通訊雙方就能利用連線中的初始序列號保證雙方資料段的不重不漏、通過視窗大小控制流量並使用最大資料段避免 ip 協議對資料報的分片

tcp 快啟策略使用儲存在客戶端的 tfo cookie 與服務端快速建立連線。tcp 連線的客戶端向服務端傳送 syn 訊息時會攜帶快啟選項,服務端會生成乙個 cookie 並將其傳送至客戶端,客戶端會快取該 cookie,當其與服務端重新建立連線時,它會使用儲存的 cookie 直接建立 tcp 連線,服務端驗證 cookie 後會向客戶端傳送 syn 和 ack 並開始傳輸資料,這也就能減少通訊的次數。

通過 tls 握手交換雙方的金鑰

建立連線:

客戶端向服務端傳送 client hello 訊息,其中攜帶客戶端支援的協議版本、加密演算法、壓縮演算法以及客戶端生成的隨機數

服務端收到客戶端支援的協議版本、加密演算法等資訊後:

客戶端收到服務端的協議版本、加密方法、會話 id 以及證書等資訊後,驗證服務端的證書:

服務端收到 change cipher spec 和 finished 訊息後

http 協議的資料交換只會消耗 1-rtt,當客戶端和服務端僅處理一次 http 請求時,從 http 協議本身我們已經無法進行優化。不過隨著請求的數量逐漸增加,http/2 就可以復用已經建立的 tcp 連線減少 tcp 和 tls 握手帶來的額外開銷。

當客戶端想要通過 https 請求訪問服務端時,整個過程需要經過 7 次握手並消耗 4.5 rtt的延遲。原因:

tcp 協議需要通過三次握手建立 tcp 連線保證通訊的可靠性(1.5-rtt)

tls 協議會在 tcp 協議之上通過四次握手建立 tls 連線保證通訊的安全性(2-rtt)

http 協議會在 tcp 和 tls 上通過一次往返傳送請求並接收響應(1-rtt)

ps:http/3 就是乙個這樣的例子,它會使用基於 udp 的 quic 協議進行握手,將 tcp 和 tls 的握手過程結合起來,把 7 次握手減少到了 3 次握手,直接建立了可靠並且安全的傳輸通道

https建立連線

客戶端的瀏覽器向伺服器傳送客戶端 ssl 協議的版本號,加密演算法的種類,產生的隨機數,以及其他伺服器和客戶端之間通訊所需要的各種資訊。圖中1 伺服器向客戶端傳送 ssl 協議的版本號,加密演算法的種類,隨機數以及其他相關資訊,同時伺服器還將向客戶端傳送自己的證書。圖中2,3 客戶利用伺服器傳過來的...

https建立連線過程

既然要公升級為https協議,那就很有必要知道https的原理是什麼,https是怎麼保證資訊只有通訊雙方能解析而不被第三方截獲導致資訊被竊取 篡改。2.1 原理圖 下面是一張https建立連線的原理圖,下面會對每一步進行說明。https建立連線 2.2 https建立連線過程 2.2.1 客戶端訪...

HTTPS建立連線過程詳解

現今https對乙個網路服務來說是必備的,但之前乙隻對https瀏覽器與伺服器建立連線的握手過程一知半解,下面進行一下總結 上面是一張建立https連線的流程圖,建立連線過程如下 1 客戶端傳送乙個隨機生成的隨機數加上將客戶端所支援的所有加密套件傳送給服務端,服務端收到客戶端的client hell...