HTTP
定義:就是計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)進(jìn)行通信的規(guī)則梅猿,是一個(gè)基于請(qǐng)求與響應(yīng),無(wú)狀 態(tài)的诵次,應(yīng)用層的協(xié)議账蓉,常基于TCP/IP協(xié)議傳輸數(shù)據(jù)
四個(gè)基于:1.請(qǐng)求與響應(yīng):客戶端請(qǐng)求逾一、服務(wù)端響應(yīng)
2.無(wú)狀態(tài)的铸本,即服務(wù)端響應(yīng)完畢后,兩者斷開(kāi)連接遵堵,不保存連接狀態(tài)箱玷,(可通過(guò)Cookie和Keep Alive來(lái)實(shí)現(xiàn)長(zhǎng)連接)
3.應(yīng)用層:HTTP是應(yīng)用層的協(xié)議,配合TCP/IP使用
請(qǐng)求報(bào)文
1.請(qǐng)求行:有請(qǐng)求方法(get陌宿、post锡足、其他的)、請(qǐng)求地址(<協(xié)議>://<主機(jī)>:<端口>/<路徑>壳坪,例(http://localhost/index.html ? key = value))舶得、協(xié)議版本
2.請(qǐng)求頭
3.請(qǐng)求數(shù)據(jù)
(可選,get就沒(méi)有請(qǐng)求數(shù)據(jù))
響應(yīng)報(bào)文
HTTPS
定義:HTTPS其實(shí)是有兩部分組成:HTTP + SSL / TLS爽蝴,也就是在HTTP上又加了一層處 理加密信息的模塊沐批。服務(wù)端和客戶端的信息傳輸都會(huì)通過(guò)TLS進(jìn)行加密,所以傳輸 的數(shù)據(jù)都是加密后的數(shù)據(jù)
- 客戶端發(fā)起HTTPS請(qǐng)求 :這個(gè)沒(méi)什么好說(shuō)的蝎亚,就是用戶在瀏覽器里輸入一個(gè)https網(wǎng)址九孩,然后連接到server的
443端口。
2.服務(wù)端配置:采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書(shū)发框,可以自己制作捻撑,也可以向組織申 請(qǐng)。區(qū)別就是自己頒發(fā)的證書(shū)需要客戶端驗(yàn)證通過(guò),才可以繼續(xù)訪問(wèn)顾患,而使用受信 任的公司申請(qǐng)的證書(shū)則不會(huì)彈出提示頁(yè)面(startssl就是個(gè)不錯(cuò)的選擇番捂,有1年的免費(fèi) 服務(wù))。這套證書(shū)其實(shí)就是一對(duì)公鑰和私鑰江解。如果對(duì)公鑰和私鑰不太理解设预,可以想象 成一把鑰匙和一個(gè)鎖頭,只是全世界只有你一個(gè)人有這把鑰匙犁河,你可以把鎖頭給別 人鳖枕,別人可以用這個(gè)鎖把重要的東西鎖起來(lái),然后發(fā)給你桨螺,因?yàn)橹挥心阋粋€(gè)人有這 把鑰匙宾符,所以只有你才能看到被這把鎖鎖起來(lái)的東西。
傳送證書(shū) 這個(gè)證書(shū)其實(shí)就是公鑰灭翔,只是包含了很多信息魏烫,如證書(shū)的頒發(fā)機(jī)構(gòu),過(guò)期時(shí)間等
等肝箱。客戶端解析證書(shū)
這部分工作是有客戶端的TLS來(lái)完成的哄褒,首先會(huì)驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī) 構(gòu)煌张,過(guò)期時(shí)間等等呐赡,如果發(fā)現(xiàn)異常,則會(huì)彈出一個(gè)警告框骏融,提示證書(shū)存在問(wèn)題链嘀。如 果證書(shū)沒(méi)有問(wèn)題,那么就生成一個(gè)隨即值档玻。然后用證書(shū)對(duì)該隨機(jī)值進(jìn)行加密怀泊。就好 像上面說(shuō)的,把隨機(jī)值用鎖頭鎖起來(lái)窃肠,這樣除非有鑰匙,不然看不到被鎖住的內(nèi) 容刷允。傳送加密信息 這部分傳送的是用證書(shū)加密后的隨機(jī)值冤留,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值,以后
客戶端和服務(wù)端的通信就可以通過(guò)這個(gè)隨機(jī)值來(lái)進(jìn)行加密解密了服務(wù)段加密信息
服務(wù)端用私鑰解密后树灶,得到了客戶端傳過(guò)來(lái)的隨機(jī)值(私鑰)纤怒,然后把內(nèi)容通過(guò)該值 進(jìn)行對(duì)稱加密。所謂對(duì)稱加密就是天通,將信息和私鑰通過(guò)某種算法混合在一起泊窘,這樣 除非知道私鑰,不然無(wú)法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個(gè)私鑰烘豹,所以 只要加密算法夠彪悍瓜贾,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全携悯。傳輸加密后的信息 這部分信息是服務(wù)段用私鑰加密后的信息祭芦,可以在客戶端被還原
客戶端解密信息 客戶端用之前生成的私鑰解密服務(wù)段傳過(guò)來(lái)的信息,于是獲取了解密后的內(nèi)容憔鬼。整
個(gè)過(guò)程第三方即使監(jiān)聽(tīng)到了數(shù)據(jù)龟劲,也束手無(wú)策。