http和https協議


第一部分:Http協議

  1.1 http協議簡介:

  http協議是超文本傳輸協議,是基於請求與響應的,無狀態,無連接的協議,常基於TCP/IP協議傳輸數據,默認是端口是80,https默認端口是443

  

  1.2 http協議工作原理:

    HTTP是基於客戶端/服務端(C/S)的架構模型,客戶端的瀏覽器通過TCP協議與服務器建立連接,建立連接后,客戶端向web服務器發送請求;

    web服務器接受到請求后,向客戶端的發送響應信息;

    客戶端接收到服務器返回的響應信息后,通過瀏覽器顯示在用戶的顯示器上,然后客戶端與服務器斷連接。

  1.3 http協議的特點:

    1)http是無狀態:http協議是無狀態協議。無狀態協議是指:協議對客戶端沒有狀態存儲,即對事物的處理沒有“記憶”能力,比如訪問一個網站需要重復的登錄操作;j解決方法:1通過cookies/session會話保存;2持久連接(HTTP keep-alive)方法,只要任意一端沒有明確提出斷開連接

    2)http是無連接:無連接的含義是指限制每次只處理一個請求,服務器處理完客戶的請求,並接收到客戶的應答后,服務器就會斷開宇客戶端的連接。采用這種方式可以節省傳輸時間。

    3)http是基於請求和響應:基本特性就是客戶端發送請求,服務端響應。

    4)通信使用明文,請求和響應不會對通信方式進行確認,無法保證數據的完整性。

    5)簡單快速、靈活。

  1.4 http信息結構

    1.4.1 客戶端發送的請求信息

    客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成;

    

    1.4.2請求頭部字段信息: 

    Host :請求的資源在哪個主機的端口上
    Connection:該請求支持長連接(heep_alive)
    Content-Length:正文內容長度
    Content-Type:客戶端傳入參數的數據格式
    User-Agent:聲明用戶的操作系統和瀏覽器版本信息
    Accent:發起了請求
    Referer:當前頁面是從哪個頁面跳轉過來的
    Accept-Encoding:接受的編碼
    Accept-Language:接受的語言類型
    Cookie:用於在客戶端存儲少量信息,通常用於實現會話(session)功能

    Aceept:客戶端可以接收的數據格式

    1.4.3 服務端的響應信息

    Http響應部分有四個部分組成:狀態行、消息頭、空行和響應正文;

 

  1.5 http 請求方法

  

  1.5.1 get和post的區別:

    1)get重點是從服務器上獲取資源,post重點是想往服務器發送資源;

    2)get方式數據傳輸量比較小,最多才1024個字節,而post則沒有限制,所以有時候上傳文件時只能用post方式

    3)get方式傳參數據時參數都顯示在URL上,而post的參數則在請求體中,post比get更安全。

   1.5.2 cookies機制和session機制的區別:

    1)cookies數據保存在客戶端,session數據保存在服務端;

    2)cookies可以減輕服務器的壓力,但是不安全,容易進行cookies欺騙;

    3)session安全一點,但是會占用服務器資源。

   1.5.3 http與https的區別:

    https協議就是身披SSL外殼的http;

    1)https有ca證書,http一般沒有

    2)http是超文本傳輸協議,信息是明文傳輸,而HTTPS則是具有安全性的SSL加密的傳輸協議

    3)http默認端口是80,HTTPS默認端口是443

  1.5.4 http簡答題:瀏覽器輸入一個地址,到頁面展示中間經過哪些東西?

    1)瀏覽器輸入url,先進行解析url是否合法;

    2)瀏覽器檢查是否有緩存(瀏覽器緩存--系統緩存---路由器緩存),如果有緩存,則直接顯示;如果沒有緩存,在瀏覽器發送http請求前,需要進行域名解析(DNS解析),解析獲取相對應的ip地址;

    3)瀏覽器想向務器發起TCP鏈接,與瀏覽器經歷TCP三次握手,完成鏈接

    4)鏈接成功后,瀏覽器向服務器發送http請求以及請求數據包

    5)服務器收到處理的請求后,將響應數據返回至瀏覽器

    6)瀏覽器收到http響應后,並解析響應,如果響應可以緩存則進行緩存

    7)瀏覽器發送異步請求獲取嵌入在HTML中的資源,對於未知類型,會彈出對話框

    8)頁面全部渲染結束並關閉鏈接。

  1.6 http 響應碼    

常見狀態碼:
200:請求被正常處理
204:請求被受理但是沒有資源可以返回
206:客戶端只請求資源的一部分,服務器只對請求的部分資源執行get方法,相應報文中通過Content-Range指定范圍資源

301:永久性重定向
302:臨時重定向
303:臨時重定向 與302類似,只是它希望客戶端在請求一個URI的時候,能通過get方法重定向到另一個URI上
304:發送附帶條件的請求時,條件不滿足時返回,與重定向無關
307:臨時重定向,與302類似,只是強制要求使用post方法

400:請求報文語法有誤,服務器無法識別
401:請求需要認證
403:請求的對應資源禁止被訪問
404:服務器無法找到對應資源

500:服務器內部錯誤
502: 網關錯誤
503:服務器正忙

 第二部分:HTTPS協議

  2.1 什么是https協議

  https協議就是身披SSL外殼的Http協議。https協議是一種通過計算機網絡進行安全通信的傳輸協議,經由http進行通信,利用SSL/TLS進行加密數據包。https默認的端口號是443。

有兩種基本的加解密算法類型: 1)對稱加密:密鑰只有一個,加密解密為同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等; 2)非對稱加密:密鑰成對出現(且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。

  2.2 https協議特點

  基於http協議,通過SSL或TLS提供加密數據處理、驗證對方身份以及數據完整性保護。

  1)內容加密:采用混合加密技術,中間者無法直接查看明文內容;

  2)驗證身份:通過證書認證客戶端訪問的是自己的服務器;

  3)保證數據的完整性:防止傳輸的數據被中間人冒充或者篡改。

  2.3 HTTPS的實現原理 

  大家可能都聽說過 HTTPS 協議之所以是安全的是因為 HTTPS 協議會對傳輸的數據進行加密,而加密過程是使用了非對稱加密實現。但其實,HTTPS 在內容傳輸的加密上使用的是對稱加密,非對稱加密只作用在證書驗證階段。

  HTTPS的整體過程分為證書驗證和數據傳輸階段,具體的交互過程如下:

  

  • 證書驗證階段

  瀏覽器向服務器發起Https請求,服務器接收到請求后,將會攜帶CA證書(包括公鑰)返回給客戶端,客戶端解析證書並驗證證書是否合法,如果不合法則提示警告,反之則准備進行數據傳輸;

  • 數據傳輸階段 

  當證書驗證合法后,取出公鑰生成隨機數,然后通過公鑰對隨機數進行非對稱加密,並把加密后的隨機數發送給服務器端,服務器端使用私鑰對隨機數進行解密,解密后服務器端對客戶端傳入的隨機數進行對錯加密,最后把對此加密后的內容傳輸給客戶端。

  2.3.1 為什么數據傳輸是用對稱加密

  首先,非對稱加密的加解密效率相對於對稱加密比較低,而http的應用場景通常是端對端之間的存在大量的交互,非對稱加密是無法接受的;

  其次,在https的場景中只有服務端保存了私鑰,一對公私鑰只能實現單向的加解密,所以https中內容傳輸加密方式采用對稱加密,而不是非對稱加密。

  2.4 HTTPS 的缺點(對比優點)

  • https協議握手階段比較耗時,會使頁面加載時間延長
  • https協議連接緩存不如http高效,會增加數據開銷,甚至已有的安全措施也是也會因此受到影響
  • SSL證書需要綁定IP,不能在同一個IP上綁定多個域名,IPV4資源不可能支撐這個消耗
  • 增加成本  

 

 

感謝https://blog.csdn.net/xiaoming100001/article/details/81109617

感謝:https://blog.csdn.net/qq_35642036/article/details/82788421


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM