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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP和HTTPS协议及工作原理分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?HTTP協(xié)議概念

HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議,屬于應(yīng)用層)是用于從服務(wù)器傳輸超內(nèi)容到本地瀏覽器的傳送協(xié)議。是一個(gè)無(wú)狀態(tài)的協(xié)議

想了解http,就需要了解TCP,IP協(xié)議。因?yàn)閔ttp是基于TCP,IP層上面的。如下圖所示:

整張圖應(yīng)該從下邊向上看,假設(shè)別人想發(fā)一條信息給我的電腦。首先是通過(guò)網(wǎng)絡(luò)把信息傳導(dǎo)到的電腦,但不能說(shuō)我的電腦對(duì)于所有的信息都接受,我會(huì)判斷信息,之后在處理信息,這些就是七層模型做的事情。一步一步分開(kāi)來(lái)看 ,并用打電話(huà)這一創(chuàng)建的例子來(lái)對(duì)應(yīng):

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

    • 信息發(fā)出(www)

  • --->發(fā)射塔收到不穩(wěn)定信息流(物理層)
  • ---> 發(fā)射塔整理信息流(鏈路層)
  • ---> 發(fā)射塔轉(zhuǎn)給離接收人更近的發(fā)射塔(網(wǎng)絡(luò)層IP)
  • ---> 發(fā)射塔向接收人發(fā)送信息(傳輸層TCP)
  • ---> 通話(huà)建立(會(huì)話(huà)層)
  • ---> 解碼信息(表示層)
  • ---> 發(fā)出聲音給接收人(應(yīng)用層HTTP)
    • 看到信息

    對(duì)于HTTP網(wǎng)絡(luò)應(yīng)用,我們?cè)诰W(wǎng)絡(luò)層用的是IP,在傳輸層用的是TCP。
    IP: internet protocal。顧名思義,網(wǎng)絡(luò)協(xié)議。他能確保計(jì)算機(jī)之間在網(wǎng)絡(luò)上互相通信,但是他不檢查消息是否以發(fā)送次序到達(dá)而沒(méi)有損壞,因此,我們需要上一層來(lái)檢驗(yàn)消息。于是有了TCP層
    TCP: 保證信息正確次序,內(nèi)容不變。同時(shí)引入端口分發(fā)給不同的服務(wù)。同時(shí)分割數(shù)據(jù)為更小的ip包,到達(dá)時(shí)重組。
    HTTP: 當(dāng)信息解讀好,我們傳給HTTP層,即為應(yīng)用層。超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。

    以上是對(duì)支撐HTTP的網(wǎng)絡(luò)七層的概括,我們需要理解為什么要在http層下面有那么多層,每一層的目的是什么。

    明白了這些之后,問(wèn)題來(lái)了,這七層是怎么知道自己應(yīng)該怎么解讀數(shù)據(jù),而不是說(shuō)TCP層解讀HTTP層。這里面就是網(wǎng)絡(luò)數(shù)據(jù)的封裝和傳遞了:

    從這個(gè)圖中,我們可以看到每一層的數(shù)據(jù)都會(huì)被一個(gè)這層的頭信息包裹。
    之后我們?cè)诮邮盏叫畔r(shí)再一層一層讀取信息

    講完http,我們會(huì)發(fā)現(xiàn),我們傳遞的信息在網(wǎng)絡(luò)上經(jīng)過(guò)那么多物理層的傳輸,保不準(zhǔn)會(huì)被別人截獲,而我們卻一點(diǎn)也不知道。于是我們想到要加密我們傳輸?shù)臄?shù)據(jù)。因?yàn)橹挥衕ttp層信息是我們要的,所以在這一層下面加入一層來(lái)加密信息。這一層就是SSL層,同時(shí)我們?nèi)绻雮鹘ossl層,我們用端口443.
    ssl層簡(jiǎn)稱(chēng)安全套階層,主要就是加密解密。
    一開(kāi)始我們會(huì)說(shuō),我們就讓服務(wù)器給我們一個(gè)公鑰,每次用他來(lái)解密不就行了。但是這種辦法不可以,因?yàn)閯e人同樣可以截獲你的公鑰,畢竟公鑰也是在網(wǎng)絡(luò)上傳遞的。
    于是我們就要想一種辦法,讓我們的公鑰也被加密,并且這個(gè)加密方式是在服務(wù)器或者我們電腦上進(jìn)行的,這樣才安全

    HTTPS協(xié)議

    HTTPS(全稱(chēng):Hypertext Transfer Protocol over Secure Socket Layer),簡(jiǎn)單來(lái)講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL。其所用的端口號(hào)是443。

    SSL:(Secure Socket Layer,安全套接字層),通過(guò)使用證書(shū)認(rèn)證來(lái)確保客戶(hù)端和網(wǎng)站服務(wù)器之間的通信數(shù)據(jù)是加密安全的。SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間。

    TLS:TLS(Transport Layer Security,傳輸層安全協(xié)議),用于兩個(gè)應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性。SSL和TLS的主要區(qū)別?

    TLS的主要目標(biāo)是使SSL更安全,并使協(xié)議的規(guī)范更精確和完善。

    說(shuō)到HTTPS肯定少不了加解密算法,我們來(lái)了解下相關(guān)內(nèi)容

    有兩種基本的加解密算法類(lèi)型:

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

    ? ?對(duì)稱(chēng)加密主要問(wèn)題是共享秘鑰,除你的計(jì)算機(jī)(客戶(hù)端)知道另外一臺(tái)計(jì)算機(jī)(服務(wù)器)的私鑰秘鑰,否則無(wú)法對(duì)通信流進(jìn)行加密解密。解決這個(gè)問(wèn)題的方案是非對(duì)稱(chēng)加密

    ? ?2、非對(duì)稱(chēng)加密:使用兩個(gè)秘鑰:公共秘鑰和私有秘鑰。私有秘鑰由一方密碼保存(一般是服務(wù)器保存),另一方任何人都可以獲得公共秘鑰。一般來(lái)說(shuō)指:加密時(shí)使用公鑰,解密時(shí)使用私鑰。

    ? ?這種密鑰成對(duì)出現(xiàn)(且根據(jù)公鑰無(wú)法推知私鑰,根據(jù)私鑰也無(wú)法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對(duì)對(duì)稱(chēng)加密速度較慢,典型的非對(duì)稱(chēng)加密算法有RSA、DSA等。


    如圖:

    ?

    總結(jié)及答疑

    ① 證書(shū)驗(yàn)證階段

  • 瀏覽器發(fā)起 HTTPS 請(qǐng)求
  • 服務(wù)端返回CA證書(shū)(包含公鑰)
  • 客戶(hù)端驗(yàn)證證書(shū)是否合法,如果不合法則提示告警
  • ② 數(shù)據(jù)傳輸階段

  • 當(dāng)證書(shū)驗(yàn)證合法后,在本地生成隨機(jī)數(shù)
  • 通過(guò)公鑰加密隨機(jī)數(shù),并把加密后的隨機(jī)數(shù)傳輸?shù)椒?wù)端
  • 服務(wù)端通過(guò)私鑰對(duì)隨機(jī)數(shù)進(jìn)行解密
  • 服務(wù)端通過(guò)客戶(hù)端傳入的隨機(jī)數(shù)構(gòu)造對(duì)稱(chēng)加密算法,對(duì)返回結(jié)果內(nèi)容進(jìn)行加密后傳輸
  • 為什么數(shù)據(jù)傳輸是用對(duì)稱(chēng)加密?

    非對(duì)稱(chēng)加密的加解密效率是非常低的,而在https 的應(yīng)用場(chǎng)景中通常客戶(hù)端端與服務(wù)端之間存在大量的ajax交互,非對(duì)稱(chēng)加密的效率是無(wú)法接受的;

    另外,在 HTTPS 的場(chǎng)景中只有服務(wù)端保存了私鑰,一對(duì)公私鑰只能實(shí)現(xiàn)單向的加解密,所以 HTTPS 中內(nèi)容傳輸加密采取的是對(duì)稱(chēng)加密,而不是非對(duì)稱(chēng)加密。

    為什么需要 CA 認(rèn)證機(jī)構(gòu)頒發(fā)證書(shū)?

    HTTP 協(xié)議被認(rèn)為不安全是因?yàn)閭鬏斶^(guò)程容易被監(jiān)聽(tīng)、偽造服務(wù)器,而 HTTPS 協(xié)議主要解決的便是網(wǎng)絡(luò)傳輸?shù)陌踩詥?wèn)題。

    首先我們假設(shè)不存在認(rèn)證機(jī)構(gòu),任何人都可以制作證書(shū),這帶來(lái)的安全風(fēng)險(xiǎn)便是經(jīng)典的“中間人攻擊”問(wèn)題。
    “中間人攻擊”的具體過(guò)程如下:


    過(guò)程原理:

  • 本地請(qǐng)求被劫持(如DNS劫持等),所有請(qǐng)求均發(fā)送到中間人的服務(wù)器
  • 中間人服務(wù)器返回中間人自己的證書(shū)
  • 客戶(hù)端創(chuàng)建隨機(jī)數(shù),通過(guò)中間人證書(shū)的公鑰對(duì)隨機(jī)數(shù)加密后傳送給中間人,然后憑隨機(jī)數(shù)構(gòu)造對(duì)稱(chēng)加密對(duì)傳輸內(nèi)容進(jìn)行加密傳輸
  • 中間人因?yàn)閾碛锌蛻?hù)端的隨機(jī)數(shù),可以通過(guò)對(duì)稱(chēng)加密算法進(jìn)行內(nèi)容解密
  • 中間人以客戶(hù)端的請(qǐng)求內(nèi)容再向正規(guī)網(wǎng)站發(fā)起請(qǐng)求
  • 因?yàn)橹虚g人與服務(wù)器的通信過(guò)程是合法的,正規(guī)網(wǎng)站通過(guò)建立的安全通道返回加密后的數(shù)據(jù)
  • 中間人憑借與正規(guī)網(wǎng)站建立的對(duì)稱(chēng)加密算法對(duì)內(nèi)容進(jìn)行解密
  • 中間人通過(guò)與客戶(hù)端建立的對(duì)稱(chēng)加密算法對(duì)正規(guī)內(nèi)容返回的數(shù)據(jù)進(jìn)行加密傳輸
  • 客戶(hù)端通過(guò)與中間人建立的對(duì)稱(chēng)加密算法對(duì)返回結(jié)果數(shù)據(jù)進(jìn)行解密
  • 由于缺少對(duì)證書(shū)的驗(yàn)證,所以客戶(hù)端雖然發(fā)起的是 HTTPS 請(qǐng)求,但客戶(hù)端完全不知道自己的網(wǎng)絡(luò)已被攔截,傳輸內(nèi)容被中間人全部竊取。

    中間人攻擊:總結(jié)起來(lái)一句話(huà)就是客戶(hù)端不知道CA證書(shū)是不是合法的,誰(shuí)都可以冒充合法的服務(wù)器,從而獲取到真實(shí)的客戶(hù)端生成的內(nèi)容及隨機(jī)數(shù)相關(guān)的值,然后中間人再利用獲取到這些值去和真實(shí)的服務(wù)器進(jìn)行https請(qǐng)求(這個(gè)過(guò)程是合法的,因?yàn)橹虚g人這個(gè)服務(wù)器拿的真實(shí)的客戶(hù)端數(shù)據(jù),模仿真實(shí)的客戶(hù)端請(qǐng)求)。

    瀏覽器如何驗(yàn)證證書(shū)的合法性?

  • 驗(yàn)證證書(shū)上的域名、有效期等信息是否正確。
  • 判斷證書(shū)來(lái)源是否合法。每份簽發(fā)證書(shū)都可以根據(jù)驗(yàn)證鏈查找到對(duì)應(yīng)的根證書(shū),操作系統(tǒng)、瀏覽器會(huì)在本地存儲(chǔ)權(quán)威機(jī)構(gòu)的根證書(shū),利用本地根證書(shū)可以對(duì)對(duì)應(yīng)機(jī)構(gòu)簽發(fā)證書(shū)完成來(lái)源驗(yàn)證;
  • 判斷證書(shū)是否被篡改。需要與 CA 服務(wù)器進(jìn)行校驗(yàn);
  • 判斷證書(shū)是否已吊銷(xiāo)。通過(guò)CRL(Certificate Revocation List 證書(shū)注銷(xiāo)列表)和 OCSP(Online Certificate Status Protocol 在線(xiàn)證書(shū)狀態(tài)協(xié)議)實(shí)現(xiàn),其中 OCSP 可用于第3步中以減少與 CA 服務(wù)器的交互,提高驗(yàn)證效率
  • 只有認(rèn)證機(jī)構(gòu)可以生成證書(shū)嗎?

    從技術(shù)上角度來(lái)看誰(shuí)都可以生成證書(shū),只要有證書(shū)就可以完成網(wǎng)站的 HTTPS 傳輸。但是瀏覽器會(huì)提示風(fēng)險(xiǎn)。

    用了 HTTPS 會(huì)被抓包嗎?

    會(huì),但是得是用戶(hù)授權(quán)了同意了訪(fǎng)問(wèn)該網(wǎng)站,只要是用戶(hù)主動(dòng)授權(quán)訪(fǎng)問(wèn)風(fēng)險(xiǎn)網(wǎng)站,都可能造成數(shù)據(jù)被中間人抓包

    總結(jié)

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

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。