深入HTTPS系列一(HTTP&HTTPS)

由于iOS即將強(qiáng)制使用HTTPS,所以最近花時(shí)間再次深入研究了一下HTTPS。
該篇主要先講一些HTTPS術(shù)語。

1、HTTP是什么

首先,HTTP 是一個(gè)網(wǎng)絡(luò)應(yīng)用層協(xié)議,是專門用來幫你傳輸 Web 內(nèi)容。

2、HTTP 和 TCP 之間的關(guān)系

在網(wǎng)絡(luò)分層模型中,TCP 被稱為“傳輸層協(xié)議”,而 HTTP 被稱為“應(yīng)用層協(xié)議”。

傳輸層主要有兩個(gè)協(xié)議,分別是 TCP 和 UDP。TCP 比 UDP 更可靠。你可以把 TCP 協(xié)議想象成某個(gè)水管,發(fā)送端這頭進(jìn)水,接收端那頭就出水。并且 TCP 協(xié)議能夠確保,先發(fā)送的數(shù)據(jù)先到達(dá)(UDP 不保證這點(diǎn))。

簡單地說,HTTP 協(xié)議需要依靠 TCP 協(xié)議來傳輸數(shù)據(jù)。

3、HTTP 協(xié)議如何使用 TCP 連接?

HTTP 對 TCP 連接的使用,分為兩種方式:俗稱“短連接”和“長連接”。

在“短連接”的模式下,瀏覽器會先發(fā)起一個(gè) TCP 連接,拿到該網(wǎng)頁的 HTML 源代碼(拿到 HTML 之后,這個(gè) TCP 連接就關(guān)閉了)。然后,瀏覽器開始分析這個(gè)網(wǎng)頁的源碼,知道這個(gè)頁面包含很多外部資源(圖片、CSS、JS)。然后針對【每一個(gè)】外部資源,再分別發(fā)起一個(gè)個(gè) TCP 連接,把這些文件獲取到本地(同樣的,每抓取一個(gè)外部資源后,相應(yīng)的 TCP 就斷開)

如果是“長連接”的方式,瀏覽器也會先發(fā)起一個(gè) TCP 連接去抓取頁面。但是抓取頁面之后,該 TCP 連接并不會立即關(guān)閉,而是暫時(shí)先保持著(所謂的“Keep-Alive”)。然后瀏覽器分析 HTML 源碼之后,發(fā)現(xiàn)有很多外部資源,就用剛才那個(gè) TCP 連接去抓取此頁面的外部資源。

在 HTTP 1.0 版本,【默認(rèn)】使用的是“短連接”(那時(shí)候是 Web 誕生初期,網(wǎng)頁相對簡單,“短連接”的問題不大);
到了1995年底開始制定 HTTP 1.1 草案的時(shí)候,網(wǎng)頁已經(jīng)開始變得復(fù)雜(網(wǎng)頁內(nèi)的圖片、腳本越來越多了)。這時(shí)候再用短連接的方式,效率太低下了。所以,在 HTTP 1.1 中,【默認(rèn)】采用的是“Keep-Alive”的方式。

4、“SSL/TLS”又是什么?

SSL(Secure Sockets Layer),中文叫做“安全套接層”。它是在上世紀(jì)90年代中期,由網(wǎng)景公司設(shè)計(jì)的。
為啥要發(fā)明 SSL 這個(gè)協(xié)議捏?因?yàn)樵然ヂ?lián)網(wǎng)上使用的 HTTP 協(xié)議是明文的,存在很多缺點(diǎn)——比如傳輸內(nèi)容會被偷窺(嗅探)和篡改。發(fā)明 SSL 協(xié)議,就是為了解決這些問題。
后來SSL 因應(yīng)用廣泛,便被標(biāo)準(zhǔn)化。且名稱改為 TLS(Transport Layer Security),中文叫做“傳輸層安全協(xié)議”。
很多相關(guān)的文章都把這兩者并列稱呼(SSL/TLS),因?yàn)檫@兩者可以視作同一個(gè)東西的不同階段。

5、“HTTPS”是啥意思?

解釋完 HTTP 和 SSL/TLS,現(xiàn)在就可以來解釋 HTTPS 啦。咱們通常所說的 HTTPS 協(xié)議,說白了就是“HTTP 協(xié)議”和“SSL/TLS 協(xié)議”的組合。

你可以把 HTTPS 大致理解為——“HTTP over SSL/TLS”
Https的作用:
身份認(rèn)證 認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;(通道端可靠)
內(nèi)容加密 建立一個(gè)信息安全通道,來保證數(shù)據(jù)不被竊聽;(通道加密)
數(shù)據(jù)完整性 防止內(nèi)容被第三方篡改;(避免通道劫持)

6、HTTPS和HTTP的區(qū)別
1、HTTPS協(xié)議需要到ca申請證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用。
2、HTTP是超文本傳輸協(xié)議,信息是明文傳輸,HTTPS則是具有安全性的SSL加密傳輸協(xié)議。
3、HTTP和HTTPS使用的是完全不同的連接方式,用的端口也不一樣,前者使用的端口是80,后者使用的端口是443。
4、HTTPS的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比HTTP協(xié)議安全。

此文到此結(jié)束!
請繼續(xù)關(guān)注下文,深入HTTPS系列二(加密&證書)

參考資料:
1.HTTP,HTTP2.0,SPDY,HTTPS你應(yīng)該知道的一些事

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容