自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試官問 HTTPS 是怎么從 HTTP 轉(zhuǎn)過來的,我有點懵

網(wǎng)絡(luò) 通信技術(shù)
這段時間畢竟也是 “金九銀十” 的面試的黃金季節(jié),阿粉當(dāng)然也想去面試,但是因為自身受限,所以只能采訪一下出去面試的同學(xué)們都問了什么內(nèi)容,其中有一個,阿粉覺得有必要給大家分享一下,就是問關(guān)于 HTTP 的內(nèi)容。

[[433441]]

這段時間畢竟也是 “金九銀十” 的面試的黃金季節(jié),阿粉當(dāng)然也想去面試,但是因為自身受限,所以只能采訪一下出去面試的同學(xué)們都問了什么內(nèi)容,其中有一個,阿粉覺得有必要給大家分享一下,就是問關(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ù)器之間的通信格式,默認使用80端口。

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

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

HTTP缺點

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

  • 簡單、靈活、易于擴展
  • 應(yīng)用廣泛、環(huán)境成熟
  • 無狀態(tài) (不需要額外的資源來記錄狀態(tài)信息)

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

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

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

這時候我們就想到了一個事情,加密處理一下不就好了?

對,完全沒問題,HTTP 沒有加密的機制,但是我們可以想辦法處理,這個辦法就是:

  • SSL 或者 TLS
  • SSL: 安全套接層
  • TLS:安全層傳輸協(xié)議

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

HTTPS

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

分辨 HTTPS 最簡單的方法就是,你在瀏覽器訪問的時候,能夠看到一個小鎖的標識。

現(xiàn)在百分之90以上的網(wǎng)站不都是使用的 HTTPS 么,我們使用抓包工具來看一下 HTTPS 的傳輸內(nèi)容試試。

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

這時候我們就得來完整的分析 HTTPS 的安全通信機制了。來看個圖看一下 然后我們再拿我們的抓包工具來進行分析。

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

第一步:Client Hello

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

第二步:Server Hello

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

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

證書的目的實際上就是保證標識的身份,證書一般采用X.509標準。

第四步:Server Key Exchange

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

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

第五步:Client Key Exchange

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

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

第六步:Change Cipher Spec

客戶端發(fā)送 Change Cipher Spec 報文,提示服務(wù)器編碼改變,就是說以后我們再發(fā)消息的時候,我是用之前我們定義的密鑰進行加密。

第七步:Client Finished

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

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

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

實際上作用和 Client 差不多。

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

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

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

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

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

文章參考 

《圖解HTTP》

 

責(zé)任編輯:武曉燕 來源: Java極客技術(shù)
相關(guān)推薦

2021-05-12 08:20:53

開發(fā)

2021-03-24 10:25:24

優(yōu)化VUE性能

2021-02-19 10:02:57

HTTPSJava安全

2021-05-13 07:58:05

HTTPSHTTP安全

2020-06-22 08:50:27

Spring AOP代理

2022-04-10 18:10:24

CURD鏈表

2024-08-23 09:02:56

2022-01-05 09:55:26

asynawait前端

2022-10-17 00:04:30

索引SQL訂單

2022-10-12 14:39:27

Streammappeek

2021-11-08 09:18:01

CAS面試場景

2022-11-04 08:47:52

底層算法數(shù)據(jù)

2021-12-25 22:31:10

MarkWord面試synchronize

2009-06-30 14:06:49

求職者面試官

2017-03-16 15:27:10

面試官測試技術(shù)

2025-03-07 02:00:00

webpackPlugin開發(fā)

2025-03-10 03:00:00

CSSline字體

2021-01-18 05:13:04

TomcatHttp

2021-12-16 18:38:13

面試Synchronize

2021-11-12 06:39:51

Tomcat連接器面試
點贊
收藏

51CTO技術(shù)棧公眾號