HTTP
HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。使用TCP端口爲:80
一次完整http請求的過程
- 首先進行DNS域名解析
- 三次握手建立 TCP 連接
- 客戶端向服務器發送請求命令Get /www.xx.xx/ http/1.1
- 客戶端發送請求頭信息
- 服務服務器應答器 Http/1.1 200 OK
- 返回響應頭信息
- 服務器向客戶端發送數據
- 服務器關閉 TCP 連接
請求報文結構
GET /form/entry HTTP/1.1
Host:sample.com
Connection:keep-alive
Content-Type:application/x-www-form-urlencode
Content-Length:32
常見的Header
Expires
Cache-Control
Last-Modified / If-Modified-Since
Etag / If-None-Match
RANGE
HTTP 1.0
請求與響應支持頭域
響應對象以一個響應狀態行開始
響應對象不只限於超文本
開始支持客戶端通過POST方法向Web服務器提交數據,支持GET、HEAD、POST方法
支持長連接(但默認還是使用短連接),緩存機制,以及身份認證
HTTP 1.1
Persistent Connection(keepalive連接)
chunked編碼傳輸
字節範圍請求
Pipelining(請求流水線)
請求消息和響應消息都應支持Host頭域
新增了一批Request method
HTTP1.1增加了OPTIONS,PUT, DELETE, TRACE, CONNECT方法
緩存處理
HTTP/1.1在1.0的基礎上加入了一些cache的新特性,引入了實體標籤,一般被稱爲e-tags,新增更爲強大的Cache-Control頭。
HTTP 2.0
多路複用(二進制分幀)
頭部壓縮
隨時復位
服務器端推流
優先權和依賴
Https
Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本傳輸協議,設計了SSL(Secure Sockets Layer)協議用於對Http協議傳輸的數據進行加密,保證會話過程中的安全性。
使用TCP端口默認爲443
SSL協議加密方式
SSL協議即用到了對稱加密也用到了非對稱加密(公鑰加密),在建立傳輸鏈路時,SSL首先對對稱加密的密鑰使用公鑰進行非對稱加密,鏈路建立好之後,SSL對傳輸內容使用對稱加密。
對稱加密 速度高,可加密內容較大,用來加密會話過程中的消息。DES、3DES、AES、Blowfish、IDEA、RC5、RC6
公鑰加密 加密速度較慢,但能提供更好的身份認證技術,用來加密對稱加密的密鑰。RSA、ElGamal、揹包算法、Rabin(RSA的特例)、迪菲-赫爾曼密鑰交換協議中的公鑰加密算法、橢圓曲線加密算法)
Https單向認證
- 客戶端
發送:
支持協議版本(例如TSL1.0)
一個客戶端生成的隨機數(用於生成對話密鑰)
支持的加密算法
支持的壓縮算法 - 服務器 選擇加密程度高的加密方式
迴應:
確認使用的加密通信協議版本(例如TSL1.0)
一個服務器生成的隨機數(用於生成對話密鑰)
確認使用的加密方法(例如RSA)
服務器證書(裏面包括服務其公鑰) - 客戶端 校驗服務端證書是否合法,合法繼續,否則警告
發送:
對稱加密密鑰(一個隨機數(由上面兩個隨機數生成)(用於服務器公鑰加密,防止竊聽))
編碼改變通知(表示隨後的信息都將用雙方商定的加密方式和密鑰發送)
客戶端握手結束通知。 - 服務器 使用私鑰對加密信息進行解密,獲得對稱加密的密鑰
迴應:
編碼改變通知
服務器握手結束通知。 - 對稱加密,確保通訊安全
Https雙向認證
- 客戶端
發送:
支持協議版本(例如TSL1.0)
一個客戶端生成的隨機數(用於生成對話密鑰)
支持的加密算法
支持的壓縮算法 - 服務器 選擇加密程度高的加密方式
迴應:
確認使用的加密通信協議版本(例如TSL1.0)
一個服務器生成的隨機數(用於生成對話密鑰)
服務器證書(裏面包括服務其公鑰) - 客戶端 校驗服務端證書是否合法,合法繼續,否則警告
發送:
自己的證書(公鑰) - 服務器 校驗客戶端證書是否合法,獲得客戶端公鑰
迴應:
確認使用的加密方案(例如RSA)(客戶端公鑰進行加密) - 客戶端 收到加密方式後,使用私鑰進行解密,獲取到加密方案
發送:
對稱加密密鑰(一個隨機數(由上面兩個隨機數生成)(用於服務器公鑰加密,防止竊聽))
編碼改變通知(表示隨後的信息都將用雙方商定的加密方式和密鑰發送)
客戶端握手結束通知。 - 服務器 使用私鑰對加密信息進行解密,獲得對稱加密的密鑰
迴應:
編碼改變通知
服務器握手結束通知。 - 對稱加密,確保通訊安全