瀏覽器輸入URL之后發生的過程
- 瀏覽器解析URL中的協議,主機,端口,路徑參數等
- DNS域名解析得到對應的IP地址
- 通過IP和PORT對服務器發送TCP三次握手建立連接
- 瀏覽器發送請求
- 服務器接受請求,處理并響應
- 瀏覽器得到HTTP響應,對響應報文指定的格式進行渲染
- 瀏覽器和服務器四次揮手斷開連接
DNS解析過程(全稱為域名系統(Domain Name System))
- 瀏覽器緩存
- host文件(
/etc/hosts
目錄下)如下
127.0.0.1 ? ? ? localhost
::1 ? ? ? ? ? ? localhost# 將 example.com 指向本地回環地址
127.0.0.1 ? ? ? example.com -
本地DNS服務器(如:中國移動)
-
根域名服務器===》頂級域名服務器(如.com? .net? ?.cn)
-
頂級域名服務器==》權威域名服務器(如:baidu.com)
-
權威域名服務器==》IP地址
HTTP版本
1、0.9:
- 無報頭,只支持GET方法,響應只能是HTML
2、1.0
- 有報頭,支持GET,POST等多種方法,支持多種狀態碼
- 不支持長連接
3、1.1
- 長連接
- 管道網絡通信(服務器必須按照發送順序處理,造成隊頭阻塞)
缺點:
- 隊頭阻塞
- 頭部冗余(http2解決)
- 無請求級別
- 請求響應一對一,服務器被動(http2解決)
4、2.0
- 二進制數據傳輸
- stream并發傳輸(亂序發送,在客戶端通過ID組裝)
- 頭部壓縮
- 一個請求可對應多個響應(服務器推送)
基于TCP連接的缺點:
- 隊頭阻塞(TCP連接)
- TCP和TLS的握手延遲
- 網絡遷移重連
5、3.0
使用QUIC協議解決TCP的缺點
HTTPS的執行流程
- 客戶端發送加密請求
- 服務器產生一對公鑰和私鑰,將自己的公鑰發給CA證書機構,CA機關使用自己的私鑰加密,產生CA證書
- 服務端響應客戶端請求,發送CA機關的數字證書給客戶端
- 客戶端解析數字證書(瀏覽器保存有CA機關公鑰),驗證是否合法
- 客戶端隨機生成一個數給服務端Key
- 客戶端對Key使用服務端的公鑰加密,發送給服務端作為對稱加密的密鑰
- 服務端對收到的請求使用自己的私鑰解析,得到對稱加密的密鑰
- 之后服務端和客戶端之間通過Key加密通信
中間人攻擊
-
客戶端發送加密請求
-
中間人捕獲請求,將請求轉發給服務器
-
中間人得到服務器的公鑰,自己生成一對公鑰和私鑰,將自己的公鑰發送給客戶端