HTTP 和 HTTPS 之間除了安全性區別外,還有哪些區別
來源:waynblog
HTTP 和 HTTPS 是兩種常見的網路協議,它們都是用於在瀏覽器和伺服器之間傳輸資料的。但是,它們之間也有一些重要的區別,這些區別涉及到資料的安全性、傳輸效能、使用成本和搜尋排名等方面。本文將從以下幾個方面來介紹 HTTP 和 HTTPS 的區別,本文內容大綱如下:
資料的安全性
HTTP 協議是一種明文傳輸協議,它不對資料進行任何加密或驗證,這意味著任何人都可以在網路上截獲、檢視或修改 HTTP 傳輸的資料,這就存在很大的安全風險,尤其是對於一些敏感的資訊,如使用者名稱、密碼、銀行卡號、身份證號等。
HTTPS 協議是一種安全傳輸協議,它在 HTTP 的基礎上增加了 SSL/TLS 層,SSL/TLS 是一種加密和認證技術,它可以對資料進行加密、解密、簽名和驗證,這樣就可以保證資料的機密性、完整性和身份真實性,防止資料被第三方竊取或篡改。
如上圖,HTTPS 流程包含握手和後續的資料傳輸,握手的目的是為了客戶端與服務端協商加密演算法等引數。
HTTPS 協議的工作原理大致如下:
客戶端首次請求伺服器,告訴伺服器自己支援的協議版本,支援的加密演算法及壓縮演算法,並生成一個隨機數(client random)告知伺服器。
客戶端需要提供的資訊:
支援的協議版本,如 TSL1.0 版本 客戶端生成的隨機數,用以稍後生成對稱金鑰 支援的加密演算法;支援的壓縮方法等
伺服器確認雙方使用的加密方法,並返回給客戶端證書以及一個伺服器生成的隨機數(server random)
伺服器需要提供的資訊:
協議的版本 加密的演算法 伺服器生成的隨機數 伺服器證書
客戶端收到證書後,首先驗證證書的有效性,然後生成一個新的隨機數(premaster secret),並使用數字證書中的公鑰,加密這個隨機數,傳送給伺服器。
客戶端會對伺服器下發的證書進行驗證,驗證透過後,客戶端會再次生成一個隨機數(premaster secret),然後使用伺服器證書中的公鑰進行加密,以及放一個 ChangeCipherSpec 訊息即編碼改變的訊息,還有整個前面所有訊息的 hash 值,進行伺服器驗證,然後用新秘鑰加密一段資料一併傳送到伺服器,確保正式通訊前無誤。
伺服器接收到加密後的隨機數後,使用私鑰進行解密,獲取這個隨機數(premaster secret)。
最後,伺服器和客戶端根據約定的加密方法,使用前面提到的三個隨機數(client random, server random, premaster secret),生成對稱金鑰,用來加密接下來的整個對話過程。服務端用對稱金鑰加密響應資料傳給客戶端,客戶端用對稱金鑰解密響應資料,得到明文資料。
傳輸效能
要討論傳輸效能,需要針對不同的 HTTP 版本做說明,
HTTPS VS HTTP 1.1
在 HTTP 1.1 中,HTTP 1.1 的效能比 HTTPS 還要好一些,主要是因為 HTTPS 只是在 HTTP 1.1 協議上增加了 SSL/TLS 層,沒有其他方面的修改。
增加了 SSL/TLS 層後,需要額外的加密和解密的過程,這會增加資料的處理時間和傳輸時間,同時也會消耗更多的 CPU 和記憶體資源。另外 HTTPS 協議還需要進行證書的驗證和金鑰的協商,這也會增加連線的建立時間。
HTTP 1.1 連線建立過程只需要進行 TCP 的三次握手,而 HTTPS 協議的連線建立過程還需要進行 SSL/TLS 的握手,這會多出至少 6 次的往返時間(RTT)。
因此,HTTPS 的連線建立時間要比 HTTP 1.1 的連線建立時間長得多。
HTTP 2 VS HTTP 1.1
HTTP 2 比起 HTTP 1.1 的效能提升就比較多了,主要有以下幾點。
二進位制分幀
HTTP 2 使用二進位制分幀,可以減少資料的大小和格式的複雜度,提高資料的傳輸效率。
它主要修改了 HTTP 1.1 的報文傳輸格式。HTTP 1.1 以換行符作為純文字的分隔符,而 HTTP 2 將所有傳輸的資訊分割為更小的訊息和幀,並採用二進位制格式對它們編碼,這些幀對應著特定資料流中的訊息,他們都在一個 TCP 連線內複用。
多路複用
HTTP 2 支援多路複用,可以在一個連線上併發傳輸多個請求和響應,避免了隊頭阻塞和重複建立連線的開銷。
HTTP 2 可以在共享 TCP 連線的基礎上同時傳送請求和響應。HTTP 訊息可以被分解為獨立的幀,而不破壞訊息本身順序的情況下交錯發出去,在另一端根據流識別符號和首部將他們重新組裝起來。透過多路複用技術,可以避免 HTTP 舊版本的訊息頭阻塞問題,極大提高傳輸效能。
首部壓縮
HTTP 2 支援首部壓縮,可以減少資料的傳輸量,節省了網路的頻寬。
HTTP 2 使用了 HPACK 演算法來壓縮頭欄位,這種壓縮格式對傳輸的頭欄位進行編碼,減少了頭欄位的大小。同時,在兩端維護了索引表,用於記錄出現過的頭欄位,後面在傳輸過程中就可以傳輸已經記錄過的頭欄位的索引號,對端收到資料後就可以透過索引號找到對應的值。對比 HTTP 1.1 使用文字的形式傳輸訊息頭,HTTP 2 的首部壓縮可以減少請求資源大小。
HTTP 2 缺點
說了這麼多 HTTP 2 的優點,那 HTTP 2 的缺點我們也需要清楚。
HTTP 2 建立連線的延時:HTTP 2 仍然基於 TCP 協議,因此需要進行 TCP 的三次握手和 TLS 的握手,這會消耗一定的時間,影響資料的傳輸效率。 HTTP 2 隊頭阻塞沒有徹底解決:HTTP 2 雖然支援多路複用,可以在一個連線上併發傳輸多個請求和響應,但是如果其中一個資料流發生了丟包或延遲,那麼整個 TCP 連線都會受到影響,導致後續的資料流也被阻塞。 HTTP 2 多路複用容易超時:HTTP 2 的多路複用技術使得多個請求其實是基於同一個 TCP 連線的,那麼如果某一個請求的處理時間過長,那麼多個請求都可能超過客戶端的超時時間,導致請求失敗。
HTTP 3 VS HTTP 2
HTTP 3 相比 HTTP 2 的提升可以說是全方位的,底層的傳輸協議由 TCP 協議改為使用基於 UDP 協議的 QUIC 協議,在應用層實現了擁塞控制、可靠傳輸的特性。
優點
HTTP 3 的優點主要體現在它使用了 QUIC 協議,可以減少握手的延遲,提高連線的穩定性,支援更高效的多路複用,以及更好的適應網路變化等
缺點
HTTP 3 的缺點主要體現在它仍然存在一些相容性和穩定性的問題,有時候甚至會比 HTTP 2 稍微慢一點。這可能是由於擁塞控制演算法的不同,或者是由於網路裝置和防火牆對 UDP 的限制或過濾所導致的。
大家可以看到不同 HTTP 版本之間的效能差異是很大的。HTTP 2 和 HTTP 3 都是預設建立在 HTTPS 之上的。所以如果想要更高的 HTTP 協議傳輸效能的話,可以使用 HTTP 2 或者 HTTP 3 協議。
使用成本
HTTP 的使用成本比起 HTTPS 而言就低的多了,主要是因為 HTTPS 協議需要申請和維護數字證書,這通常需要一定的費用,而且證書的有效期有限,需要定期更新
在業務開發中一個阿里雲 HTTPS CA 的企業級證書一年的價格通常需要幾千人名幣.
另外,HTTPS 也需要消耗一丟丟的伺服器資源,因為 TLS 層的加密和解密過程也需要 CPU 參與計算。
與之相比,HTTP 不需要申請和維護數字證書,也不需要更多的伺服器資源,所以說 HTTP 協議的使用成本更低。
搜尋排名
HTTPS 協議的搜尋排名優於 HTTP 協議,主要是因為 HTTPS 協議可以提高使用者的信任度和安全感,從而提高使用者的訪問量和停留時間,這些都是搜尋引擎最佳化(SEO)的重要因素。
另外,一些主流的搜尋引擎,如 Google 和百度,也明確表示,HTTPS 協議是搜尋排名的一個重要權重指標,也就是說,HTTPS 網站比 HTTP 網站在搜尋排名中更有優勢。
HTTP 協議由於安全性較差,可能會導致使用者的流失和不滿,從而影響使用者的訪問量和停留時間,這些都會降低搜尋引擎最佳化(SEO)的效果。而且,HTTP 協議也沒有得到搜尋引擎的青睞,因此 HTTP 協議的搜尋排名較低。
綜上所述,HTTPS 協議在安全性和搜尋排名方面有明顯的優勢,而 HTTP 協議只是在成本控制方面會好一點。
隨著網際網路的發展,HTTPS 協議已經成為越來越多網站的選擇,而 HTTP 協議已經逐漸被淘汰。因此,建議網站的開發者和運營者儘快將 HTTP 協議升級為 HTTPS 協議,以提高網站的安全性和競爭力。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2997334/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HTTP和HTTPS有哪些區別?HTTP
- HTTP和HTTPS的區別有哪些?HTTP
- HTTP和HTTPS有什麼區別?HTTP
- http和https的區別HTTP
- HTTPS和HTTP的區別HTTP
- http和https的區別?HTTP
- HTTPS 和 HTTP 的區別HTTP
- http和https的區別/get和post的區別HTTP
- HTTP和HTTPS有什麼主要的區別?HTTP
- HTTPS 和 HTTP 的主要區別HTTP
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- 什麼是HTTP? HTTP 和 HTTPS 的區別?HTTP
- http與https的區別HTTP
- HTTP 與 HTTPS 的區別HTTP
- 前端面試http和https的區別前端面試HTTP
- HTTP和HTTPS有什麼區別?如何實現網站的HTTPS?HTTP網站
- nodejs和js之間有什麼區別?NodeJS
- VPS和HTTP有什麼區別?HTTP
- HTTP1.0,HTTP1.1,HTTPS和HTTP2.0的區別HTTP
- @Autowired和@Resource有哪些區別
- .NET面試題(29) http和https的區別面試題HTTP
- HTTP與HTTPS代理有何區別?HTTP工作流程介紹HTTP
- http和https有何區別?恆訊科技總結這11點HTTP
- HTTPS、SSL、TLS三者之間的聯絡和區別HTTPTLS
- htmlentities和htmlspecialchars 的區別有哪些HTML
- Python和C#有哪些區別?PythonC#
- HTML5有哪些儲存型別?它們之間有什麼區別?HTML型別
- SSL證書是什麼?HTTP和HTTPS的區別HTTP
- https和http有什麼區別?看下面介紹就知道了!HTTP
- 敏捷和 Scrum 之間的區別敏捷Scrum
- querySelector和getElementById之間的區別
- @Bean和@Component之間的區別?Bean
- 什麼是HTTPS證書?HTTP與HTTPS的區別HTTP
- apt 和 apt-get 之間有什麼區別?apt-get
- tcp和http的區別TCPHTTP
- websocket和http的區別WebHTTP
- python堆和棧的區別有哪些Python
- http與https的區別我真的知道嗎HTTP