簡單瞭解HTTP和HTTPS

之前遇到一個問題是:HTTP和socket通信的區別是什麼?

答:HTTP:無狀態。所以有時候會自動斷開連接;socket會一直保持連接狀態,除非關閉socket,纔會斷開連接,更穩定。

HTTP缺點:

1.通信明文,容易被竊聽。

    HTTP -> 明文方式傳送。

    TCP/IP協議的通信機制:內容在所有通信線路上可能被窺視。

    ------------------------------------------------------------------------------

    (1)通信的加密:HTTP + SSL (Secure Socket Layer)安全套接層  

                                 或   

                                 HTTP + TLS (Transport layer Security) 安全層傳輸協議

    (2)內容的加密:

                客戶端對請求報文加密處理後傳輸,前提客戶端和服務端都具有加密和解密機制(主要在web服務中)

2.不驗證同新方的身份,可能遭遇僞裝

    HTTP協議中請求和響應,不會對通信地址進行通信;“服務器是否是發送請求中URI真正指定的主機,返回的響應是否真的返回到實際提出請求的客戶端”

    若發送端ip和端口號沒有被web服務器設定限制訪問的前提下 -> 服務器只要接收到請求,不管是誰都會返回一個響應

3.無法證明抱穩的完整性,有可能被篡改

    HTTP防止被篡改:添加校驗方法(MD5、SHA-1等)

---   某些web服務器和特定web瀏覽器存在安全漏洞


HTTP : 應用層(HTTP) -> TCP -> IP

HTTPS : 應用層(HTTP) -> SSL -> TCP -> IP


HTTPS通信簡單流程(若有不妥地方,請指出。謝謝):

1.客戶端請求服務端,帶上SSL指定版本,加密組件和列表等;

2.服務端讀取正確的SSL指定版本,加密組件和報文內容;

3.服務端響應給客戶端返回報文內容(包含公開密鑰證書)

----------------------------第一次握手完成----------------------------------

4.客戶端請求服務端帶上報文內容(加密後的密鑰 -> 上一步的公開密鑰證書)

5.服務端用私鑰解密密鑰,成功響應給客戶端返回帶上相對應的加密內容(用公開密鑰證書加密內容)

6.服務端和客戶端報文交換成功,收到SSL保護

7.應用層協議進行通信 -> HTTP請求

8.客戶端斷開連接,發送close_notify報文,發送TCP FIN關閉與TCP的通信


使用SSL時,處理速度會變慢:

    1.通信慢:消耗大量CPU及內存資源,通信量增加(網絡敷在可能變慢2-100倍)

    2.加密處理:在服務端和客戶端進行加密和解密,消耗硬件資源,負載增加(使用SSL加速器,盡在SSL通信處理時發揮作用,以分擔負載)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章