HTTP、HTTPS、Socket、WebSocket的區別

HTTP與HTTPS的區別?

若是之前別人這麼問我,我會說HTTPS須要證書是安全的傳輸協議HTTP不帶證書傳輸數據不安全容易被攔截。大致上確實也是如此,可是若是問道具體是怎麼作的?爲何是安全的?我不知道怎麼回答。今天大概梳理了一下。html

HTTP與HTTPS

  1. 看下圖,實際上http與https的區別就在與ssl層。

  • tls是ssl3.0之後的版本,能夠理解爲ssl3.1
  1. ssl層是作什麼的?

使用過捉包工具的都知道,https須要配證書。ssl層就是用於驗證證書的。web

大概流程如上,那麼證書又是作什麼的。

證書

  1. 證書的申請
  • 由服務器向CA機構提供非對稱加密的公鑰申請,也能夠本身生成,例如捉包工具的證書就是本身生成的。可是本身生產的客戶端跟瀏覽器都是不維護的,獲取不到對應的信息,默認不受信任。而CA機構的證書是公開的,客戶端跟瀏覽器能夠獲取到。
  1. 證書包含的主要信息
  • 證書頒發機構
  • 證書頒發機構簽名
  • 證書綁定的服務器域名
  • 證書版本、有效期
  • 簽名使用的加密算法
  • 公鑰
  1. 怎麼驗證證書是否有效?

服務器:算法

  • 用哈希算法對報文提取定長摘要
  • 用私鑰對摘要進行加密,做爲數字簽名
  • 將數字簽名附加到報文末尾發送給客戶端

客戶端:瀏覽器

  • 用公鑰對服務器的數字簽名進行解密
  • 用一樣的算法從新計算出報文的數字簽名
  • 比較解密後的簽名與本身計算的簽名是否一致。

對稱加密與非對稱加密

簡單的說對稱加密是雙方使用同樣的加密方法進行加密,因此可使用對應的方法解密。非對稱加密是產生惟一的公鑰和私鑰。使用公鑰加密的數據只能用私鑰解密,使用私鑰加密的數據只能用公鑰解密。安全

安全與不安全問題

假設使用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端。

最後學習

雖然寫的比較淺,可是也算梳理了一下網絡通信協議。有些也是一邊查資料一邊整理的,因此可能存在一點錯誤。而我想的是,若是寫一篇博客本身不能學習的話可能根本不想寫,畢竟本身技術有限還沒也有到大牛那種能夠拿出來分享的階段。


最開始堅持的地方,記錄學習與生活的點點滴滴
相關文章
相關標籤/搜索