天天看點

HTTP/HTTPS及CDN 原理

HTTP 是一個無狀态的協定。無狀态是指客戶機(Web 浏覽器)和伺服器之間不需要建立持久的連接配接,這意味着當一個用戶端向伺服器端送出請求,然後伺服器傳回響應(response),連接配接就被關閉了,在伺服器端不保留連接配接的有關資訊.HTTP 遵循請求(Request)/應答(Response)模型。客戶機(浏覽器)向伺服器發送請求,伺服器處理請求并傳回适當的應答。所有 HTTP 連接配接都被構造成一套請求和應答。

傳輸流程

  1. 位址解析

    如用用戶端浏覽器請求這個頁面:http://localhost.com:8080/index.htm 從中分解出協定名、主機名、

    端口、對象路徑等部分,對于我們的這個位址,解析得到的結果如下:

    協定名:http

    主機名:localhost.com

    端口:8080

    對象路徑:/index.htm

    在這一步,需要域名系統 DNS 解析域名 localhost.com,得主機的 IP 位址。

  2. 封裝 HTTP 請求資料包

    把以上部分結合本機自己的資訊,封裝成一個 HTTP 請求資料包

  3. 封裝成 TCP 包并建立連接配接

    封裝成 TCP 包,建立 TCP 連接配接(TCP 的三次握手)

  4. 客戶機發送請求指令:建立連接配接後,客戶機發送一個請求給伺服器,請求方式的格式為:統一資源辨別符(URL)、協定版本号,後邊是 MIME 資訊包括請求修飾符、客戶機資訊和可内容。
  5. 伺服器響應

    伺服器接到請求後,給予相應的響應資訊,其格式為一個狀态行,包括資訊的協定版本号、一個成功或錯誤的代碼,後邊是 MIME 資訊包括伺服器資訊、實體資訊和可能的内容。

  6. 伺服器關閉 TCP 連接配接

    伺服器關閉 TCP 連接配接:一般情況下,一旦 Web 伺服器向浏覽器發送了請求資料,它就要關閉 TCP 連接配接,然後如果浏覽器或者伺服器在其頭資訊加入了這行代碼 Connection:keep-alive,TCP 連接配接在發送後将仍然保持打開狀态,于是,浏覽器可以繼續通過相同的連接配接發送請求。保持連接配接節省了為每個請求建立新連接配接所需的時間,還節約了網絡帶寬。

    HTTP/HTTPS及CDN 原理

HTTPS

HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目标的HTTP 通道,簡單講是 HTTP 的安全版。即 HTTP 下加入 SSL 層,HTTPS 的安全基礎是 SSL。其所用

的端口号是 443。 過程大緻如下:

建立連接配接獲驗證書

1) SSL 用戶端通過 TCP 和伺服器建立連接配接之後(443 端口),并且在一般的 tcp 連接配接協商(握手)過程中請求證書。即用戶端發出一個消息給伺服器,這個消息裡面包含了自己可實作的算法清單和其它一些需要的消息,SSL 的伺服器端會回應一個資料包,這裡面确定了這次通信所需要的算法,然後伺服器向用戶端傳回證書。(證書裡面包含了伺服器資訊:域名。申請證書的公司,公共秘鑰)。

證書驗證

2) Client 在收到伺服器傳回的證書後,判斷簽發這個證書的公共簽發機構,并使用這個機構的公共秘鑰确認簽名是否有效,用戶端還會確定證書中列出的域名就是它正在連接配接的域名。

資料加密和傳輸

3) 如果确認證書有效,那麼生成對稱秘鑰并使用伺服器的公共秘鑰進行加密。然後發送給伺服器,伺服器使用它的私鑰對它進行解密,這樣兩台計算機可以開始進行對稱加密進行通信。

HTTP/HTTPS及CDN 原理

CDN 原理

CND 一般包含分發服務系統、負載均衡系統和管理系統

  • 分發服務系統

    其基本的工作單元就是各個 Cache 伺服器。負責直接響應使用者請求,将内容快速分發到使用者;同時還負責内容更新,保證和源站内容的同步。

    根據内容類型和服務種類的不同,分發服務系統分為多個子服務系統,如:網頁加速服務、流媒體加速服務、應用加速服務等。每個子服務系統都是一個分布式的服務叢集,由功能類似、地域接近的分布部署的 Cache 叢集組成。

    在承擔内容同步、更新和響應使用者請求之外,分發服務系統還需要向上層的管理排程系統回報各個Cache 裝置的健康狀況、響應情況、内容緩存狀況等,以便管理排程系統能夠根據設定的政策決定由哪個 Cache 裝置來響應使用者的請求。

  • 負載均衡系統

    負載均衡系統是整個 CDN 系統的中樞。負責對所有的使用者請求進行排程,确定提供給使用者的最終通路位址。

    使用分級實作。最基本的兩極排程體系包括全局負載均衡(GSLB)和本地負載均衡(SLB)。

    GSLB 根據使用者位址和使用者請求的内容,主要根據就近性原則,确定向使用者服務的節點。一般通過 DNS解析或者應用層重定向(Http 3XX 重定向)的方式實作。

    SLB 主要負責節點内部的負載均衡。當使用者請求從 GSLB 排程到 SLB 時,SLB 會根據節點内各個Cache 裝置的工作狀況和内容分布情況等對使用者請求重定向。SLB 的實作有四層排程(LVS)、七層排程(Nginx)和鍊路負載排程等。

  • 管理系統

    分為營運管理和網絡管理子系統。

    網絡管理系統實作對 CDN 系統的裝置管理、拓撲管理、鍊路監控和故障管理,為管理者提供對全網資源的可視化的集中管理,通常用 web 方式實作。

    營運管理是對 CDN 系統的業務管理,負責處理業務層面的與外界系統互動所必須的一些收集、整理、傳遞工作。包括使用者管理、産品管理、計費管理、統計分析等。

    HTTP/HTTPS及CDN 原理

繼續閱讀