一文就讓你搞懂http和https的通信過(guò)程及區(qū)別
一、 HTTP與HTTPS的區(qū)別
1、端口:http端口號(hào)是 80;https端口號(hào)是 443
2、傳輸協(xié)議:http是超文本傳輸協(xié)議,屬于明文傳輸;https是安全的超文本傳輸協(xié)議,是經(jīng)過(guò)SSL加密后的傳輸協(xié)議
3、安全性:https使用了TLS/SSL加密,比http更加的安全
4、證書:https需要申請(qǐng)ca證書
二、HTTP的通信過(guò)程
作為標(biāo)準(zhǔn)的C/S模型,http協(xié)議總是由客戶端發(fā)起,服務(wù)器進(jìn)行響應(yīng)。
1、DNS解析,域名系統(tǒng)DNS將域名解析成IP地址
2、建立TCP連接,進(jìn)行TCP的三次握手
3、瀏覽器發(fā)送請(qǐng)求
4、服務(wù)器響應(yīng)瀏覽器,向?yàn)g覽器發(fā)送數(shù)據(jù)
5、通信完成,TCP連接關(guān)閉
三、HTTPS的通信過(guò)程
https通信是建立在ssl連接層之上的請(qǐng)求和響應(yīng),客戶端將加密組件發(fā)送到服務(wù)端,服務(wù)端進(jìn)行匹配后將數(shù)字證書等信息發(fā)送到客戶端,客戶端進(jìn)行證書驗(yàn)證,驗(yàn)證通過(guò)后使用非對(duì)稱加密對(duì)數(shù)據(jù)的密鑰進(jìn)行協(xié)商,協(xié)商后得到對(duì)稱的加密密鑰,然后使用對(duì)稱算法進(jìn)行TCP鏈接,然后與客戶端進(jìn)行三次握手后,進(jìn)行數(shù)據(jù)傳輸,傳輸完成后,四次揮手,斷開鏈接,通信結(jié)束。
通信過(guò)程如下 :
1、客戶端和服務(wù)器端通過(guò)TCP建立連接,并發(fā)送https請(qǐng)求。
2、服務(wù)器響應(yīng)請(qǐng)求,并將數(shù)字證書發(fā)送給客戶端,數(shù)字證書包括公共秘鑰、域名、申請(qǐng)證書的公司。
3、客戶端收到服務(wù)器端的數(shù)字證書之后,會(huì)驗(yàn)證數(shù)字證書的合法性。
4、如果公鑰合格,那么客戶端會(huì)生成client key,一個(gè)用于進(jìn)行對(duì)稱加密的密鑰,并用服務(wù)器的公鑰對(duì)客戶端密鑰進(jìn)行非對(duì)稱加密。
5、客戶端會(huì)再次發(fā)起請(qǐng)求,將加密之后的客戶端密鑰發(fā)送給服務(wù)器。
6、服務(wù)器接收密文后,會(huì)用私鑰對(duì)其進(jìn)行非對(duì)稱解密,得到客戶端秘鑰。并使用客戶端秘鑰進(jìn)行對(duì)稱加密,生成密文并發(fā)送。
7、客戶端收到密文,并使用客戶端秘鑰進(jìn)行解密,獲取數(shù)據(jù)。

