HTTP與HTTPS的區別?
若是之前別人這麼問我,我會說HTTPS須要證書是安全的傳輸協議HTTP不帶證書傳輸數據不安全容易被攔截。大致上確實也是如此,可是若是問道具體是怎麼作的?爲何是安全的?我不知道怎麼回答。今天大概梳理了一下。html
HTTP與HTTPS
- 看下圖,實際上http與https的區別就在與ssl層。
- tls是ssl3.0之後的版本,能夠理解爲ssl3.1
- ssl層是作什麼的?
使用過捉包工具的都知道,https須要配證書。ssl層就是用於驗證證書的。web
大概流程如上,那麼證書又是作什麼的。
證書
- 證書的申請
- 由服務器向CA機構提供非對稱加密的公鑰申請,也能夠本身生成,例如捉包工具的證書就是本身生成的。可是本身生產的客戶端跟瀏覽器都是不維護的,獲取不到對應的信息,默認不受信任。而CA機構的證書是公開的,客戶端跟瀏覽器能夠獲取到。
- 證書包含的主要信息
- 證書頒發機構
- 證書頒發機構簽名
- 證書綁定的服務器域名
- 證書版本、有效期
- 簽名使用的加密算法
- 公鑰
- 怎麼驗證證書是否有效?
服務器:算法
- 用哈希算法對報文提取定長摘要
- 用私鑰對摘要進行加密,做爲數字簽名
- 將數字簽名附加到報文末尾發送給客戶端
客戶端:瀏覽器
- 用公鑰對服務器的數字簽名進行解密
- 用一樣的算法從新計算出報文的數字簽名
- 比較解密後的簽名與本身計算的簽名是否一致。
對稱加密與非對稱加密
簡單的說對稱加密是雙方使用同樣的加密方法進行加密,因此可使用對應的方法解密。非對稱加密是產生惟一的公鑰和私鑰。使用公鑰加密的數據只能用私鑰解密,使用私鑰加密的數據只能用公鑰解密。安全
安全與不安全問題
假設使用http而且使用加密的通信被攔截了 服務器
爲何捉包配置證書後能夠攔截信息?
其實使用捉包真正發起請求跟接受請求的都是捉包工具,客戶端只要配置捉包工具的證書跟捉包工具通信便可網絡
來自博客
blog.csdn.net/zwjemperor/…的圖片
Socket與WebSocket、HTTP的區別
看過Okhttp源碼的都知道,okhttp底層是用socket發送請求的。所以會產生疑問,爲何能夠用socket代替http。socket
WebSocket、Socket、TCP、HTTP區別這篇博客講的不錯,簡單的來講。Socket封裝了TCP協議、HTTP與WebScoket封裝了Socket協議。工具
- Socket是與傳輸層與應用層之間的一層封裝。方便提供通信能力
- 服務器經過識別傳輸的內容,例如http的請求頭、請求體等等。識別是長鏈接或是短鏈接(Http)
- WebSocket不一樣與Socket,Socket能夠直接與服務器通信,WebSocket須要藉助HTTP協議進行第一次握手,握手成功後轉爲TCP/UDP變成長鏈接。因此Websocket毫不僅僅只是適用在web端。
最後學習
雖然寫的比較淺,可是也算梳理了一下網絡通信協議。有些也是一邊查資料一邊整理的,因此可能存在一點錯誤。而我想的是,若是寫一篇博客本身不能學習的話可能根本不想寫,畢竟本身技術有限還沒也有到大牛那種能夠拿出來分享的階段。
最開始堅持的地方,記錄學習與生活的點點滴滴