HTTPvsHTTPS:揭秘網路安全的關鍵差異,你不會還不知道吧?

一、HTTP 和 HTTPS 介紹

HTTP(HyperText Transfer Protocol) 是一種無狀態的通訊協議,通常用於在客戶端(例如瀏覽器)和伺服器之間傳輸超文字(如 HTML 頁面)。但這僅僅是一個單向通訊協議,資料傳輸過程中並未加密,所以它比較容易被中間人攻擊。無狀態,即不能儲存每次提交的資訊,如果使用者發來一個新的請求,伺服器無法知道它是否與上次請求有關聯。
HTTPS(HyperText Transfer Protocol Secure),則是在 HTTP 的基礎上增加了加密層,使用 SSL/TLS 協議來保護資料的傳輸。可以理解為 HTTP 的“高階版”,帶有加密的護航,讓資料在傳輸過程中更安全。
特性 HTTP HTTPS
安全性 無加密,易受攻擊 加密傳輸,安全性高
埠號 預設埠為 80 預設埠為 443
效能 較快(沒有加密負擔) 較慢(加密解密有一定開銷)
證書 不需要證書 需要 SSL/TLS 證書
瀏覽器表現 沒有“安全”標記 顯示鎖形標誌,使用者感到安全

二、網際網路訊息如何傳遞

在網際網路中,資訊傳遞就像是一場複雜的郵遞過程,訊息需要透過一系列的“郵局”(即路由器),逐步從傳送方傳遞到接收方。為了讓這個過程更具邏輯性,我們可以將其比作寄送包裹的過程。

1、網際網路通訊的路徑

1.訪問某個網站

訪問網站 www.example.com。這個網址在網際網路上並不是唯一的地址,它只是一個更易於記憶的字串。真正定位到網站的地址,必須透過它的 IP 地址。這就好比你想找一個朋友的住址,但只知道他的名字,你需要透過電話簿(類似 DNS 解析)來查詢他具體的住址(IP 地址)。

2.瀏覽器傳送請求

在瀏覽器中輸入網址後,瀏覽器會發起一個請求,這個請求會包含想要訪問的資訊。例如,HTTP 請求頭中可能包含要訪問的頁面路徑、瀏覽器型別、語言等資訊。就像向郵局遞交一個包裹,包裹裡帶著想要傳送的內容(即請求資訊)。

3.DNS 解析

由於 IP 地址很不好記憶,所以 DNS(域名系統)起到了將易記的域名(如 www.example.com)轉換為計算機能夠理解的 IP 地址(如 192.168.1.1)的作用。這是透過向 DNS 伺服器查詢來實現的。

4.路由器的作用

拿到正確的 IP 地址後,訊息會透過一系列路由器(路由器就像郵遞員一樣,負責在各個“郵局”之間傳遞包裹)逐步轉發到目標伺服器。每個路由器根據接收到的包裹資訊,決定將包裹轉發給哪個下一個路由器或最終目標。這些路由器會透過 MAC 地址 來標識彼此,就像每個郵局都有一個地址和“郵遞員”一樣。
在這個過程中,MAC 地址 是每臺網絡裝置(如路由器、計算機等)唯一標識的地址。MAC 地址常常在區域網內起作用,而在網際網路上,資料包會依賴 IP 地址進行轉發。
例如,當你的包裹從一個路由器(網路節點)到達下一個節點時,包裹的 "收件人地址"(即 MAC 地址)會發生變化,每經過一個路由器,包裹的封面上的 “地址” 會更新為當前路由器的 MAC 地址,直到最終到達目標伺服器。

5.目標伺服器響應請求

當資料包最終到達目標伺服器時,伺服器會處理你的請求(例如返回一個網頁、圖片或檔案)。伺服器根據請求的資訊,選擇正確的資料進行返回。就像郵局在接收到包裹後,將其交給收件人。

6.響應回傳

一旦目標伺服器生成了響應,它會透過與請求時相同的路徑,逆向傳送回給瀏覽器。由於路由器和中間裝置的作用,資料包在路由過程中仍然會更新其 MAC 地址和其它資訊,但最終會正確到達瀏覽器,呈現出網頁內容。

2、IP 地址和 MAC 地址的作用

1.IP 地址

是每個網路主機的唯一地址,主要用於定址,讓資料包能夠找到目的地。你可以把 IP 地址看作“郵寄地址”,幫助路由器知道資料應該發往哪裡。

2.MAC 地址

是硬體裝置(如網絡卡)的一種物理地址,它在區域網內用於裝置間的通訊。可以理解為裝置的“身份證”,每個裝置都有一個獨特的 MAC 地址。

3.DNS 解析

人們使用域名而不是 IP 地址,主要是因為域名更容易記憶。但計算機只能透過 IP 地址找到目標伺服器,因此需要使用 DNS(域名解析系統)將域名轉換成 IP 地址。

三、埠號

網絡卡中具有許多和網路通訊的軟體,資料幀到達網絡卡後,根據埠號來區別不同的軟體或程序,埠後是用來確定資料目的程式的
服務型別 預設埠號
HTTP 80
HTTPS 443
FTP 21
MySQL 3306
SSH 22

四、HTTP協議

HTTP(Hypertext Transfer Protocol),即 超文字傳輸協議,是一種無狀態的請求-響應協議,用於客戶端(通常是瀏覽器)和伺服器之間的通訊。它是網際網路中最基礎、最常用的協議之一。HTTP 協議在實現網頁瀏覽時起著核心作用,它是瀏覽器和伺服器之間交換資料的語言。

1、什麼是超文字

“超文字”指的是網頁上的內容,通常以 HTML(Hypertext Markup Language)格式呈現。HTML 是用來描述網頁結構的標記語言,因此,HTTP 協議常常被用於傳輸 HTML 檔案,當然它也傳輸其他格式的檔案,如圖片、影片、JSON 資料等。

2、HTTP請求和響應

HTTP 協議透過 請求(Request)和 響應(Response)進行資料交換。客戶端向伺服器傳送請求,伺服器處理請求後返回響應。

1.HTTP請求

客戶端(如瀏覽器)向伺服器發起請求。通常情況下,客戶端不會主動向伺服器發起請求,而是由使用者觸發的操作(例如點選連結、提交表單等)來生成請求。每個 HTTP 請求都由三個主要部分組成:
請求的組成
(1)請求行(Request Line):
請求方法(GET、POST、PUT、DELETE 等)
請求目標(例如 /index.html)
HTTP 版本(例如 HTTP/1.1)
(2)請求頭(Request Header):
請求頭包含了客戶端的相關資訊。常見的請求頭如下:
Accept-Encoding:指定客戶端能夠接受的編碼方式,例如 gzip, deflate,用來壓縮響應內容。
Host:指定伺服器的主機名,通常是網站的域名(如 www.baidu.com)。
User-Agent:指定發起請求的瀏覽器型別,例如 Mozilla/5.0。
Cookie:客戶端儲存的 Cookie 資訊,用於跟蹤使用者狀態。
(3)請求正文(Request Body):
請求正文包含實際請求的資料,通常用於 POST 或 PUT 請求,用於傳送表單資料或檔案。GET 請求一般沒有請求正文。

GET

/index

.html HTTP

/1.1

Host: www.example.com

User-Agent: Mozilla

/5.0

Accept-Encoding: gzip, deflate, br

這段請求的含義是:客戶端透過 GET 方法請求伺服器上的 /index.html 頁面,使用 HTTP/1.1 協議,且告訴伺服器瀏覽器型別是 Mozilla/5.0,支援 gzip, deflate, br 等壓縮方式。
請求方式
GET:用於請求指定的資源,資料透過 URL 引數傳遞。適用於查詢資料。
POST:用於向伺服器提交資料。適用於提交表單、檔案上傳等操作。
PUT:用於更新指定資源,通常帶有請求正文。
DELETE:用於刪除指定資源。
GET請求
透過URL傳遞引數,URL與引數之間用?隔開,多個引數用&隔開,也是表單的預設提交方式
GET傳送的資料量較小,主要是因為收到URL長度的限制
GET會將資料顯示到URL當中,不安全
GET請求一般用於直接獲取資料,提高查詢速度。
GET是無副作用的,因此可以被快取、書籤和分享
POST請求
POST的資料在請求主體內,所以相對比較安全,但不是絕對安全
POST對上傳資料的大小無限制,POST請求可以做檔案的上傳和下載。POST適用於增刪改操作

2.HTTP響應

伺服器接收到客戶端的請求後,會根據請求的內容返回一個響應。HTTP 響應通常包含以下幾個部分:
響應組成
(1)響應狀態行(Response Status Line):
HTTP 版本(如 HTTP/1.1)
狀態碼(例如 200 OK、404 Not Found、500 Internal Server Error 等)
狀態描述(簡短的文字描述)
(2)響應頭(Response Header):
響應頭包含了伺服器和返回資料的一些元資料:
Content-Type:指定響應資料的型別,如 text/html, application/json。
Content-Length:響應內容的長度。
Set-Cookie:伺服器設定的 Cookie,用於客戶端儲存狀態。
(3)響應正文(Response Body):
響應正文包含實際的響應資料,例如 HTML 檔案、JSON 資料或圖片等內容。
響應狀態碼
200 OK:請求成功,伺服器成功返回資料。
400 Bad Request:請求有語法錯誤,伺服器無法理解。
404 Not Found:請求的資源不存在。
405 Method Not Allowed:請求方法不被伺服器支援。
500 Internal Server Error:伺服器內部錯誤,無法處理請求。
502 Bad Gateway:伺服器作為閘道器或代理,從上游伺服器收到無效響應。

HTTP

/1.1200

OK

Content-Type:

text/

html

Content-Length:

1234

<

html

>
<

body

>
<

h1

>

Welcome

to

Example!

</

h1

>
</

body

>
</

html

>

在這個響應中,伺服器告訴客戶端,/index.html 頁面已成功返回,並且響應的內容為 HTML 格式,長度為 1234 位元組,包含了網頁的內容。

五、HTTPS

為了解決 HTTP 協議的安全問題,引入了 HTTPS(安全超文字傳輸協議)。HTTPS 在 HTTP 的基礎上加入了加密層,利用 SSL(安全套接字層)或 TLS(傳輸層安全協議)對資料進行加密。透過 HTTPS 協議,資料在傳輸過程中會被加密,這不僅保證了資料的機密性(防止資料被竊取),還確保了資料的完整性(防止資料在傳輸過程中被篡改)。

1、HTTPS的加密方式

1.對稱加密

產生秘鑰,加密解密使用同一個秘鑰。對稱加密速度快,但秘鑰的安全性較低,若秘鑰在傳輸過程中被竊取,攻擊者就能輕易解密資料。

2.非對稱加密

產生公鑰和私鑰,公鑰加密的資料需要私鑰解密,私鑰加密的資料需要公鑰解密。處理速度相對較慢,但是安全性較高。

2、HTTPS的加密過程

1.握手階段:

客戶端與伺服器之間首先進行一系列的加密握手。客戶端請求伺服器時,伺服器會返回一個數字證書,證書包含了公鑰和伺服器的身份資訊。客戶端透過驗證證書的合法性來確認伺服器的身份是否可信。

2.金鑰交換:

在握手階段,客戶端和伺服器會使用非對稱加密來交換金鑰。客戶端用伺服器的公鑰加密生成的“會話秘鑰”(對稱秘鑰),然後將加密後的會話秘鑰傳送給伺服器。伺服器用自己的私鑰解密出會話秘鑰。這樣,客戶端和伺服器就建立了一個加密的通訊通道,並可以使用會話秘鑰進行後續的資料加密和解密。

3.資料加密傳輸階段:

在後續的資料傳輸過程中,客戶端和伺服器會使用共享的對稱秘鑰進行加密與解密操作。由於對稱加密的效率高,資料傳輸速度較快。

3、數字證書

為了防止第三方攻擊者偽裝成伺服器進行釣魚攻擊,HTTPS 使用 數字證書 來驗證伺服器的身份。數字證書就像是一個網站的“身份證”,它由 認證機構(CA) 頒發,包含了伺服器的公鑰和身份資訊。
證書組成
  • 證書的持有者資訊(如公司名稱、網站域名等)
  • 公鑰
  • 證書頒發機構(CA)的資訊
  • 證書的有效期
  • 數字簽名(確保證書的完整性,防止篡改
認證機構(CA)是經過各國政府認可的權威機構,它們負責簽發和驗證證書的合法性。客戶端在訪問 HTTPS 網站時,瀏覽器會驗證證書的有效性,確保該證書由受信任的 CA 簽發並且沒有過期。
證書驗證過程
當客戶端訪問 HTTPS 網站時,首先會收到伺服器傳送的數字證書。客戶端會檢查證書的有效性,向證書的釋出機構(CA)確認證書是否合法。如果證書有效,客戶端會提取公鑰來加密生成的會話秘鑰,並將加密後的秘鑰傳送給伺服器。

六、Cookie和Session

1、Cookie

Cookie 是儲存在客戶端瀏覽器中的小檔案,用於儲存使用者的狀態資訊。由於 HTTP 協議是無狀態的,即每次請求都無法自動攜帶上次的狀態資訊,因此需要藉助 Cookie 來維護狀態。

1.Cookie特點

  • 儲存在客戶端,容易被篡改或盜用。
  • 可以設定過期時間。
  • 每次請求都會隨請求頭一起傳送,可能會影響請求效能。

2、Session

Session 是在伺服器端儲存的使用者會話資訊,每個客戶端在訪問伺服器時,伺服器會分配一個唯一的 session ID。這個 ID 通常儲存在客戶端的 Cookie 中,當客戶端再次請求時,瀏覽器會自動帶上這個 session ID,伺服器透過 session ID 找到對應的會話資訊。

1.Session特點

  • 儲存在伺服器端,相對更加安全。
  • 需要藉助客戶端的 Cookie 來維持會話。
  • 不會暴露在客戶端,防止被篡改。

3、Cookie和Session對比

特性 Cookie Session
儲存位置 儲存在客戶端瀏覽器中 儲存在伺服器端
安全性 相對不安全,容易被篡改或盜用 較為安全,資料儲存在伺服器端,客戶端只有 Session ID
容量 通常每個 Cookie 大小為 4KB 受伺服器資源限制,一般較大
生命週期 可以設定過期時間,過期後自動刪除 會話結束或瀏覽器關閉時,Session 會話資料丟失
儲存內容 可以儲存少量資訊(如使用者偏好、登入資訊等) 通常儲存較為重要的使用者資訊,如使用者身份、購物車等
資料傳輸 每次請求都會隨著請求頭一起傳送給伺服器 每次請求時只會傳送 Session ID(通常儲存在 Cookie 中)
效能 每次請求傳送 Cookie 可能會增加網路負擔 效能較好,只傳輸 Session ID,資料儲存在伺服器端
跨域問題 不能跨域使用,不同域名下的 Cookie 無法共享 跨域時需要特別處理(如透過共享 Session ID)
儲存大小限制 每個域名最多儲存 20 個 Cookie,每個 Cookie 4KB 沒有硬性大小限制,但受伺服器記憶體限制
常見用途 使用者偏好、使用者登入狀態、跟蹤使用者行為等 使用者會話管理、驗證使用者身份等

 七、總結HTTP和HTTPS

特性 HTTP HTTPS
全稱 超文字傳輸協議(Hypertext Transfer Protocol) 安全超文字傳輸協議(Hypertext Transfer Protocol Secure)
協議型別 無加密協議 加密協議
安全性 不安全,資料以明文傳輸,容易受到中間人攻擊 安全,資料透過加密傳輸,防止資料被竊取或篡改
加密方式 無加密,資料傳輸過程中沒有保護 使用 SSL/TLS 協議對資料進行加密
埠號 使用 80 埠 使用 443 埠
驗證身份 不提供身份驗證 提供身份驗證,透過數字證書確保伺服器的身份
資料完整性 資料傳輸過程中容易被篡改 資料在傳輸過程中使用加密,保證完整性,防止篡改
效能 效能較高,因為沒有加密解密過程 效能稍低,因為需要加密解密,但使用的加密演算法對比一般不影響正常使用
資料傳輸方式 明文傳輸資料 加密傳輸資料
適用場景 適用於無需保密的內容,如公共資訊、非敏感資料 適用於需要保密和安全傳輸的內容,如登入資訊、支付資訊等
瀏覽器顯示 URL 以http://開頭 URL 以https://開頭,並通常帶有鎖形圖示,表示安全
數字證書 無需數字證書 需要透過 CA 認證機構頒發的數字證書驗證伺服器身份
受信任 無法驗證網站的真實身份,容易被釣魚網站偽造 提供可信的身份驗證,確保使用者訪問的是合法網站
連結:https://blog.csdn.net/weixin_74814027/article/details/145933302?spm=1001.2014.3001.5502
(版權歸原作者所有,侵刪)
文末福利
就目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。
為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套高階運維工程師必備技能資料包,內容有多詳實豐富看下圖!
共有 20 個模組
1.38張最全工程師技能圖譜
2.面試大禮包
3.Linux書籍
4.go書籍
······
6.自動化運維工具
18.訊息佇列合集
 以上所有資料獲取請掃碼
備註:最新運維資料
100%免費領取
(後臺不再回復,掃碼一鍵領取


相關文章