HTTP 協議:從原理到應用的深度剖析

一、什么是HTTP協議?

????????HTTP協議,全稱 Hyper Text Transfer Protocol(超?本傳輸協議)的縮寫,是?于服務器客戶端瀏覽器之間傳輸超?本數據(?字、圖?、視頻、?頻)的應?層協議它規定了客戶端如何向服務器發送請求,以及服務器如何對請求做出響應,定義了請求和響應的格式與規則,是互聯網通信的基石。

協議特點:靈活可擴展、基于TCP/IP的可靠傳輸、應用層協議、請求-應答模式、無狀態。

二、HTTP協議通信過程

HTTP是一個應用層協議,默認端口為80,在傳輸層使用TCP協議進行數據的傳輸。

通信過程如下:

1.當用戶發起一個新的請求;
2.瀏覽器發起對服務器的TCP連接請求;
3.服務器與瀏覽器之間會按照TCP協議的三次握手,建立之間的TCP連接;
4.瀏覽器按照http協議格式,創建請求數據包(http請求報文);
5.將請求數據包(http請求報文)發送至服務器;
6.服務器按照http協議格式,解析請求報文;
7.執行請求處理,調用相關業務邏輯方法,產生響應數據;
8.服務器按照http協議格式,將響應數據封裝至響應數據包(http響應報文);
9.服務器將響應數據包,發送至瀏覽器;
10.瀏覽器按照http協議格式,對響應數據包進行解析;
11.瀏覽器將響應數據包中的響應內容,顯示至瀏覽器頁面,呈現給用戶;? ??

三、HTTP報文

1.請求報文

????????瀏覽器通過URL發起?個請求時,會發送?個 http 請求報?給?標服務器,服務器根據請求報?中攜帶的請求數據進?處理。

???????? 請求報文結構
·第一行是包含:請求方式、URL、協議版本
·接下來的多?都是http請求?部內容,其中包含若?個http?部字段
·?個空??來分隔?部和內容主體Body
·最后是請求的內容主體

2.響應報文

????????當服務器處理完請求后,會將響應數據放入http響應報文中返回給瀏覽器。

? ? ? ? 響應報文結構:
·第一行包含:協議版本、狀態碼以及描述。
·接下來的若干行是首部內容
·一個空行分隔首部和內容主體
·最后是響應的內容主體

四、HTTP請求方式

1.GET:獲取資源

????????GET方法用于使用給定的URL從給定服務器中檢索信息,完成從指定資源中請求數據。使用GET方法的請求應該只是檢索數據,并且不會對數據產生其他影響。

2.POST:提交數據增加資源

????????POST方法用于將數據發送到服務器以創建或增加資源。使用post方法,如果兩個請求相同,后一個請求不會覆蓋第一個請求,所以post用于增加資源。

3.HEAD:獲取響應報頭

????????HEAD和GET方法類似,但是不返回響應報文內容主體部分,僅傳輸響應報頭部分。主要用于確認URL的有效性以及資源更新的日期時間等。

4.PUT:修改資源

????????PUT方法用來修改資源,要求在請求報文的主體中包含數據內容,然后保存到請求URL指定位置。使用put方法,如果兩個請求相同,后一個請求會覆蓋第一個請求,所以put用于修改資源。

5.DELETE:刪除資源

????????DELETE方法用來刪除指定的資源。

6.OPTIONS:查詢支持的方法

????????查詢指定的URL能夠支持的方法。會返回Allow:GET,POST,HEAD,OPTIONS等請求方式內容。

GET和POST的區別:

? ? ? ? 1.GET用于獲取數據,POST用于提交數據;

? ? ? ? 2.GET和POST的請求報文格式不同;

? ? ? ? 3.GET使用請求報文中的首部字段URL傳遞請求參數,POST使用Request Boby提交數據;

? ? ? ? 4.GET是冪等且可緩存,POST非冪等且不可緩存;

????????????????「冪等」:意思是多次執行相同的操作,結果都是「相同」的。

五、HTTP首部字段?

字段名說明示例
Host服務器域名Host: www.example.com
Content-Type內容類型Content-Type: text/html; charset=utf-8
Content-Length內容長度Content-Length: 1024
Connection連接控制Connection: keep-alive
Accept可接受的響應類型Accept: application/json
User-Agent客戶端信息User-Agent: Mozilla/5.0...

六、HTTP狀態碼

服務器返回的響應報文中第一行為狀態行,包含了狀態碼以及原因短語,用來告知客戶端請求后的響應結果。?

1XX信息

????????1XX類狀態碼屬于提示信息,是協議處理中的?種中間狀態,實際?作中使?場景?較少。

2XX成功

????????2XX類狀態碼表示服務器成功處理了客戶端的請求。
???????200 OK:最常?的成功狀態碼,表示?切正常。
????????·204 No Content:常?的成功狀態碼,與200OK基本相同,但響應報?沒有body數據。
????????·206 Partial Content:是應?于HTTP分塊下載或斷點續傳,表示響應返回的body數據并不是資源的全部,?是其中的?部分,也是服務器處理成功的狀態。

3XX重定向

????????3XX類狀態碼表示客戶端請求的資源發送了變動,需要客戶端?新的URL重新發送請求獲取資源,也就是重定向。
????????·301 Moved Permanently:表示永久重定向,說明請求的資源已經不存在了,需改?新的URL再次訪問。
????????·302 Found:表示臨時重定向,說明請求的資源還在,但暫時需要?另?個URL來訪問。

4XX客戶端錯誤

????????4XX類狀態碼表示客戶端發送的報?有誤,服務器?法處理。
????????·400 Bad Request:表示客戶端請求的報?有錯誤。
????????·403 Forbidden:表示服務器禁?訪問資源。
????????·404 Not Found:表示請求的資源在服務器上不存在或未找到,所以?法提供給客戶端。
????????·405 Not Allowed:表示服務器不?持客戶端采?的請求?式。

5XX服務器錯誤

????????5XX類狀態碼表示客戶端請求報?正確,但是服務器處理時內部發?了錯誤,屬于服務器端的錯誤碼。
????????·500 Internal Server Error:服務器發?了內部錯誤。
????????·501 Not Implemented:表示客戶端請求的功能還不?持,類似“即將開業,敬請期待”的意思。
????????·502 Bad Gateway:通常是服務器作為?關或代理時返回的錯誤碼,表示服務器?身?作正常,訪問后端服務器發?了錯誤。
????????·503 Service Unavailable:表示服務器當前很忙(過載),暫時?法響應服務器,類似“?絡服務正忙,請稍后重試”的意思。

七、連接管理

1.長連接和短鏈接

????????短連接,每次使?HTTP協議進?通信,都需要重新按照三次握?的?式,建??個獨?的TCP連接,響應完畢后,通過四次揮?斷開連接。
????????連接,只需要建??次TCP連接就能進?多次HTTP通信,這種?減少了TCP連接的重復建?和斷開所造成的額外開銷,減輕了服務器端的負載。
? ? ? ??? ? ? ??
????????·在HTTP/1.0默認是短連接,,如果需要使??連接,則使?Connection:Keep-Alive
????????·從HTTP/1.1默認是?連接,如果要斷開連接,需要由客戶端或者服務器端提出斷開,使用Connection:close;
????????

2.管線化鏈接

????????將多個HTTP請求(request)整批提交的技術,在傳送過程中不需先等待服務端的回應。管線化機 制須通過?連接(persistent connection)完成,僅HTTP/1.1?持此技術(HTTP/1.0不?持)。

八、HTTPS加密

1.HTTP協議存在的問題

????????HTTP由于使?明?傳輸,不安全。所以可能會出現內容被竊聽(?如被抓包);不驗證通信?的身 份,通信?的身份有可能遭遇偽裝(?如釣??站);?法證明報?的完整性,報?有可能遭篡改(?如強制在線?告植?)

2.什么是HTTPS協議?

????????HTTPS并不是?個新的協議,它使?了隧道進?通信,讓 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信。通過使?SSL,HTTPS具有了加密(防竊聽)、認證(防偽裝)和完整性保護(防篡改)。

3.加密方式有哪些?

1.消息摘要加密,例如:MD5、SHA

2.對稱式加密:加密和解密使用同一把密鑰

? ? ? ? 優點:加密速度快

????????缺點:?法安全的將密鑰傳輸給發送?

3.非對稱式加密:兩把密鑰,公鑰加密,私鑰解密

? ? ? ? 優點:可以更安全地將信息傳輸給通信發送?

? ? ? ? 缺點:運?速度慢

4.HTTPS的工作原理

1.?戶通過瀏覽器請求https?站,服務器收到請求,選擇瀏覽器?持的加密和hash算法,返回數
字證書 給瀏覽器,包含頒發機構、?址、公鑰、證書有效期等信息;
2.瀏覽器對證書的內容進?校驗,如果有問題,則會有?個提示警告。否則,就?成隨機秘鑰X,同時使 ?證書中的公鑰進?加密,并且發送給服務器;
3.服務器收到之后,使?私鑰解密,得到隨機秘鑰X,然后使?隨機秘鑰x對??內容進?加密,返回給瀏覽器;
4.瀏覽器則使?隨機秘鑰X和之前約定的加密算法進?解密,得到最終的??內容。

?????九、總結

????????HTTP作為Web通信的基石,其報文結構、請求方法、狀態碼與連接管理等核心機制,不僅是開發者必須掌握的基礎知識,更是構建高效、可靠網絡應用的關鍵。隨著網絡安全威脅日益增多,HTTPS通過引入加密傳輸與身份驗證機制,有效彌補了HTTP在安全性方面的先天不足,已成為現代Web應用中不可或缺的標準配置。深入理解HTTP與HTTPS的工作原理,不僅有助于提升系統性能與用戶體驗,更是構建安全、可信網絡環境的必經之路。希望本文能為你的學習與實踐帶來切實幫助。

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

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

相關文章

【算法--鏈表】138.隨機鏈表的復制--通俗講解

算法通俗講解推薦閱讀 【算法–鏈表】83.刪除排序鏈表中的重復元素–通俗講解 【算法–鏈表】刪除排序鏈表中的重復元素 II–通俗講解 【算法–鏈表】86.分割鏈表–通俗講解 【算法】92.翻轉鏈表Ⅱ–通俗講解 【算法–鏈表】109.有序鏈表轉換二叉搜索樹–通俗講解 【算法–鏈表…

為什么現在企業注重數據可視化?一文講清可視化數據圖表怎么做

目錄 一、企業注重數據可視化的原因 1.提升數據理解效率 2.發現數據中的規律和趨勢 3.促進企業內部溝通與協作 4.增強決策的科學性 5.提升企業競爭力 二、可視化數據圖表的基本概念 1.常見的可視化圖表類型 2.可視化圖表的構成要素 3.可視化圖表的設計原則 三、制作…

Cursor 輔助開發:快速搭建 Flask + Vue 全棧 Demo 的實戰記錄

Cursor 輔助開發:快速搭建 Flask Vue 全棧 Demo 的實戰記錄 🌟 Hello,我是摘星! 🌈 在彩虹般絢爛的技術棧中,我是那個永不停歇的色彩收集者。 🦋 每一個優化都是我培育的花朵,每一個…

實戰:用 Python 搭建 MCP 服務 —— 模型上下文協議(Model Context Protocol)應用指南

📌 實戰:用 Python 搭建 MCP 服務 —— 模型上下文協議(Model Context Protocol)應用指南 標簽:#MCP #AI工程化 #Python #LLM上下文管理 #Agent架構🎯 引言:為什么需要 MCP? 在構建大…

宋紅康 JVM 筆記 Day16|垃圾回收相關概念

一、今日視頻區間 P154-P168 二、一句話總結 System.gc()的理解;內存溢出與內存泄漏;Stop The World;垃圾回收的并行與并發;安全點與安全區域;再談引用:強引用;再談引用:軟引用;再談…

OpenCV 高階 圖像金字塔 用法解析及案例實現

目錄 一、什么是圖像金字塔? 二、圖像金字塔的核心作用 三、圖像金字塔的核心操作:上下采樣 3.1 向下采樣( pyrDown ):從高分辨率到低分辨率 1)原理與步驟 2)關鍵注意事項 3)…

【ARMv7】系統復位上電后的程序執行過程

引子:對于ARMv7-M系列SOC來說,上電后程序復位執行的過程相對來說比較簡單,因為絕大部分芯片,都是XIP(eXecute In Place,就地執行)模式執行程序,不需要通過BooROM->PL(preloader)-…

神經網絡的初始化:權重與偏置的數學策略

在深度學習中,神經網絡的初始化是一個看似不起眼,卻極其重要的環節。它就像是一場漫長旅程的起點,起點的選擇是否恰當,往往決定了整個旅程的順利程度。今天,就讓我們一起深入探討神經網絡初始化的數學策略,…

第 16 篇:服務網格的未來 - Ambient Mesh, eBPF 與 Gateway API

系列文章:《Istio 服務網格詳解》 第 16 篇:服務網格的未來 - Ambient Mesh, eBPF 與 Gateway API 本篇焦點: 反思當前主流 Sidecar 模式的挑戰與權衡。 深入了解 Istio 官方的未來演進方向:Ambient Mesh (無邊車模式)。 探討革命性技術 eBPF 將如何從根本上重塑服務網格的…

擺動序列:如何讓數組“上下起伏”地最長?

文章目錄摘要描述題解答案題解代碼分析代碼解析示例測試及結果時間復雜度空間復雜度總結摘要 今天我們要聊的是 LeetCode 第 376 題 —— 擺動序列。 題目的意思其實很有意思:如果一個序列里的相鄰差值能保持正負交替,就叫做“擺動”。比如 [1, 7, 4, 9…

玩轉Docker | 使用Docker部署KissLists任務管理工具

玩轉Docker | 使用Docker部署KissLists任務管理工具 前言 一、KissLists介紹 KissLists簡介 KissLists核心特點 KissLists注意事項 二、系統要求 環境要求 環境檢查 Docker版本檢查 檢查操作系統版本 三、部署KissLists服務 下載KissLists鏡像 編輯部署文件 創建容器 檢查容器狀…

【滑動窗口】C++高效解決子數組問題

個人主頁 : zxctscl 專欄 【C】、 【C語言】、 【Linux】、 【數據結構】、 【算法】 如有轉載請先通知 文章目錄前言1 209. 長度最小的子數組1.1 分析1.2 代碼2 3. 無重復字符的最長子串2.1 分析2.2 代碼3 1004. 最大連續1的個數 III3.1 分析3.2 代碼4 1658. 將 x …

[rStar] 搜索代理(MCTS/束搜索)

第2章:搜索代理(MCTS/束搜索) 歡迎回到rStar 在前一章中,我們學習了求解協調器,它就像是解決數學問題的項目經理。 它組織整個過程,但本身并不進行"思考",而是將這項工作委托給其專家團隊。 今天&#x…

Electron 核心模塊速查表

為了更全面地覆蓋常用 API,以下表格補充了更多實用方法和場景化示例,同時保持格式清晰易讀。 一、主進程模塊 模塊名核心用途關鍵用法 示例注意事項app應用生命周期管理? 退出應用:app.quit()? 重啟應用:app.relaunch() 后需…

Qt C++ 圖形繪制完全指南:從基礎到進階實戰

Qt C 圖形繪制完全指南:從基礎到進階實戰 前言 Qt框架提供了強大的2D圖形繪制能力,通過QPainter類及其相關組件,開發者可以輕松實現各種復雜的圖形繪制需求。本文將系統介紹Qt圖形繪制的核心技術,并通過實例代碼演示各種繪制技巧…

二分搜索邊界問題

在使用二分搜索的時候&#xff0c;更新條件不總是相同&#xff0c;雖然說使用bS目的就是為了target&#xff0c;但也有如下幾種情況&#xff1a;求第一個target的索引求第一個>target的索引求第一個>target的索引求最后一個target的索引求最后一個<target的索引求最后…

【springboot+vue3】博客論壇管理系統(源碼+文檔+調試+基礎修改+答疑)

目錄 一、整體目錄&#xff1a; 項目包含源碼、調試、修改教程、調試教程、講解視頻、開發文檔&#xff08;項目摘要、前言、技術介紹、可行性分析、流程圖、結構圖、ER屬性圖、數據庫表結構信息、功能介紹、測試致謝等約1萬字&#xff09; 二、運行截圖 三、代碼部分&…

20250907_梳理異地備份每日自動巡檢Python腳本邏輯流程+安裝Python+PyCharm+配置自動運行

一、邏輯流程(autocheckbackup.py在做什么) 1.連接Linux服務器 用 paramiko 登錄你配置的 Linux 服務器(10.1.3.15, 10.1.3.26),進入指定目錄(如 /home, /backup/mes),遞歸列出文件。 采集到的信息:服務器IP、目錄、數據庫名稱、文件名、大小、修改時間。 2.連接Wind…

terraform-state詳解

一、Treeaform-state的作用 Terraform-state是指Terroform的狀態&#xff0c;是terraform不可缺少的生命周期元素。本質上來講&#xff0c;terraform狀態是你的基礎設施配置的元數據存儲庫&#xff0c;terraform會把它管理的資源狀態保存在一個狀態文件里。 默認情況下&#xf…

四、kubernetes 1.29 之 Pod 生命周期

一、概述當容器與 pause 容器共享網絡&#xff08;Network&#xff09;、IPC&#xff08;進程間通信&#xff09;和 PID&#xff08;進程命名空間&#xff09;后&#xff0c;二者形成了一種緊密的 "共享命名空間" 關系&#xff0c;共同構成了 Kubernetes 中 "Po…