HTTP和HTTPS总结
HTTP&HTTPS
文章目錄
- HTTP&HTTPS
- 一、HTTP協議的特點
- 1. HTTP是不保存狀態的協議
- 2. 持久連接節省通信量
- 3. 通信使用明文可能會被竊聽
- 4. 不驗證通信方的身份可能被偽裝
- 5. 無法證明報文的完整性,可能被修改
- 二、HTTPS
- 1. HTTPS是身披SSL外衣的HTTP
- 2. 相互交換密鑰的公開密鑰加密技術
- 3. HTTPS協議的缺陷
- 三、總結
- 1.HTTP特點:
- 2.HTTPS特點:
一、HTTP協議的特點
HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議) 的縮寫,是用于從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。
1. HTTP是不保存狀態的協議
http協議是一種不保存狀態,及無狀態的協議,http協議自身不對請求和響應之間的通信狀態進行保存。也就是在http這個級別,協議對發送過的請求或響應都不做持久化處理
使用http協議,每當有新的請求發送時,都會有對應的響應產生。協議自身并不保存之前請求或響應報文的信息,目的是為了更快的處理大量業務,保證協議的可伸縮性,特意把http設計成這樣簡單
但是,隨著網絡的發展,因為http的無狀態使得處理業務變得更加棘手。如用戶登陸到一家網站,即使他跳轉到該站的其他頁面,服務器也應該繼續保持登陸狀態。所以網站為了能夠掌握是誰發送的請求,需要保存用戶的狀態信息
HTTP/1.1雖然是無狀態的協議,但是為了實現可以保持狀態的功能,于是引入Cookie技術
1.1 Cookie技術
HTTP是無狀態的協議,他不對之前發生過的請求和響應的狀態進行管理。也就是說無法根據之前的狀態進行本次的通信
假設要求登陸認證的頁面無法進行自身狀態管理,那么每次跳轉到新頁面,不是要重新登陸認證就是要請求報文中附加參數來完成狀態管理
當然無狀態也有它的優點。由于不用保存狀態,自然就可以減少服務器的CPU及內存資源消耗
Cookie技術是通過在請求和響應報文當中寫入Cookie信息來控制客戶端的狀態
- Cookie會根據服務器發送的響應報文內叫Set-Cookie的首部字段信息,通知客戶端保存Cookie。
- 下次客戶端再次向服務器請求時,客戶端會自動在請求報文中加入Cookie值后發送出去。
- 服務器端看到客戶端發送過來的Cookie后,就會檢查是那個客戶端發送過來的請求,對比服務器上的記錄,得到客戶端之前的狀態
HTTP的請求響應報文:
2. 持久連接節省通信量
在HTTP的初始版本中,每進行一次HTTP通信都要進行TCP連接和TCP斷開連接
以當年的通信狀況來看,因為都是些容量很小的文本傳輸,所以這種情況下還是沒有什么大問題的。但是隨著HTTP的普及,文檔中的內容逐漸豐富(圖片等),每次請求頁面的時候,還需要請求頁面當中的圖片等資源。因此,每次請求資源都會造成不必要的TCP連接和斷開,增加通信量的開銷
2.1 持久化連接
為了解決上述TCP連接問題,HTTP/1.1想出了持久連接的方法,即只要沒有任意一端明確提出斷開連接,保持TCP連接狀態。
持久連接的好處就是減少了TCP的重復建立連接和斷開連接所造成的額外開銷,減輕服務器的負載。也正是減少的額外開銷時間,可以是HTTP的請求和響應更快的結束,提高網頁的響應速率。
2.2 管線化
持久連接使得多數請求以管線化發送成為可能。以前客戶端發送一個請求需要等待服務器的響應,得到響應之后客戶端才可以發送下一個請求。管線化技術的出現,使得客戶端不需要一個一個的等待服務器的響應,可以直接發送下一個請求,這樣使得客戶端能夠同時發出多個請求,服務端也可以同時發送多個響應
3. 通信使用明文可能會被竊聽
由于HTTP協議自身不具備加密功能,所以就無法做到對通信整體(使用HTTp協議進行的請求和響應內容)進行加密。所以HTTP協議使用明文(未經加密的原數據)方式發送
3.1 TCP/IP是可能被竊聽的網絡
如果要問為什么通信不加密是一個缺點,這是因為按造TCP/IP 協議族的工作機制,通信的內容在所有的通信線路上都有可能被竊聽。
既然HTTP可能被竊聽,那么我們就采用加密技術對通信進行加密處理。
3.2 將通信加密
HTTP自身不帶加密機制,但是 可以通過SSL(安全套接層)或者TSL(安全層傳輸協議)組合使用,對HTTP通信進行加密 。
用SSL建立安全的通信線路之后,就可以在這條線路上進行HTTP通信了,與SSL組合使用的HTTP協議叫 HTTPS(超文本傳輸安全協議)協議
3.3 內容加密
HTTP自身不帶加密機制,但是我們還可以 對HTTP傳輸報文的內容進行加密 ,
4. 不驗證通信方的身份可能被偽裝
HTTP協議中 的請求和響應不驗證通信方的身份,就可能存在服務器是否就是發送請求中URI指定的主機,返回的響應是否真的是實際提出請求的客戶端
4.1 任何人都可以發送請求
HTTP協議進行通信時,由于不驗證通信方的身份,任何人都可以發送請求,并且服務器接收到請求,不管對方是誰都會回一個響應(這種情況僅限于發送端的IP地址和端口沒有被服務器限制訪問的情況下)
4.2 缺陷:
4.3 查明對手的證書
雖然HTTP協議不提供加密,并且無法得知通信雙方,但是SSL可以,SSL不僅提供加密算法,還提供一種證書手段,用來確定通信的對方信息。
這種用來確定通信雙方的證書是由值得信任的權威機構發布的,用來證明服務器和客戶端是真實存在的
5. 無法證明報文的完整性,可能被修改
1. 接收到的內容可能有誤
因為HTTP協議無法證明報文的完整性,所以在客戶端發送請求到服務器端或者服務器端發送響應到客戶端這段時間內,請求或者響應的內容很有可能被篡改
二、HTTPS
HTTP + 加密 + 認證 + 完整性保護 == HTTPS(并非一種新協議)
1. HTTPS是身披SSL外衣的HTTP
通常是HTTP直接和TCP進行通信。當使用SSL時,則演變成先和SSL通信,再由SSL和TCP進行通信
使用了SSL后HTTP就有了加密、證書、完整性保護的功能
SSL是獨立于HTTP協議的不光是HTTP協議使用SSL,SMTP和Telnet等協議均可配合SSL協議使用,可以說SSL是當今世界最為廣泛的網絡安全技術
2. 相互交換密鑰的公開密鑰加密技術
SSL是采用公開密鑰加密的加密處理方式,近代的加密算法是公開的,而密鑰是保密的,通過這種方式保證加密的安全性。
加密和解密都會用到密鑰,沒有密鑰就無法對密碼進行解密,反之一旦有人獲得密鑰,任何人就可以進行解密了,如果密鑰被攻擊者拿到,加密就沒有意義了
1. 共享密鑰加密的困境
加密和解密用同一個密鑰的方式稱為共享密鑰,也被稱為對稱密鑰加密。
共享密鑰加密時必須將密鑰也發送給對方,這樣對方才能拿密鑰進行解密,但是這個密鑰可能被第三方獲得,那么如何安全的把密鑰發送給對方呢??
2. 使用兩把密鑰的公開密鑰加密
公開密鑰的加密方式很容易解決共享密鑰的困境。
公開密鑰使用一對非對稱的密鑰。一把叫私有密鑰,另一把叫公開密鑰。私有密鑰不能被任何人知道,公開密鑰任何人都可以獲得。
使用公開密鑰的加密方式,發送密文的一方使用對方公開的密鑰進行加密處理,對方收到密文后,再使用自己的私有密鑰進行解密,這種方式不需要使用對方發送過來的私有密鑰,也不需要擔心密鑰被第三方獲得,就算被第三方獲得也很難被解密。
3. HTTPS采用混合加密機制
注意咋們的老大哥就很聰明,采用“男女混合雙打”!!!
HTTPS采用共享密鑰加密和公開密鑰加密的混合加密技術。若公開密鑰能夠實現安全交換,會考慮只使用公開密鑰進行加密,但是公開密鑰相對于共享密鑰的處理速度慢。
所以充分利用兩者的優勢,將多種加密組合起來進行通信,在交換密鑰環節使用公開密鑰進行加密,之后的建立通信交換報文階段則使用共享密鑰進行
公開密鑰的缺點是無法確認公開密鑰的正確性,所以密鑰一般都是由數字認證機構和相關機關發布的公開密鑰證書
3. HTTPS協議的缺陷
既然HTTPS安全可靠,為什么不一直使用HTTPS呢?
因此,只有是敏感信息才使用HTTPS協議進行通信,以節約資源。
三、總結
1.HTTP特點:
1.無狀態:協議對客戶端沒有狀態存儲,對事物處理沒有“記憶”能力,比如訪問一個網站需要反復進行登錄操作
2.無連接:HTTP/1.1之前,由于無狀態特點,每次請求需要通過TCP三次握手四次揮手,和服務器重新建立連接。比如某個客戶機在短時間多次請求同一個資源,服務器并不能區別是否已經響應過用戶的請求,所以每次需要重新響應請求,需要耗費不必要的時間和流量。
3 . 基于請求和響應:基本的特性,由客戶端發起請求,服務端響應
4 . 簡單快速、靈活
5.通信使用明文、請求和響應不會對通信方進行確認、無法保護數據的完整性
2.HTTPS特點:
1.內容加密:采用混合加密技術,中間者無法直接查看明文內容
2.驗證身份:通過證書認證客戶端訪問的是自己的服務器
3.保護數據完整性:防止傳輸的內容被中間人冒充或者篡改
4.混合加密:結合非對稱加密和對稱加密技術。客戶端使用對稱加密生成密鑰對傳輸數據進行加密,然后使用非對稱加密的公鑰再對秘鑰進行加密,所以網絡上傳輸的數據是被秘鑰加密的密文和用公鑰加密后的秘密秘鑰,因此即使被黑客截取,由于沒有私鑰,無法獲取到加密明文的秘鑰,便無法獲取到明文數據。
5.數字摘要:通過單向hash函數對原文進行哈希,將需加密的明文“摘要”成一串固定長度(如128bit)的密文,不同的明文摘要成的密文其結果總是不相同,同樣的明文其摘要必定一致,并且即使知道了摘要也不能反推出明文。
6.數字簽名技術:數字簽名建立在公鑰加密體制基礎上,是公鑰加密技術的另一類應用。它把公鑰加密技術和數字摘要結合起來,形成了實用的數字簽名技術。
7 . 收方能夠證實發送方的真實身份;
8 . 發送方事后不能否認所發送過的報文;
9 . 收方或非法者不能偽造、篡改報文。
總結
以上是生活随笔為你收集整理的HTTP和HTTPS总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乐观锁悲观锁自旋锁
- 下一篇: QT简介及QT环境搭建