從轉行到現在做了一年多的前端開發,中間的過程跌跌轉轉,總覺得對一些網絡的基礎知識有所欠缺。這幾天看了一些http的相關文章和資料,以下是對這幾天的所學做個總結。
當我們打開一個網站,瀏覽器某個網頁,都必須有一個http請求。下面了解一下http的一些基礎知識:
定義
HTTP協議(Hyper Text Transfer Protocol),即超文本傳輸協議的縮寫,是從萬維網服務器傳輸超文本到本地瀏覽器的傳送協議,是一個基于TCP/IP通信協議來傳遞數據。
http請求過程
1、域名解析
2、發起TCP3次握手
3、建立TCP請求發起 http 請求
4、服務器響應http請求,得到 html 代碼
5、瀏覽器解析 html 代碼,并請求 html 代碼資源
6、瀏覽器對頁面進行渲染,呈現給用戶
http 狀態碼
常見的狀態碼:
200:請求成功
301:資源被永久的轉移到其他URL
404:請求的資源不存在
500:內部服務器錯誤
狀態碼分類:
1XX:信息。服務器收到請求,需要請求者繼續操作
2XX:成功。操作被成功接收并處理
3XX:重定向。需要進一步的操作以完成請求
4XX:客戶端錯誤。請求包含語法錯誤或無法完成請求
5XX:服務器錯誤。服務器在處理請求的時候發生錯誤
與 http 相對應的 https
什么是 https ?我們用一個簡單的公式來理解:
HTTPS = HTTP + TLS/SSL
也就是:在 http 的傳輸的 過程加了一道 TLS/SSL (傳輸層加密協議),而這個協議是HTTPS 安全的核心。
https 加密流程
1、客戶端將 TLS/SSL 協議的版本號、加密算法的種類,產生的隨機數A等信息傳給服務器
2、服務器選擇其中的一種組合為加密方式,同事將自己的證書、公鑰、另外一個隨機數一起傳給客戶端
3、客戶端獲得服務端返回的信息(包括證書、簽名、域名等),驗證成功,則生成對稱加密秘鑰S,用公鑰加密后返回給服務器
4、服務器用私鑰將這段密鑰解密,得到對稱密鑰S,并用次密鑰加密一段握手消息返回客戶端
5、客戶端收到握手信息,用對稱密鑰解密,驗證成功,則握手成功。
https 加密方式
1、對稱加密
加密數據用的密鑰(即公鑰)和解密數據用的密鑰(即私鑰)是一樣的。
2、非對稱加密
公鑰和私鑰是不一樣的,只能保證單項數據的傳輸
理解加密的關鍵點:私鑰能解開公鑰加密的數據,但私鑰加密的數據,同樣能用公鑰解密
https 優缺點
優點:
1、使用 https 協議可以認證用戶和服務器,確保數據發送到正確的客戶機和服務器
2、https 協議是由 SSL+HTTP 協u議構建的可進行加密傳輸、身份認證的網絡協議,要比http 協議安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性
3、https 是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本
缺點:
1、在相同的網絡環境下,https 協議會使頁面的加載時間延長近50%,增加10%到20%的耗電。此外,https 協議還會影響緩存、增加數據開銷和功耗
2、https協議的安全是有范圍的,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什么作用
3、最關鍵的,SSL 證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行
4、SSL 的專業證書需要購買,功能越強大的證書費用越改。個人網站、小網站可以選擇入門級免費證書
5、SSL 證書通常需要綁定固定IP,為服務器增加固定IP會增加一定費用
6、https 連接服務器端資源占用較高,相同負載下會增加帶寬和服務器投入成本
關于http 和 https 先到此,下次繼續深入 TCP的三次握手和四次揮手。