JAVA EE_HTTP

為什么意氣風發的少年,總是聽不進去別人的勸解。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????? ? ? ? ???????? ? ? ? ? ? ? ? ----------陳長生.


??主頁:陳長生.-CSDN博客?

📕上一篇:JAVA EE_網絡原理_數據鏈路層-CSDN博客


1.HTTP

1.1.HTTP是什么

? ? ? ? HTTP的中文名為超文本傳輸協議,是一種常用的應用層協議

1.2.HTTP工作過程

2.HTTP協議格式

? ? ? ? HTTP是一種文本協議的格式,我們可以通過一些抓包軟件來查詢響應的請求和響應信息,例如Fibble

2.1.抓包工具Fibbler

? ? ? ? 可以把Fibbler理解為一個代理,他可以幫客戶端進行操作。

舉個栗子:

? ? ? ?假設有一個辣條工廠,這給廠做了很多辣條,當時單單靠老板自己賣不完,于是他找到了張三,李四,王五等人來幫他出售,這些人就可以稱為代理,也就是正向代理。

???????于此同時,購買的人需要買這些辣條,但是他們不想自己買,找了人來替買,,這些被找來的人也可以稱為代理,也就是反向代理。

2.1.1.下載地址

Web Debugging Proxy and Troubleshooting Tools | Fiddler

2.1.2.配置環境

由于大部分網站都是https,但是fibbler中默認沒顯示https內容,所有我們需要手動勾選一下。

2.2.如何使用

2.2.1.刪除

點擊想要刪除的包信息,在點擊鍵盤上的DEL

2.2.2.查看請求/響應信息

點擊想要查看的包,在右邊尋找ROW屬性值,上面一個就代表包的請求信息,而下面的就為包的請求信息

我們可以點擊右下角的View in Notepad 查看文本內容的請求/響應內容

2.3.查看請求/響應內容

2.3.1.請求內容

  • 第一行為請求行
  • 從第二行開始到空一行的位置為請求報頭
  • 空行代表請求頭結束
  • 空行下面如果有內容那么就是請求正文(有的請求有,有的請求沒有)

2.3.2.響應內容

  • 第一行為響應行
  • 從第二行開始到空一行的位置為響應報頭
  • 空行代表響應頭結束
  • 空行下面內容為響應正文

3.HTTP請求

3.1.URL

URL中最重要的為IP,端口號,路徑,查詢字符串。

????????一般我們用網址來查找網頁的時候,只需要輸入www.xxxx.com(例如百度:www.baudu.com)即可了,那么上面的一串URL怎么還需要那么多屬性,其實是被省略掉了。

  • 協議:可以省略,默認下URL前面都會加個http
  • 登錄信息:可以省略,這一個值是運用在幾十年前的,現在已經不在URL中顯示了
  • 端口號:可以省略,如果沒有給端口號賦值的話,會默認給80端口號,如果是https的話會給443端口號
  • 帶層次的文件路徑:可以省略
  • 查詢字符串:可以省略
  • 片段標識符:可以省略

3.1.1.鍵值對

????????在上面一串URL中,問號后面的查詢字符串那段可以稱為鍵值對,鍵值對是由程序員自己定義的,意思一般只有自己懂。

以百度為例,紅色框中的內容都為鍵值對

3.2.GTE

表示獲取數據,位于請求行的首位

3.2.1.出現情況

  • 直接在瀏覽器輸入URL連接
  • 點擊超文本傳輸連接
  • 加載圖片

3.2.2.特點

  • 一般沒有body內容
  • 要想傳輸數據要通過query string

3.3.POST

表示上傳數據,位于請求行的首位

3.3.1.出現情況

  • 用戶登錄
  • 上傳資源

3.2.2.特點

  • 有body,一般傳輸數據直接使用body

3.4.GET與POST

3.4.1.區別

  • GET用于獲取,POST用于上傳
  • GET一般沒有body,要想傳輸數據需要通過query string
  • POST直接通過body傳輸

3.4.2.判別網絡流言

  • 1流言:POST比GET更安全,原因是POST的內容是在body里,而GET的內容是在URL上;
  • 1解析:錯誤,談到安全那肯定得想到加密,如果POST和GET的內容都沒有加密,那么黑客通過抓包,不管是POST還是GET,都可以獲取到其中的信息。
  • ---------------------------------------------------------------------------------------------------------------------------
  • 2流言:POST請求的數據量比GET請求的數據量大
  • 2解析:錯誤,這是在很早之前的瀏覽器上的限制了,當時的技術并不發達,傳輸的自然就少了,隨著技術的不斷更新換代,這種說法早已被淘汰了,而且http中并沒有限制請求數據的大小。
  • ---------------------------------------------------------------------------------------------------------------------------
  • 3流言:GET官方建議冪相等,POST則沒有
  • 3解析:差不多是對的,官方建議是建議,但是并沒有強制實施,所以程序員可以不遵守該規則。
  • 冪相等:請求一定,響應一定,假設申請一個百度的瀏覽器,那么返回的界面也是百度。?

3.5.請求報頭

以下是一些常見的報頭類型

3.5.1.Host

????????表示當前請求報頭的域名和端口號

3.5.2.Content-Length

????????表示當前請求正文的長度(單位:字節)

3.5.3.User-Agent

????????表示當前客戶端是什么類型(爬蟲/瀏覽器/客戶端)

????????也可以根據當前使用的機子(PC端/手機端)顯示合適的頁面

3.5.4.content-type

????????表示當前的數據格式

3.5.5.Referer

????????表示當前的請求數據是有哪個網址跳轉的

3.5.6.Cookie

以鍵值對的形式表示(使用“;”分割多個鍵值對,“=”分割鍵和值)

cookie本質上是瀏覽器在本地存儲數據的一種形式

????????眾所周知,在瀏覽器中向服務器訪問是有風險的,但是瀏覽器會提供一個方案,那就是cookie,cookie中的內容,其實是服務器給瀏覽器的,瀏覽器會把cookie保存在本地硬盤上,為了安全,不允許網站隨意訪問硬盤,而是只是按照“鍵值對”方式來存儲簡單數據。

? ? ? ? cookie的作用就是保存一些不怎么重要的,但是有用的信息,例如“上次訪問時間”,同時它也是一種保護用戶身份的表示。

關于sessionld:
? ? ? ? sessionld是會話id,用來標識當前瀏覽器的身份。

舉個栗子:

? ? ? ? 長生是A公司廠庫的管理員,它有一張身份卡,這張身份卡中只記錄了長生這個人,長生可以用這張卡自由進出A公司廠庫的各個地方,但是他要是想去B公司廠庫里亂逛,那肯定是不行的。

? ? ? ? ?回過來,sessionld就代表著身份卡,記錄著長生這個人,至于他的身高年齡等各屬性是由cookid來存儲的。

4.HTTP請求

4.1.狀態碼

4.1.1.200開頭

表示響應正常

200:訪問成功

4.1.2.300開頭

重定向

指客戶端訪問一個URL時,它自動跳轉到另一個URL

301:永久重定向

例如:網站 http://aaa.com 的http升級,永久變為?https://aaa.com

302:臨時重定向

例如:登錄一些網站后,自動跳轉到個人主頁

4.1.3.400開頭

表示客戶端出現問題

404:客戶端要訪問的資源不存在

403:訪問被拒絕(沒有權限)

4.1.4.500開頭

表示服務端出現問題

500:服務器臨時故障

502:網關沒有從服務器上獲取有效響應

504:當處理的數據量過大時或網絡延時以及服務堵塞,就可能會造成超時異常

5.HTTPS

5.1.HTTPS是什么

? ? ? ? HTTPS是根據HTTP協議為基礎進行一個升級,使其更安全

5.2.加密是什么

? ? ? ? 明文:任何人都能看得懂的

? ? ? ? 密文:明文通過加密,得到密文

????????假設小美提前跟長生說,都會把你看到的單詞內容,從第二個單詞開始,把每個字母的前一個字母或數字都去掉再讀,過了一會小美寫好了小紙條(TI ULEOAV0E 9Yooku),讓旁邊的同學傳給了長生,傳紙條的同學都瞄了一眼內容,但是看不懂,傳到長生那的時候,長生按小美之前說的話開始解讀字條內容,解讀到(I LOVE You)~~? ?

? ? ? ? 上訴中,小美跟長生將的話就為密鑰,而小美所做的就為加密,其他人都看不懂,只有她和長生能看的懂。? ?

5.3.HTTPS的工作原理

????????由于再互聯網上明文傳輸信息很危險,所以數據都會進行加密傳輸

? ? ? ? 而加密的方式有很多,可以分為“對稱加密”和“非對稱加密”

5.3.1.對稱加密????????

? ? ? ? 對稱加密就是使用同一個密鑰進行傳輸

????????

使用密文傳輸,黑客即使截獲數據也不知道內容,但真的是這樣嗎?

????????如果有多臺客戶端與服務器進行數據傳輸,那么多臺的客戶端的密鑰肯定都是不相同的(如果都是相同的密鑰,如果黑客直到了其中一臺客戶端的密鑰,其他的客戶端也就都遭殃了),既然是不同的密鑰,那么服務器要維護那么多密鑰是很麻煩的,所以比較理想的做法就是在傳輸前告知服務器密鑰是什么

? ? ? ?但是,如果在傳輸前告知服務器本次傳輸的密鑰是什么,由于該條信息是明文傳輸的,所以黑客也能知道密鑰是什么,那之后傳輸的數據黑客也能通過密鑰破解,就跟明文傳輸沒什么區別的,所以https引用了“非對稱加密”?? ? ??

5.3.2.非對稱加密

? ? ? ? 非對稱加密就是使用兩把鑰,公鑰(pub1)和私鑰(pri1)

? ? ? ? 公鑰:所有人都拿的到,可以理解為鎖

? ? ? ? 私鑰:只有之間有,可以理解為鑰匙

? ? ? ? 客戶端通過公鑰pub1將密鑰進行加密傳輸給服務端,服務端根據私鑰進行解密得到密鑰,之后就使用對稱加密進行傳輸

為什么使用對稱加密:

????????因為非對稱加密的運算速度是非常慢的,于是就需要非對稱加密和對稱加密聯合使用

5.3.3.中間人攻擊

? ? ? ? 但是即使是使用了非對稱加密,黑客還是有辦法進行攻擊,就比如“中間人攻擊”

? ? ? ? 由于公鑰是服務端發布給客戶端的,所以黑客也能夠拿到,如果黑客截獲信息,篡改公鑰,客戶端就收到黑客的公鑰,使用黑客的公鑰進行數據傳輸,那么黑客就能根據自己的公鑰破解該條信息

5.3.4.證書

? ? ? ? 為了防止這種“中間人攻擊”的出現,于是https就引用了證書

? ? ? ? 證書是在計算機出廠的時候就在操作系統里的,里面有一系列的信息

? ? ? ? 證書的有效期

? ? ? ? 證書的所有者

? ? ? ? 證書對應服務器的地址/域名

? ? ? ? 數字簽名

? ? ? ? 開啟一段會話的時候,服務器會向公證機構申請證書,證書中的各種信息就會以字符串的形式表示出來,當數據發送到客戶端的時候,客戶端就會判斷該證書是否為真。

5.3.5.數字簽名? ? ?

? ? ? ? 公證機構發布證書后,會對該證書生成校驗和

? ? ? ? 公證機構會拿著自己生成的非對稱密鑰對(pbu2/pri2),使用其中的私鑰pri3對校驗和進行加密,就得到了數字簽名

數字簽名的驗證:

? ? ? ? 客戶端拿到證書后,會對該證書進行校驗和計算,拿到check1,然后再時候公證機構的pub2對證書中的數字簽名進行解密,得到check2,如果相等,則信任該信息,如果黑客再其中篡改了證書中的內容,則不會相等,瀏覽器就會對用戶進行提示“該網站存在風險”

黑客是否能通過其他操作進行攻擊:

1>能否篡改公鑰

答:不能,一旦篡改了,check1和check2就對應不上

2>能否直接做一個證書

答:不能,證書中包含了服務器的地址/漁民,瀏覽器很容易識別出來

3>能否在篡改公鑰的同時,將數字簽名也改了

答:不能,數字簽名是通過私鑰加密的,黑客拿不到

4>客戶端如何拿到公證機構的公鑰,黑客是否能偽造公證機構的公鑰

答:公證機構的公鑰不是從網絡上獲得的,而是內置在操作系統里,所以黑客是偽造不了的

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

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

相關文章

存儲扇區分配表:NAND Flash與SD NAND(貼片式SD卡)的架構差異

NAND Flash 和 SD 卡(SD NAND)的存儲扇區分配表在原理上有相似之處,但由于二者的結構和應用場景不同,也存在一些差異。 相同點: 基本功能:NAND Flash 和 SD 卡(SD NAND)的存儲扇區分…

界面控件DevExpress WinForms中文教程:Banded Grid View - API

DevExpress WinForms擁有180組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝…

4G物聯網模塊實現廢氣處理全流程數據可視化監控配置

一、項目背景 隨著工業化進程的加速,工業廢氣的排放對環境造成了嚴重影響,廢氣處理廠應運而生。然而,廢氣處理廠中的設備眾多且分散,傳統的人工巡檢和數據記錄方式效率低下,難以及時發現問題。為了實現對廢氣處理設備…

Kubernetes控制平面組件:Kubelet詳解(四):gRPC 與 CRI gRPC實現

云原生學習路線導航頁(持續更新中) kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計(一)Kubernetes架構原則和對象設計(二)Kubernetes架構原則和對象設計(三)Kubernetes控…

【數據結構】線性表--隊列

【數據結構】線性表--隊列 一.什么是隊列二.隊列的實現1.隊列結構定義:2.隊列初始化函數:3.隊列銷毀函數:4.入隊列函數(尾插):5.出隊列函數(頭刪):6.取隊頭元素&#xff…

C語言—再學習(結構體)

一、建立結構體 用戶自己建立由不同類型數據組成的組合型的數據結構,它稱為結構體。 struct Student { int num; //學號char name[20]; //名字為字符串char sex; //性別int age; //年紀float score; //分數char addr[30]; 地址為字符…

【前端基礎】10、CSS的偽元素(::first-line、::first-letter、::before、::after)【注:極簡描述】

一、偽元素的作用 選取某個特定的元素。 二、::first-line、::first-letter ::first-line:針對首行文本設置屬性 ::first-letter:針對首字母設置屬性 三、::before、::after 在一個元素之前(::before)或者之后(…

系統漏洞掃描服務:維護網絡安全的關鍵與服務原理?

系統漏洞掃描服務是維護網絡安全的關鍵措施,能夠迅速發現系統中的潛在風險,有效預防可能的風險和損失。面對網絡攻擊手段的日益復雜化,這一服務的重要性日益顯著。 服務原理 系統漏洞掃描服務猶如一名恪盡職守的安全守護者。它運用各類掃描…

從 Excel 到 Data.olllo:數據分析師的提效之路

背景:Excel 的能力邊界 對許多數據分析師而言,Excel 是入門數據處理的第一工具。然而,隨著業務數據量的增長,Excel 的一些固有限制逐漸顯現: 操作容易出錯,難以審計; 打開或操作百萬行數據時&…

框架的源碼理解——V3中的ref和reactive

最近在研究各個框架的源碼,從源碼角度去理解 vue3 的 reactive 和 ref API,記錄下研究的成果 reactive 首先,reactive() 的參數必須是一個對象,返回值是一個 Proxy 對象,具有響應性。如果參數不是對象類型&#xff0…

能源數字化轉型關鍵引擎:Profinet轉Modbus TCP網關驅動設備協同升級

在工業自動化的世界中,ModbusTCP和Profinet是兩個非常重要的通訊協議。ModbusTCP以其開放性和易用性,被廣泛應用于各種工業設備中;而Profinet則以其高效性和實時性,成為了眾多高端設備的首選。然而,由于這兩種協議的差…

【ant design】ant-design-vue 4.0實現主題色切換

官網&#xff1a;Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 我圖方便&#xff0c;直接在 app.vue 中加入的 <div class"app-content" v-bind:class"appOption.appContentClass"><a-config-provider…

一個指令,讓任意 AI 快速生成思維導圖

大家好&#xff0c;我是安仔&#xff0c;一個每天都在壓榨 AI 的躺平打工人。 今天分享一個 AI 辦公小技巧&#xff0c;讓你用一個指令讓 AI 生成思維導圖。 DeepSeek、Kimi、豆包都可以哈 &#xff5e; KimiXMind 安仔經常用 XMind 來繪制思維導圖&#xff0c;但是 AI 是沒…

便捷的批量打印工具推薦

軟件介紹 本文介紹的軟件是一款批量打印軟件&#xff0c;名為PrintConductor。 軟件功能強大 這款批量打印軟件功能極為強大&#xff0c;它不僅能夠批量打印各種不同格式的文件&#xff0c;還可以直接打印整個文件夾。 初次使用設置 第一次打開這款軟件時&#xff0c;要記…

USRP 射頻信號 采集 回放 系統

USRP 射頻信號采集回放系統 也可以叫做&#xff1a; 利用寬帶RF錄制和回放系統實現6G技術研究超寬帶射頻信號采集回放系統使用NI USRP平臺實現射頻信號錄制和回放操作演示USRP也能實現多通道寬帶信號流盤回放了&#xff01; 對于最簡單的實現方法就是使用LabVIEW進行實現 采…

MFC 調用海康相機進行軟觸發

初始化相機類文件 #pragma once #include "MvCameraControl.h" class CMvCamera { public:CMvCamera();~CMvCamera();//初始化相機int InitCamera();int SaveCurrentImage(CString filePath);//關閉相機void CloseCamera();//設置int SetEnumValue(IN const char* s…

虛擬主播肖像權保護,數字時代的法律博弈

首席數據官高鵬律師團隊 在虛擬主播行業蓬勃發展的表象之下&#xff0c;潛藏著一場關乎法律邊界的隱形戰爭。當一位虛擬偶像的3D模型被非法拆解、面部數據被批量復制&#xff0c;運營方驚訝地發現——傳統的肖像權保護體系&#xff0c;竟難以完全覆蓋這具由代碼與數據構成的“…

ArrayList-集合使用

自動擴容&#xff0c;集合的長度可以變化&#xff0c;而數組長度不變&#xff0c;集合更加靈活。 集合只能存引用數據類型&#xff0c;不能直接存基本數據類型&#xff0c;除非包裝 ArrayList會拿[]展示數據

鴻蒙ArkUI體驗:Hexo博客客戶端開發心得

最近部門也在跟進鴻蒙平臺的業務開發&#xff0c;自己主要是做 Android 開發&#xff0c;主要使用 Kotlin/Java 語言。&#xff0c;需要對新的開發平臺和開發模式進行學習&#xff0c;在業余時間開了個項目練手&#xff0c;做了個基于 Hexo 博客內容開發的App。鴻蒙主要使用Ark…

【和春筍一起學C++】(十四)指針與const

將const用于指針&#xff0c;有兩種情況&#xff1a; const int *pt; int * const pt; 目錄 1. const int *pt 2. int * const pt 3. 擴展 1. const int *pt 首先看第一種情況&#xff0c;const在int的前面&#xff0c;有如下語句&#xff1a; int peoples12&#xff1…