【JavaEE】HTTP 協議

文章目錄

  • 一、HTTP 協議
    • 1、HTTP 是什么
    • 2、理解 "應用層協議"
    • 3、理解 HTTP 協議的工作過程
    • 4、HTTP 協議格式
    • 5、HTTP 請求 (Request)
      • 5.1 認識 URL
    • 6、
  • 二、HTTPS
    • 1、HTTPS是什么
    • 2、"加密" 是什么
    • 3、HTTPS 的工作過程
      • 3.1 對稱加密
      • 3.2 非對稱加密
      • 3.3 證書
      • 3.4 完整過程
    • 4、總結
  • 三、Tomcat

一、HTTP 協議

1、HTTP 是什么

2、理解 “應用層協議”

3、理解 HTTP 協議的工作過程

4、HTTP 協議格式

5、HTTP 請求 (Request)

5.1 認識 URL

6、

二、HTTPS

1、HTTPS是什么

HTTPS也是一個應用層協議,是在HTTP協議的基礎上引入了一個加密層。
HTTP協議內容是按照文本的方式明文傳輸的,這就導致傳輸過程中出現一些被篡改的情況。

臭名昭著的 “運營商劫持”

下載一個 天天動聽
未被劫持的效果, 點擊下載按鈕, 就會彈出天天動聽的下載鏈接.

已被劫持的效果, 點擊下載按鈕, 就會彈出 QQ 瀏覽器的下載鏈接

例如:在瀏覽器上下載軟件,相信很多同學都經歷過在瀏覽器上面下載東西但是下載的卻不是自己想要下載的,下載下來卻變成了其他的軟件,這就是傳輸內容被篡改了。

由于我們通過網絡傳輸的任何數據包都會經過運營商的網絡設備(路由器,交換機等),那么運營商的網絡設備就可以解析我們的傳輸內容,并進行篡改。

點擊下載天天動聽,就是給服務器發送一個 HTTP 請求,獲取到的HTTP響應包含了改APP的下載地址,運營商劫持后發現這個響應是下載天天動聽,自動將返回給用戶的響應篡改成QQ瀏覽器的下載地址。


不止運營商,黑客也可以用類似的手段來獲取用戶信息,或者篡改內容,如果用戶的賬戶信息甚至支付密碼,所以,在互聯網上,明文傳輸是很危險的事情。

HTTPS 就是在HTTP的基礎上進行了加密操作,來進一步保護用戶的信息安全。

2、“加密” 是什么

加密 就是把明文(傳輸內容)進行一系列的變換,轉換成密文,
解密 就是把密文進行一系列的變換,轉換成明文。
在加密和解密的過程中,需要一個或多個中間數據,輔助進行這個過程,這樣的數據被稱為密鑰(yue)。

加密解密到如今已經發展成一個獨立的學科:密碼學,而密碼學的奠基人,也正是計算機科學的祖師爺之一,艾倫·麥席森·圖靈。

3、HTTPS 的工作過程

既然要保證數據安全,那就要進行 “加密”,
網絡傳輸中不再直接使用明文,而是使用加密之后的 “密文”,
加密的方式有很多,但總得來說分為兩大類:對稱加密非對稱加密

3.1 對稱加密

對稱加密就是通過同一個 “密鑰”,把明文加密成密文,也能把密文解密成明文。

一個簡單的對稱加密, 按位異或
假設 明文 a = 1234, 密鑰 key = 8888
則加密 a ^ key 得到的密文 b 為 9834.
然后針對密文 9834 再次進行運算 b ^ key, 得到的就是原來的明文 1234.
(對于字符串的對稱加密也是同理, 每一個字符都可以表示成一個數字)
當然, 按位異或只是最簡單的對稱加密. HTTPS 中并不是使用按位異或.


引入對稱加密之后, 即使數據被截獲, 由于黑客不知道密鑰是啥, 因此就無法進行解密, 也就不知道請求的真實內容是啥了。

但是,服務器同一時間給很多客戶端提供服務,每個人的密鑰都是不相同(如果一樣,那么密鑰很容易擴散,黑客也能拿到),因此服務器需要維護每個客戶端和每個密鑰之間的關聯關系,這是一個很龐大的工程。

比較理想的做法是,在客戶端和服務器建立連接的時候,雙方協商好這次的密鑰。

但是如果密鑰也進行明文傳輸的話,那么黑客也能獲取密鑰并對傳輸內容進行解密,所以密鑰的傳輸也需要進行加密。想要對密鑰進行加密,雙方仍舊需要約定一個密鑰,但是這就形成了套娃過程,傳輸內容需要加密,密鑰需要加密,密鑰的密鑰又需要加密…此時密鑰的傳輸用對稱加密就行不通了~

此時需要引入非對稱加密。

3.2 非對稱加密

非對稱加密需要兩個密鑰:“公鑰” 和 “私鑰”
公鑰和私鑰是配對的,最大的缺點是:運算速度非常慢,比對稱加密慢得多

加密方式1:

  • 通過公鑰對明文進行加密,變成密文
  • 通過私鑰對明文進行解密,變成明文

加密方式2:

  • 通過私鑰對明文進行加密,變成密文
  • 通過公鑰對明文進行解密,變成明文

公鑰誰都可以持有,不怕泄密,但是私鑰只有服務器可以有,只有持有私鑰的人才可以解密。

  1. 客戶端生產對稱密鑰,通過公鑰進行加密傳輸,發送給服務器
  2. 由于中間設備沒有私鑰,即使截獲到加密的對稱密鑰也不知道里面的對稱密鑰是什么
  3. 服務器通過私鑰對加密的對稱密鑰進行解密,獲取到對稱密鑰,并且使用這個對稱密鑰加密給客戶端返回響應數據。此時知道對稱密鑰的只有客戶端和服務器兩個設備,中間設備不知道對稱密鑰。
  4. 后續客戶端和服務器的通信就只用對稱密鑰就好了,由于改對稱密鑰只有客戶端和服務器兩個設備知道,其他設備不知道密鑰即使截獲也不知道加密內容是什么。

由于對稱加密的速度比非對稱加密的速度快得多,所以一般只在開始階段協商密鑰的加密使用非對稱加密,后續傳輸都使用對稱加密。

那么接下來問題又來了:
1、客戶端如何獲取到公鑰?
2、客戶端如何確定這個公鑰不是黑客偽造的?

3.3 證書

在客戶端-服務器剛建立連接的時候,服務器就給客戶端返回一個證書
證書里面包含公鑰,也包含了網站的身份信息。

3.4 完整過程

左側為客戶端做的事情,右側是服務器做的事情。

4、總結

HTTPS 工作過程中涉及三組密鑰:

三、Tomcat

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12240.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

零樣本身份保持:ID-Animator引領個性化視頻生成技術新前沿

在最新的研究進展中,由Xuanhua He及其團隊提出的ID-Animator技術,為個性化視頻生成領域帶來了突破性的創新。這項技術的核心在于其零樣本(zero-shot)人物視頻生成方法,它允許研究者和開發者根據單一的參考面部圖像生成…

深度解刨性能測試工具Locust

🍅 視頻學習:文末有免費的配套視頻可觀看 🍅 關注公眾號【互聯網雜貨鋪】,回復 1 ,免費獲取軟件測試全套資料,資料在手,漲薪更快 Locust安裝 …

Python3 筆記:range() 函數

range() 函數返回數字序列,默認從 0 開始,默認以 1 遞增,并以指定的數字結束。 它的語法格式:range(start,end,step) start是起始值,end是終止值,step是間隔值 上述語句可以產生一個[start,…, end-1]列…

gin框架學習筆記(三) ——路由請求與相關參數

參數種類與參數處理 查詢參數 在講解查詢參數的定義之前,我們先來看一個例子,當我打開了CSDN,我現在想查看我的博客瀏覽量,那么我就需要點擊我的頭像來打開我的個人主頁,像下面這樣: 我們現在把瀏覽器的網址取下來,…

【35分鐘掌握金融風控策略27】貸中風控策略與客戶運營體系

目錄 貸中風控策略與客戶運營體系 貸中風控日標 貸中風控數據源 貸中風控策略與客戶運營體系 貸中是風控的第二道防線,貸中階段風控的重點工作就是存量客戶風控及運營。在當下,新客市場趨于飽和且獲客成本越來越高,所以,在做好…

基于Java的俄羅斯方塊游戲的設計與實現

關于俄羅斯方塊項目源碼.zip資源-CSDN文庫https://download.csdn.net/download/JW_559/89300281 基于Java的俄羅斯方塊游戲的設計與實現 摘 要 俄羅斯方塊是一款風靡全球,從一開始到現在都一直經久不衰的電腦、手機、掌上游戲機產品,是一款游戲規則簡單…

物聯網設計競賽_1_邊緣人工智能云計算

邊緣人工智能: 本質上邊緣人工智能,直接會在邊緣設備上運行機器學習算法,例如物聯網設備或邊緣服務器上,這樣可以減少數據傳輸延遲,提高響應速度。 云計算: 云計算模型中,數據通常被發送到遠…

在React中利用Postman測試代碼獲取數據

文章目錄 概要名詞解釋1、Postman2、axios 使用Postman測試API在React中獲取并展示數據小結 概要 在Web開發中,通過API獲取數據是一項常見任務。Postman是一個功能強大的工具,可以幫助開發者測試API,并查看API的響應數據。在本篇博客中&…

【C語言】—— 動態內存管理

【C語言】——動態內存管理 一、動態內存管理概述1.1、動態內存的概念1.2、動態內存的必要性 二、 m a l l o c malloc malloc 函數2.1、函數介紹2.2、應用舉例 三、 c a l l o c calloc calloc 函數四、 f r e e free free 函數4.1、函數介紹4.2、應用舉例 五、 r e a l l o …

無列名注入

在進行sql注入時,一般都是使用 information_schema 庫來獲取表名與列名,因此有一種場景是傳入參數時會將 information_schema 過濾 在這種情況下,由于 information_schema 無法使用,我們無法獲取表名與列名。 表名獲取方式 Inn…

Redis——Redis集群腦裂問題

Redis集群的腦裂問題(Split-Brain)是一個在分布式系統中可能發生的嚴重問題,特別是在基于主從復制和哨兵(Sentinel)機制的Redis集群環境中。以下是對Redis集群腦裂問題的詳細闡述: 定義 Redis集群腦裂問題…

FullCalendar日歷組件集成實戰(3)

背景 有一些應用系統或應用功能,如日程管理、任務管理需要使用到日歷組件。雖然Element Plus也提供了日歷組件,但功能比較簡單,用來做數據展現勉強可用。但如果需要進行復雜的數據展示,以及互動操作如通過點擊添加事件&#xff0…

SwiftUI中的常用圖形(Shapes)

概述 在SwiftUI中,常用的圖形(Shape)主要有: Circle:圓形 Ellipse:橢圓形 Capsule:膠囊形 Rectangle:矩形 RoundedRectangle:圓角矩形 上面的這些圖形都繼承了Shape協議…

DFA算法 敏感詞過濾方案匯總以及高效工具sensitive-word

敏感詞過濾方案匯總以及高效工具sensitive-word 導入pom文件 <dependency><groupId>com.github.houbb</groupId><artifactId>sensitive-word</artifactId><version>0.12.0</version> </dependency>接下來我們編寫相關測試類…

解四層負載和七層負載:Nginx 的應用示范

在網絡架構中&#xff0c;負載均衡是分配網絡或應用程序流量到多個服務器的技術&#xff0c;以優化資源使用、最大化吞吐量、最小化響應時間和避免任何單一資源的過載。Nginx&#xff0c;作為一款強大的HTTP和反向代理服務器&#xff0c;能夠處理七層&#xff08;應用層&#x…

深入剖析JVM、JDK和JRE的區別與聯系

在Java開發和運行過程中&#xff0c;JVM、JRE和JDK是三個核心組件。理解它們的區別和聯系是每個Java開發者的基礎技能。本文將深入探討這三個組件的作用、組成及其在實際應用中的重要性。 一、Java虛擬機&#xff08;JVM&#xff09; **JVM&#xff08;Java Virtual Machine&…

Hive讀寫文件機制

Hive讀寫文件機制 1.SerDe是什么&#xff1f; SerDe是Hive中的一個概念&#xff0c;代表著“序列化/反序列化” &#xff08;Serializer/Deserializer&#xff09;。 SerDe在Hive中是用來處理數據如何在Hive與底層存儲系統&#xff08;例如HDFS&#xff09;之間進行轉換的機制…

ceph糾刪碼精簡配置ec4+2:1與ec4+2的切換

概述 近期遇到項目&#xff0c;由于靈活配置&#xff0c;前期只有部分機器&#xff0c;后續擴容&#xff0c;想用ec42的糾刪碼&#xff0c;但前期只有3臺機器&#xff0c;需要做精簡ec。 erasure-code-profile 首先按照ceph創建糾刪碼池步驟進行操作。 創建ec42的rule cep…

2024國考行測、申論資料大全,做好備考真的很重要!

1. 國考是什么? 國考,全稱國家公務員考試,是選拔國家公務員的重要途徑。通過國考,你將有機會進入政府部門,為國家建設貢獻力量。 2. 國考難在哪里? 國考之所以難,主要體現在以下幾個方面: (1) 競爭激烈 每年國考報名人數都在百萬以上,而錄取率卻不足2%。千軍萬馬過獨木橋…

前端環境準備的一些注意事項

1. 安裝 node-sass4.x 需要python 2 和visual studio 2017&#xff0c;visual 2019版本不行。 2. python版本更新問題 python重新配置環境變量時&#xff0c;不會立馬生效&#xff0c;重啟可生效。 3. node版本問題 接觸一個新的項目&#xff0c;搞清楚node版本再開始準備…