日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP和HTTPS协议及工作原理分析

發布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP和HTTPS协议及工作原理分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?HTTP協議概念

HTTP協議(HyperText Transfer Protocol,超文本傳輸協議,屬于應用層)是用于從服務器傳輸超內容到本地瀏覽器的傳送協議。是一個無狀態的協議

想了解http,就需要了解TCP,IP協議。因為http是基于TCP,IP層上面的。如下圖所示:

整張圖應該從下邊向上看,假設別人想發一條信息給我的電腦。首先是通過網絡把信息傳導到的電腦,但不能說我的電腦對于所有的信息都接受,我會判斷信息,之后在處理信息,這些就是七層模型做的事情。一步一步分開來看 ,并用打電話這一創建的例子來對應:

  • 物理層 包括物理連網媒介,實際上就是布線、光纖、網卡和其它用來把兩臺網絡通信設備連接在一起的東西。它規定了激活、維持、關閉通信端點之間的機械特性、電氣特性、功能特性以及過程特性。(這就相當于電信公司的信號發射塔,接收信號而已)
  • 數據鏈路層 數據鏈路層主要作用是控制網絡層與物理層之間的通信。它保證了數據在不可靠的物理線路上進行可靠的傳遞。它把從網絡層接收到的數據分割成特定的可被物理層傳輸的幀,保證了傳輸的可靠性。(相當于發射塔讓接受的信號更穩定,方便下一層的解讀)
  • 網絡層 很多人經常混淆2層和3層的相關問題,簡單來說,如果你在談論一個與IP地址、路由協議或地址解析協議(ARP)相關的問題,那么這就是第三層的問題。  網絡層負責對子網間的數據包進行路由選擇,它通過綜合考慮發送優先權、網絡擁塞程度、服務質量以及可選路由的花費來決定從一個網絡中兩個節點的最佳路徑。另外,它還可以實現擁塞控制、網際互連等功能 (相當于我們打一個長途電話,當前連接的發射站不能直接傳遞給另一用戶,需要先傳遞給附近的發射站)
    到這里為止,其實信息還沒有傳遞到我們的電腦,可以理解為信息在路由網絡間傳遞。
  • 傳輸層 是OSI模型中最重要的一層,它是兩臺計算機經過網絡進行數據通信時,第一個端到端的層次,起到緩沖作用。當網絡層的服務質量不能滿足要求時,它將提高服務,以滿足高層的要求;而當網絡層服務質量較好時,它只需進行很少的工作。另外,它還要處理端到端的差錯控制和流量控制等問題,最終為會話提供可靠的,無誤的數據傳輸。(相當于我們找到了最后的信號站,可以直接發送信號給通話者,但是這層會做一些數據的整合等工作)
  • 會話層 會話層負責在網絡中的兩節點之間建立和維持通信,并保持會話獲得同步,它還決定通信是否被中斷以及通信中斷時決定從何處重新發送。
  • 表示層 表示層的作用是管理數據的解密與加密,如常見的系統口令處理,當你的賬戶數據在發送前被加密,在網絡的另一端,表示層將對接收到的數據解密。另外,表示層還需對圖片和文件格式信息進行解碼和編碼。 (相當于發射塔給手機發送一些壓縮的信息,我們手機接收到后解碼)
  • 應用層   簡單來說,應用層就是為操作系統或網絡應用程序提供訪問網絡服務的接口,包括文件傳輸、文件管理以及電子郵件等的信息處理。  應用層協議的代表包括:Telnet、FTP、HTTP、SNMP等。 (這就是真正的收到信息,相當于我們聽到了對方的聲音,這次對話完成了)
  • 總結起來就是:

    • 信息發出(www)

  • --->發射塔收到不穩定信息流(物理層)
  • ---> 發射塔整理信息流(鏈路層)
  • ---> 發射塔轉給離接收人更近的發射塔(網絡層IP)
  • ---> 發射塔向接收人發送信息(傳輸層TCP)
  • ---> 通話建立(會話層)
  • ---> 解碼信息(表示層)
  • ---> 發出聲音給接收人(應用層HTTP)
    • 看到信息

    對于HTTP網絡應用,我們在網絡層用的是IP,在傳輸層用的是TCP。
    IP: internet protocal。顧名思義,網絡協議。他能確保計算機之間在網絡上互相通信,但是他不檢查消息是否以發送次序到達而沒有損壞,因此,我們需要上一層來檢驗消息。于是有了TCP層
    TCP: 保證信息正確次序,內容不變。同時引入端口分發給不同的服務。同時分割數據為更小的ip包,到達時重組。
    HTTP: 當信息解讀好,我們傳給HTTP層,即為應用層。超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。

    以上是對支撐HTTP的網絡七層的概括,我們需要理解為什么要在http層下面有那么多層,每一層的目的是什么。

    明白了這些之后,問題來了,這七層是怎么知道自己應該怎么解讀數據,而不是說TCP層解讀HTTP層。這里面就是網絡數據的封裝和傳遞了:

    從這個圖中,我們可以看到每一層的數據都會被一個這層的頭信息包裹。
    之后我們在接收到信息時再一層一層讀取信息

    講完http,我們會發現,我們傳遞的信息在網絡上經過那么多物理層的傳輸,保不準會被別人截獲,而我們卻一點也不知道。于是我們想到要加密我們傳輸的數據。因為只有http層信息是我們要的,所以在這一層下面加入一層來加密信息。這一層就是SSL層,同時我們如果想傳給ssl層,我們用端口443.
    ssl層簡稱安全套階層,主要就是加密解密。
    一開始我們會說,我們就讓服務器給我們一個公鑰,每次用他來解密不就行了。但是這種辦法不可以,因為別人同樣可以截獲你的公鑰,畢竟公鑰也是在網絡上傳遞的。
    于是我們就要想一種辦法,讓我們的公鑰也被加密,并且這個加密方式是在服務器或者我們電腦上進行的,這樣才安全

    HTTPS協議

    HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),簡單來講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL。其所用的端口號是443。

    SSL:(Secure Socket Layer,安全套接字層),通過使用證書認證來確保客戶端和網站服務器之間的通信數據是加密安全的。SSL協議位于TCP/IP協議與各種應用層協議之間。

    TLS:TLS(Transport Layer Security,傳輸層安全協議),用于兩個應用程序之間提供保密性和數據完整性。SSL和TLS的主要區別?

    TLS的主要目標是使SSL更安全,并使協議的規范更精確和完善。

    說到HTTPS肯定少不了加解密算法,我們來了解下相關內容

    有兩種基本的加解密算法類型:

    ? 1、對稱加密(symmetrcic encryption):密鑰只有一個,加密解密為同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES,RC5,3DES等;例如我們創建一個帶密碼(口令)的加密壓縮包。當你下次要把這個壓縮文件解開的時候,你需要輸入【同樣的】密碼。在這個例子中,密碼/口令就如同剛才說的“密鑰”。

    ? ?對稱加密主要問題是共享秘鑰,除你的計算機(客戶端)知道另外一臺計算機(服務器)的私鑰秘鑰,否則無法對通信流進行加密解密。解決這個問題的方案是非對稱加密

    ? ?2、非對稱加密:使用兩個秘鑰:公共秘鑰和私有秘鑰。私有秘鑰由一方密碼保存(一般是服務器保存),另一方任何人都可以獲得公共秘鑰。一般來說指:加密時使用公鑰,解密時使用私鑰。

    ? ?這種密鑰成對出現(且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。


    如圖:

    ?

    總結及答疑

    ① 證書驗證階段

  • 瀏覽器發起 HTTPS 請求
  • 服務端返回CA證書(包含公鑰)
  • 客戶端驗證證書是否合法,如果不合法則提示告警
  • ② 數據傳輸階段

  • 當證書驗證合法后,在本地生成隨機數
  • 通過公鑰加密隨機數,并把加密后的隨機數傳輸到服務端
  • 服務端通過私鑰對隨機數進行解密
  • 服務端通過客戶端傳入的隨機數構造對稱加密算法,對返回結果內容進行加密后傳輸
  • 為什么數據傳輸是用對稱加密?

    非對稱加密的加解密效率是非常低的,而在https 的應用場景中通常客戶端端與服務端之間存在大量的ajax交互,非對稱加密的效率是無法接受的;

    另外,在 HTTPS 的場景中只有服務端保存了私鑰,一對公私鑰只能實現單向的加解密,所以 HTTPS 中內容傳輸加密采取的是對稱加密,而不是非對稱加密。

    為什么需要 CA 認證機構頒發證書?

    HTTP 協議被認為不安全是因為傳輸過程容易被監聽、偽造服務器,而 HTTPS 協議主要解決的便是網絡傳輸的安全性問題。

    首先我們假設不存在認證機構,任何人都可以制作證書,這帶來的安全風險便是經典的“中間人攻擊”問題。
    “中間人攻擊”的具體過程如下:


    過程原理:

  • 本地請求被劫持(如DNS劫持等),所有請求均發送到中間人的服務器
  • 中間人服務器返回中間人自己的證書
  • 客戶端創建隨機數,通過中間人證書的公鑰對隨機數加密后傳送給中間人,然后憑隨機數構造對稱加密對傳輸內容進行加密傳輸
  • 中間人因為擁有客戶端的隨機數,可以通過對稱加密算法進行內容解密
  • 中間人以客戶端的請求內容再向正規網站發起請求
  • 因為中間人與服務器的通信過程是合法的,正規網站通過建立的安全通道返回加密后的數據
  • 中間人憑借與正規網站建立的對稱加密算法對內容進行解密
  • 中間人通過與客戶端建立的對稱加密算法對正規內容返回的數據進行加密傳輸
  • 客戶端通過與中間人建立的對稱加密算法對返回結果數據進行解密
  • 由于缺少對證書的驗證,所以客戶端雖然發起的是 HTTPS 請求,但客戶端完全不知道自己的網絡已被攔截,傳輸內容被中間人全部竊取。

    中間人攻擊:總結起來一句話就是客戶端不知道CA證書是不是合法的,誰都可以冒充合法的服務器,從而獲取到真實的客戶端生成的內容及隨機數相關的值,然后中間人再利用獲取到這些值去和真實的服務器進行https請求(這個過程是合法的,因為中間人這個服務器拿的真實的客戶端數據,模仿真實的客戶端請求)。

    瀏覽器如何驗證證書的合法性?

  • 驗證證書上的域名、有效期等信息是否正確。
  • 判斷證書來源是否合法。每份簽發證書都可以根據驗證鏈查找到對應的根證書,操作系統、瀏覽器會在本地存儲權威機構的根證書,利用本地根證書可以對對應機構簽發證書完成來源驗證;
  • 判斷證書是否被篡改。需要與 CA 服務器進行校驗;
  • 判斷證書是否已吊銷。通過CRL(Certificate Revocation List 證書注銷列表)和 OCSP(Online Certificate Status Protocol 在線證書狀態協議)實現,其中 OCSP 可用于第3步中以減少與 CA 服務器的交互,提高驗證效率
  • 只有認證機構可以生成證書嗎?

    從技術上角度來看誰都可以生成證書,只要有證書就可以完成網站的 HTTPS 傳輸。但是瀏覽器會提示風險。

    用了 HTTPS 會被抓包嗎?

    會,但是得是用戶授權了同意了訪問該網站,只要是用戶主動授權訪問風險網站,都可能造成數據被中間人抓包

    總結

    以上是生活随笔為你收集整理的HTTP和HTTPS协议及工作原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。