如下白話解釋針對小白級別,大牛勿噴。來源:本人博客git
上回咱們白話了密碼學中的兩種算法,對稱加密算法和非對稱加密算法,咱們有了這兩種算法,咱們就要將他們應用到實際生活中,就像咱們學會了99乘法表,就可讓咱們在實際生活中快速的計算啦!github
因此本節課程的先決條件就是,看並掌握我以前白話的這篇文章:對稱加密算法vs非對稱加密算法。算法
咱們先從互聯網開始提及,說到互聯網咱們就不得不提一下計算機,由於計算機是互聯網組成的一個很重要的部分,咱們要想使用互聯網進行交流就必須使用計算機(注意!我這裏的「計算機」是一個統稱,愛鑽牛角尖的童鞋,不要說,除了計算機還有手機啊,ipad啊,智能手錶啊!!!!恩,好了,別鬧了)。segmentfault
而後問題來了,要想造成互聯網,計算機和計算機之間就必須相連起來(廢話!),因而咱們就有了「網線」,固然這裏的「網線」也是泛指,由於如今你們家裏都用的是無線網!不過不管有線網仍是無線網,他們都是經過「物理」途徑進行傳播信號的!有了這些「聯繫」,咱們計算機和計算機之間有了傳遞信息的「途徑」了,可是!這裏僅僅是提供了一個途徑,可是若是想讓計算機之間彼此瞭解傳輸的信息,那麼咱們必須定義一系列的協議,這些協議是計算機之間都可以明白的,同時發送和接受要嚴格按照協議去作!就像張三是中國人和王石頭是印度人,他們倆要想交流,就要先創建一個途徑,不管是加qq仍是發郵件,同時他們倆還得說同樣的話,不能張三說中國話,王石頭說印度話。安全
因此,這就是好多互聯網協議的來歷,好比IPv4, IPv6, TCP,UDP,HTTP,FTP,SMTP,TLS/SSL,HTTPS等等。服務器
那麼咱們再來想一下,好比,張三想經過QQ發送給李四一句「踢球去不?」,那麼誰來將咱們發出去的信息轉換成協議規定的形式呢?QQ這個軟件?操做系統?網卡?路由器?網線?仍是咱們的ISP(網絡服務提供商,你能夠理解成電信,移動,網通等等)。網絡
其實,這些都會涉及到,因此即便你簡簡單單的發送一句「踢球去不?」須要涉及到這麼多內容,因此,這裏要引入一個模型,叫作OSI模型,全稱「開放式系統互聯通訊參考模型」(英語:Open System Interconnection Reference Model)。架構
這個模型是幹嗎的呢?就是將計算機和計算機之間信息交換「概念化」成不一樣的層次,每層分別有它本身的「實現」,每層有它本身的任務,同時「向上」提供「抽象」的「接口」供上層使用。通常分紅7層或者5層。爲了簡便期間我這裏按照5層架構說一下,這五層分別是:app
回到咱們的例子,當張三用QQ向李四發送一條信息時,首先QQ屬於應用層,應用層須要將信息發送給傳輸層,傳輸層通過處理以後傳給網絡層,以此類推傳給物理層,這樣一層層向下「包裝」,每層有對應的協議,這樣最後經過物理層傳出去,傳到李四的物理層,而後李四那邊經過一層層向上按照協議「解包」,最後到應用層,傳到李四的qq裏。socket
因此每層都有相對應的協議好比咱們的物理層和數據鏈路層經過無線網傳輸使用的802.2傳輸協議,有線網的Ethernet(以太網)傳輸協議,還有網絡層的IPv4, IPv6協議,傳輸層的TCP, UDP協議,而咱們熟悉的HTTP協議其實屬於應用層,因此HTTP是創建在TCP/IPv4或v6/以太網基礎上進一步細化用於傳輸「超文本」信息的協議,好比FTP也屬於應用層,也是在下面各層協議基礎上進行細化,專門用於「文件傳輸」的協議。
你們能夠看到,協議越往上越具體,越往下約抽象,其實計算機技術的發展就是一層層的向上抽象,這樣上層的能夠直接使用下層的「成果」(API)!
咱們再來講一下TLS/SSL,SSL(secure sockets layer)是TLS(transport layer security)的前身,爲何將他們合起來的,你們能夠理解成都屬於同一東西的不一樣階段吧,好比該協議以前叫SSL後來更名成TLS了。
爲何要有這種協議呢?由於HTTP是使用明文傳輸,隨着網絡的發展,安全性愈來愈重要,因此你們就要想辦法讓傳輸更加安全,同時使用密碼學的成果,利用「非對稱加密算法」的思想以及OSI模型,來對HTTP的信息進行加密。
由於上面咱們說了,根據OSI模型,若是向外傳輸信息就是要從上到下挨個層進行,TLS/SSL也是位於應用層,因此爲了加密HTTP的內容,那麼TLS/SSL必須位於HTTP下面,能夠當作這樣:
HTTP TLS/SSL TCP Ip ..
信息從HTTP通過TLS/SSL非對稱加密後傳出去,而在接收方,接收到信息是須要一層層向上進行,通過每層的「解包/解密」,最終經過HTTP轉換成超文本信息。
因此HTTPS 就是 「HTTP內容向下傳輸的時候加了一層TLS/SSL加密」,僅此而已,這樣,咱們就能夠實現,使用HTTP協議進行互聯網信息傳播的時候,對信息進行加密處理了,相信你們已經對非對稱加密算法有必定了解了。好比說咱們經過HTTPS鏈接某銀行網站,這樣咱們就能夠將咱們的密碼經過銀行給咱們的公鑰進行加密後發送給銀行,而避免了在傳輸過程當中被他人偷看的可能,由於即便他們講咱們的密文盜走,也沒法解密,只有銀行網站能夠解密,爲何?由於只有銀行擁有與咱們使用「公鑰」加密相對的那個「私鑰」。
可是一樣的問題,就是咱們怎麼知道咱們使用的公鑰就是銀行給咱們的呢?即便咱們所訪問的域名和銀行的域名一致,由於黑客徹底能夠經過修改咱們本地的hosts文件,或者入侵dns,將域名映射到黑客的服務器。
因此,這就是CA(certificate authority),數字證書,數字簽名,公鑰基礎設施(PKI)等等名詞的來歷。
下回再白話。
更多內容歡迎訪問:做者博客