五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

騰訊面試官問我:HTTPS 是怎么從 HTTP 轉(zhuǎn)過來的?還好我早有準(zhǔn)備

2021-11-06 14:26 作者:C語言編程__Plus  | 我要投稿

這段時(shí)間稍微整理了一下面試題,其中有一個(gè),感覺有必要給大家分享一下,就是問關(guān)于 HTTP 的內(nèi)容。


HTTP

HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(wǎng)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。HTTP 是基于 TCP/IP 協(xié)議通信協(xié)議來傳遞數(shù)據(jù)(HTML 文件、圖片文件、查詢結(jié)果等)。它不涉及數(shù)據(jù)包(packet)傳輸,主要規(guī)定了客戶端和服務(wù)器之間的通信格式,默認(rèn)使用80端口。

這其實(shí)就是百度百科里面的精簡(jiǎn)化的內(nèi)容,雖然說不上太細(xì)致,但是已經(jīng)算是對(duì)HTTP做了一個(gè)大概的描述,我們接下來就從以下的幾個(gè)方面來看一下這個(gè)HTTP吧。

我們從這里就不再多解釋 HTTP報(bào)文 和 主體 這些內(nèi)容了,之前也是完整的給大家解釋過了,包括了 HTTP 的進(jìn)化歷史,今天我們來講講 HTTP 和 HTTPS 的關(guān)系。

HTTP缺點(diǎn)

眾所周知,HTTP 的優(yōu)點(diǎn)那可是一大堆:

簡(jiǎn)單、靈活、易于擴(kuò)展

應(yīng)用廣泛、環(huán)境成熟

無狀態(tài) (不需要額外的資源來記錄狀態(tài)信息)

但是 HTTP 的缺點(diǎn)也是非常的顯著,為什么這么說,HTTP 使用的是明文的方式進(jìn)行傳輸,雖然方便了我們的調(diào)試,但是信息會(huì)被暴露出來,每一個(gè)環(huán)節(jié)沒有隱私可言。

而且 HTTP 在我們的認(rèn)知當(dāng)中,他就是一個(gè)不安全的,第一個(gè)原因是上面說的明文,還有就是 HTTP 不驗(yàn)證通信雙方的身份,所以對(duì)方的身份有可能偽裝,就像某些公共場(chǎng)所的那些 公共WIFI ,還有就是 HTTP 不能驗(yàn)證報(bào)文的完整性,所以報(bào)文也是有可能被篡改的。

基于這些內(nèi)容,所以我們很多時(shí)候?qū)?HTTP 的選擇都比較慎重,不然你傳輸內(nèi)容的時(shí)候,別人用抓包工具就很容易的能夠分析出你想要傳遞的內(nèi)容。

這時(shí)候我們就想到了一個(gè)事情,加密處理一下不就好了?

對(duì),完全沒問題,HTTP 沒有加密的機(jī)制,但是我們可以想辦法處理,這個(gè)辦法就是:

SSL 或者 TLS

SSL: 安全套接層

TLS:安全層傳輸協(xié)議

當(dāng)他們組合使用的時(shí)候,就能夠加密 HTTP 的通信的內(nèi)容了,這時(shí)候就能在這條線路上進(jìn)行通信,而通過 SSL組合使用后的 HTTP 被稱為 HTTPS 或者稱之為 HTTP overSSL。


HTTPS

大白話說一下,HTTP 在加上加密處理和認(rèn)證以及完整性保護(hù)之后就是 HTTPS。

分辨 HTTPS 最簡(jiǎn)單的方法就是,你在瀏覽器訪問的時(shí)候,能夠看到一個(gè)小鎖的標(biāo)識(shí)。


現(xiàn)在百分之90以上的網(wǎng)站不都是使用的 HTTPS 么,

我們使用抓包工具來看一下 HTTPS 的傳輸內(nèi)容試試。


我們從中看到了TLS 的版本,還有沒有截圖上的隨機(jī)數(shù)。

這時(shí)候我們就得來完整的分析 HTTPS 的安全通信機(jī)制了。來看個(gè)圖看一下 然后我們?cè)倌梦覀兊淖グぞ邅磉M(jìn)行分析。

上面這是 HTTPS 的安全通信的機(jī)制,我們分別來看看都干了什么。

第一步:Client Hello

客戶端通過 發(fā)送 Client Hello 報(bào)文開始 SSL/TSL 通信。其中包含了 SSL/TSL 的版本,所使用的加密的方法等一系列的內(nèi)容。

第二步:Server Hello

服務(wù)端根據(jù)客戶端發(fā)送的支持的 SSL/TLS 協(xié)議版本,和自己的比較確定使用的 SSL/TLS 協(xié)議版本。缺點(diǎn)假面算法等內(nèi)容。

第三步:服務(wù)器發(fā)送 Certificate 報(bào)文,報(bào)文中包含了公開密鑰證書

證書的目的實(shí)際上就是保證標(biāo)識(shí)的身份,證書一般采用X.509標(biāo)準(zhǔn)。

第四步:Server Key Exchange

服務(wù)器發(fā)送 Server Hello Done 報(bào)文請(qǐng)求客戶端,第一階段的 SSL/TSL 握手協(xié)商部分結(jié)束。

也有很多人習(xí)慣的稱第四步是 Server Hello Done 實(shí)際上當(dāng)我們抓包的時(shí)候,發(fā)現(xiàn)他們是在一次請(qǐng)求中的,我們一會(huì)抓包看一下試試。Server Hello Done 實(shí)際上就是相當(dāng)于我給你說我這邊發(fā)完畢了。

第五步:Client Key Exchange

完成 SSL/TSL 第一次握手之后,客戶端就發(fā)送 Client Key Exchange 報(bào)文作為回應(yīng),這里實(shí)際上就是為了交換秘鑰參數(shù),


這里客戶端會(huì)再生成一個(gè)隨機(jī)數(shù),然后使用服務(wù)端傳來的公鑰進(jìn)行加密得到密文PreMaster Key。服務(wù)端收到這個(gè)值后,使用私鑰進(jìn)行解密,這樣兩邊的秘鑰就協(xié)商好了。后面數(shù)據(jù)傳輸就可以用協(xié)商好的秘鑰進(jìn)行加密和解密。

第六步:Change Cipher Spec

客戶端發(fā)送 Change Cipher Spec 報(bào)文,提示服務(wù)器編碼改變,就是說以后我們?cè)侔l(fā)消息的時(shí)候,我是用之前我們定義的密鑰進(jìn)行加密。

第七步:Client Finished

戶端將前面的握手消息生成摘要再用協(xié)商好的秘鑰加密,這是客戶端發(fā)出的第一條加密消息,這一步也是比較關(guān)鍵的一步,這次的操作的成功與否,就得看服務(wù)器是否能夠成功解密這次的報(bào)文來作為判斷依據(jù)了。

第八步:服務(wù)器發(fā)送 Change Cipher Spec

第九步:服務(wù)器發(fā)送Server Finished 報(bào)文

實(shí)際上作用和 Client 差不多。

第十步:服務(wù)端和客戶端的 Finished 交換完成了,這時(shí)候 SSL/TSL 的連接就OK了,發(fā)送信息也就是完整的稱為 HTTPS 了

最后就是進(jìn)行數(shù)據(jù)傳輸?shù)膬?nèi)容了。

既然 HTTPS 都是安全的了,為什么不大范圍的廣泛使用呢?

實(shí)際上加密通信雖然在一定程度上保護(hù)了數(shù)據(jù)的隱私,但是效率比較低,每一次通信都要加密,會(huì)消耗資源,如果包含一些錢的肯定那必須得使用加密的通信,而且主要證書要收費(fèi)呀。

你要想用,那肯定需要證書,就像大家在做微信支付的時(shí)候,不是也需要購(gòu)買證書么,一般一年怎么也得幾百塊錢,所以你知道 HTTP 和 HTTPS 的關(guān)系了么?

文章參考:《圖解HTTP》

好了,本篇文章就給大家分享到這里,覺得內(nèi)容對(duì)你有用的話,記得支持一下喲!

如果你也喜歡編程,想好C/C++的話!如果你也想讓自己成為一個(gè)具有真材實(shí)料的厲害的程序員,不妨從現(xiàn)在開始!

微信公眾號(hào):C語言編程學(xué)習(xí)基地

C語言零基礎(chǔ)入門教程(83集全)

整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!



騰訊面試官問我:HTTPS 是怎么從 HTTP 轉(zhuǎn)過來的?還好我早有準(zhǔn)備的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
财经| 垣曲县| 美姑县| 新乡县| 鄄城县| 池州市| 宣化县| 玛纳斯县| 金昌市| 楚雄市| 鄢陵县| 法库县| 广西| 赤壁市| 定兴县| 亚东县| 临邑县| 棋牌| 江口县| 松原市| 凤翔县| 永定县| 若羌县| 上高县| 昌都县| 杭锦后旗| 旬邑县| 和龙市| 江达县| 营口市| 霍城县| 齐齐哈尔市| 师宗县| 同江市| 炎陵县| 石屏县| 同德县| 广平县| 望江县| 郯城县| 莱阳市|