一、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.1 200 OK Content-Type: text/html Content-Length: 1234Welcome to Example!
在這個響應中,服務器告訴客戶端,/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 認證機構頒發的數字證書驗證服務器身份 |
受信任 | 無法驗證網站的真實身份,容易被釣魚網站偽造 | 提供可信的身份驗證,確保用戶訪問的是合法網站 |
-
通信協議
+關注
關注
28文章
970瀏覽量
40816 -
網絡安全
+關注
關注
11文章
3260瀏覽量
60951 -
HTTP
+關注
關注
0文章
515瀏覽量
32236 -
https
+關注
關注
0文章
54瀏覽量
6441
原文標題:HTTP vs HTTPS: 揭秘網絡安全的關鍵差異,你不會還不知道吧?
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
一文讀懂Http和Https的區別

Linux Kernel將HTTP鏈接切換到 HTTPS

探討HTTP為什么要升級 HTTPS協議

評論