計算機網絡--HTTP協議

1. 什么是 HTTP 協議

  • 全稱Hyper?Text?Transfer?Protocol(超文本傳輸協議)

  • 作用:用于在服務器客戶端(通常是瀏覽器)之間傳輸超文本數據(如文字、圖片、視頻、音頻)的應用層協議

  • 工作模式:HTTP 是一個雙向協議,基于經典的客戶端-服務器架構(B/S架構)進行工作。通信流程是:瀏覽器(客戶端)發送請求(Request)給服務器,服務器處理請求后,向瀏覽器返回響應(Response)

2. HTTP 協議通信過程

HTTP 本身不負責傳輸,它依賴于下層的?TCP 協議(默認端口 80)來建立可靠連接。

http 協議通信過程包括如下步驟:
1.當用戶發起一個新的請求;

2.瀏覽器發起對服務器的 TCP 連接請求;

3.服務器與瀏覽器之間會按照 TCP 協議的三次握手,建立之間的 TCP 連接;

4.瀏覽器按照 http 協議格式,創建請求數據包( http 請求報文)

5.將請求數據包( http 請求報文)發送至服務器;

6.服務器按照 http 協議格式,解析請求報文;

7.執行請求處理,調用相關業務邏輯方法,產生響應數據;

8.服務器按照 http 協議格式,將響應數據封裝至響應數據包( http 響應報文)

9.服務器將響應數據包,發送至瀏覽器

10.瀏覽器按照 http 協議格式,對響應數據包進行解析;11.瀏覽器將響應數據包中的響應內容,顯示至瀏覽器頁面,呈現給用戶;

3. URL - 如何定位資源?

HTTP 協議使用?URL(統一資源定位符)來指明要訪問的網絡資源。

  • 格式http://host[:port][abs_path]

  • 示例:http//192.168.0.116:8080/index.html
    • http:協議類型。

    • host:服務器的主機域名或 IP 地址(如?www.example.com?或?192.168.1.1)。

    • port:端口號,可選(省略時使用默認端口 80)。

    • abs_path:資源的路徑(如?/index.html)。

  • URL 與 URI 的關系

    • URI(統一資源標識符)是一個更廣泛的概念,用于標識一個資源。

    • URL(統一資源定位符)是 URI 的子集,不僅標識了資源,還提供了定位(找到)該資源的方式

    • 另一個子集是?URN(統一資源名稱),它只定義資源名稱而不提供定位方式(例如?urn:isbn:0451450523?只告訴我們有一本書,但沒告訴我們去哪找)。

4.HTTP報文

4.1.請求報文

  1. 請求行(Request Line):包含請求方法(如GET/POST)、請求的URLHTTP協議版本

    • 示例:GET /index.html HTTP/1.1

  2. 請求頭(Request Headers):包含若干行首部字段,以鍵值對形式傳遞附加信息(如客戶端類型、接受的數據格式等)。

    • 示例:Host: www.example.com,?User-Agent: Chrome/...

  3. 空行:用于分隔頭部和主體。

  4. 請求體(Request Body):可選部分,通常用于?POST?或?PUT?等方法,存放要提交給服務器的數據(如表單數據、JSON等)。GET 請求沒有請求體

4.2響應報文

  1. 狀態行(Status Line):包含HTTP協議版本狀態碼狀態描述

    • 示例:HTTP/1.1 200 OK

  2. 響應頭(Response Headers):包含若干行首部字段,以鍵值對形式傳遞關于響應的附加信息(如服務器類型、內容類型、內容長度等)。

    • 示例:Content-Type: text/html,?Content-Length: 1024

  3. 空行:用于分隔頭部和主體。

  4. 響應體(Response Body):服務器返回的實際內容(如請求的HTML文檔、圖片數據等)。

5.請求方式

定義了對資源要執行的操作。最常用的兩種是?GET?和?POST

方法描述特點
GET獲取資源。參數通過URL傳遞(在請求頭中),有長度限制,冪等(多次執行結果相同),可被緩存。
POST提交/增加數據。參數放在請求體中,更安全,無長度限制,不冪等(多次提交可能產生不同結果)。
HEAD獲取資源的響應頭,不返回響應體。用于檢查資源是否存在、是否被修改等。
PUT修改/替換資源。將數據體內容保存到請求URL指定位置。冪等
DELETE刪除指定資源。冪等
OPTIONS查詢服務器對指定URL支持的請求方法返回?Allow: GET, POST, HEAD...等請求方式的內容

GET和POST的區別:

  1. 用途不同:GET 主要用于獲取數據,POST 主要用于提交數據

  2. 請求報文格式不同

    • GET 方法請求報文第一行格式為:GET /URL HTTP/1.1 \r\n

    • POST 方法請求報文第一行格式為:POST /URL HTTP/1.1 \r\n

  3. 參數位置不同:GET 通過 URL 的查詢字符串(Query String)?傳遞參數,POST 通過請求體(Request Body)?提交數據。

  4. 特性不同

    • GET 是冪等的且可緩存

    • POST 是非冪等的且不可緩存

    • 冪等:指多次執行相同的操作,結果都是相同的。

6.HTTP首部字段

  • 通用類

    • Connection: keep-alive:客戶端要求服務器使用長連接,以便復用TCP連接。

  • 請求頭(Client -> Server)

    • Host: www.example.com必須的字段,指定請求的目標服務器域名。

    • Accept: text/html:告訴服務器客戶端能處理哪些類型的響應內容。

    • Accept-Encoding: gzip:告訴服務器客戶端支持哪些壓縮格式

  • 響應頭(Server -> Client)

    • Content-Type: text/html; charset=utf-8極其重要,告訴客戶端響應體的媒體類型(MIME type)字符編碼。瀏覽器據此決定如何解析內容。

    • Content-Length: 1000:指明響應體的長度(字節數)。

    • Content-Encoding: gzip:說明響應體使用的壓縮格式(與Accept-Encoding對應)

7.HTTP狀態碼

分類含義常見狀態碼
1xx信息性狀態碼表示請求已被接受,需要繼續處理。(不常見)
2xx成功200 OK:請求成功。
204 No Content:成功,但無內容返回。
3xx重定向301 Moved Permanently永久重定向。
302 Found臨時重定向。
4xx客戶端錯誤

400 Bad Request:請求報文有語法錯誤。
403 Forbidden:服務器拒絕訪問(權限不足)。
404 Not Found:請求的資源在服務器上不存在。

5xx服務器錯誤500 Internal Server Error:服務器內部錯誤。
502 Bad Gateway:網關/代理錯誤,后端服務器無響應。
503 Service Unavailable:服務器當前忙,暫時無法處理請求。

8.HTTP加密

8.1HTTP協議存在的問題

HTTP 由于使用明文傳輸,所以存在以下安全問題:

  • 使用明文進行通信,內容可能會被竊聽,比如被抓包;

  • 不驗證通信方的身份,通信方的身份有可能遭遇偽裝,比如釣魚網站;

  • 無法證明報文的完整性,報文有可能遭篡改,比如強制在線廣告植入。

8.2什么是HTTPS協議

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

8.3HTTP和HTTPS有哪些區別?

  1. HTTP 是超文本傳輸協議,信息是明文傳輸,存在安全風險的問題。 HTTPS 則解決 HTTP ”不安全的缺陷, 在 TCP 和 HTTP 網絡層之間加入了 SSL 安全協議,使得報文能夠加密傳輸。

  2. HTTP 連接建立相對簡單, TCP 三次握手之后便可進行 HTTP 的報文傳輸。而 HTTPS 在 TCP 三次握手之后,還需進行 SSL 的握手過程,才可進入加密報文傳輸。

  3. HTTP的端口號是80,HTTPS的端口號是443.

  4. HTTPS協議需要CA申請數字整數,來保證服務器的身份是可信的。

8.4加密方式

8.4.1對稱密鑰加密

對稱密鑰加密 ( Symmetric-Key Encryption ) ,加密和解密使用同一密鑰。

  • 優點: 運算速度快;

  • 缺點: 無法安全地將密鑰傳輸給通信方。

8.4.2飛非對稱密鑰加密

非對稱密鑰加密,又稱公開密鑰加密 ( Public-Key Encryption ) ,加密和解密使用不同的密鑰。

公開密鑰所有人都可以獲得,通信發送方獲得接收方的公開密鑰之后,就可以使用公開密鑰進行加密,接收方收到通信內容后使用私有密鑰解密。

非對稱密鑰除了用來加密,還可以用來進行簽名。因為私有密鑰無法被其他人獲取,因此通信發送方使用其私有密鑰進行簽名,通信接收方使用發送方的公開密鑰對簽名進行解密,就能判斷這個簽名是否正確。

  • 優點: 可以更安全地將公開密鑰傳輸給通信發送方;

  • 缺點: 運算速度慢。

8.5. HTTPS的工作原理

  1. 用戶通過瀏覽器請求 https 網站,服務器收到請求,選擇瀏覽器支持的加密和 hash 算法,同時返回數字證書給瀏覽器,包含頒發機構、網址、公鑰、證書有效期等信息。

  2. 瀏覽器對證書的內容進行校驗,如果有問題,則會有一個提示警告。否則,就生成隨機密鑰 X ,同時使用證書中的公鑰進行加密,并且發送給服務器。

  3. 服務器收到之后,使用私鑰解密,得到隨機密鑰 X ,然后使用隨機密鑰 X 對網頁內容進行加密,返回給瀏覽器。

  4. 瀏覽器則使用隨機密鑰 X 和之前約定的加密算法進行解密,得到最終的網頁內容。

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

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

相關文章

Bee1.17.25更新Bug,完善功能.不支持NOSQL,分庫分表Sharding(2.X版有)

Bee 1.17.25 正常的ORM功能都有,但不支持NOSQL, 分庫分表Sharding; 若需要可使用2.X版. Bee, 接口簡單,功能齊全,性能好,支持原生分頁性能更高;還有分庫分表 (Sharding 分片) 功能,也支持 MongoDB ORM. Bee Hiberna…

RAG流程全解析:從數據到精準答案

Rag流程分析第一部分:數據處理與向量化 原始文檔進入系統,先經過格式識別,把 pdf、docx、pptx、掃描圖片等統一轉成文字流。文字流丟進分段器,按固定長度或語義邊界切成若干文本塊,每個塊再生成唯一 id。如果文檔里有表…

Matplotlib數據可視化實戰:Matplotlib圖表注釋與美化入門

圖表注釋與標簽:提升數據可視化效果 學習目標 通過本課程的學習,學員將掌握如何使用Matplotlib在圖表中添加文本注釋、圖例、標題和軸標簽,從而提高圖表的可讀性和信息傳達能力。本課程將通過實際案例,幫助學員理解每個元素的作用…

GitLab 安全漏洞 CVE-2025-7739 解決方案

本分分享極狐GitLab 補丁版本 18.2.2, 18.1.4, 18.0.6 的詳細內容。這幾個版本包含重要的缺陷和安全修復代碼,我們強烈建議所有私有化部署用戶應該立即升級到上述的某一個版本。對于極狐GitLab SaaS,技術團隊已經進行了升級,無需用戶采取任何…

C端高并發項目都有哪些

C端(用戶端)高并發項目通常涉及大規模用戶直接訪問的服務,其核心挑戰是如何在海量用戶同時請求下,保證系統的穩定性、高性能、高可用和一致性。以下是一些典型的C端高并發項目類型和具體案例:?核心類型與典型案例&…

OSCP - Proving Grounds - Shenzi

主要知識點 路徑爆破小技巧 windows AlwaysInstallElevated 提權 具體步驟 依舊是nmap開始,其中80/443/139/445端口值得關注一下 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-01 15:06 UTC Nmap scan report for 192.168.53.55 Host is up (0.0008…

結合BI多維度異常分析(日期-> 商家/渠道->日期(商家/渠道))

技術手段: BI工具(finereport )、python、sql 數據更新: 每日零點更新數據。(獨立開發) 商業智能分析平臺 | Python/FineReport/SQLAlchemy 項目描述 業務價值 :解決原有系統無法快速定位傭金異…

計算機畢設Spark項目實戰:基于大數據技術的就業數據分析系統Django+Vue開發指南

🎓 作者:計算機畢設小月哥 | 軟件開發專家 🖥? 簡介:8年計算機軟件程序開發經驗。精通Java、Python、微信小程序、安卓、大數據、PHP、.NET|C#、Golang等技術棧。 🛠? 專業服務 🛠? 需求定制化開發源碼提…

如何讓FastAPI任務系統在失敗時自動告警并自我修復?

url: /posts/2f104637ecc916e906c002fa79ab8c80/ title: 如何讓FastAPI任務系統在失敗時自動告警并自我修復? date: 2025-08-20T08:18:42+08:00 lastmod: 2025-08-20T08:18:42+08:00 author: cmdragon summary: FastAPI 和 Celery 結合提供了強大的異步任務處理能力,但在分布…

Gitee倉庫 日常操作詳細步驟

新建倉庫 → 上傳代碼 步驟1、打開Gitee倉庫網站:開源軟件 - Gitee.com 步驟2、點擊右上角加號 點擊新建倉庫。 步驟3、設置倉庫名 ,選擇是否開源 ,點擊創建。 步驟4、記住遠程倉庫URL 步驟5、本地新建文件夾,然后進行上傳代碼…

Python采集易貝(eBay)商品詳情API接口,json數據返回

Python采集易貝(eBay)商品詳情API接口要采集eBay商品詳情,你可以使用eBay官方提供的API。以下是使用Python通過eBay Finding API獲取商品詳情的完整示例:準備工作注冊賬號并獲取API密鑰:選擇適合的API(如Finding API、Shopping AP…

如何將任意文件一鍵轉為PDF?

無論你用什么軟件打開文件(Word、Excel、網頁、CAD圖紙、圖片等),只要能打印,就可以通過虛擬打印機將其轉為PDF,確保對方收到的文件看起來和你看到的一模一樣。它是小巧實用的PDF虛擬打印工具,采用安裝包形…

遷移學習+多模態融合破解跨域難題,解鎖視覺感知新范式

在近期的頂會頂刊中,遷移學習與多模態融合的熱度居高不下,相關成果頻出,部分模型在特定任務里性能提升極為顯著。登上頂刊 TPAMI 2025 的某篇研究,借助語言引導的關系遷移,大幅提升了少樣本類增量學習中模型的泛化能力…

C語言---分隔符、常量、注釋、標識符、關鍵字、空格

文章目錄分隔符注釋注意標識符標識符的定義標識符的命名要求合法與非法標識符示例關鍵字關鍵字定義關鍵字一覽(按功能分類)空格一、空格的作用:分隔令牌 (Tokens)空格的使用場景必須用空格分隔的情況不能有空格的情況分隔符 分隔符名稱主要用途;分號語句結束符,逗號…

創建Vue項目的不同方式及項目規范化配置

1 項目的創建與運行 1.1 基于webpack構建工具——vue-cli腳手架 1. 安裝腳手架 :npm i -g vue/cli # 安裝一次即可,之前安裝過則無需重復安裝 2. 切換到項目所在目錄 :cd 項目所在目錄 3. 創建項目 :vue create 項目名 4. 自定…

K距離間隔重排字符串 (LeetCode 358) — Swift解法 + 可運行Demo

文章目錄摘要描述解決方法分析問題和解決代碼代碼要點詳解示例測試和結果時間復雜度空間復雜度總結摘要 這道題的核心是:把字符串里的字符重新排一下順序,讓相同字符之間至少隔開 k 個位置。如果做不到,就返回空串。看上去像“排座位”&…

React native Navigation 詳解

Tab Navigator(標簽導航器) 概念 Tab Navigator 是 React Navigation 中用于創建底部或頂部標簽欄導航的組件。它允許用戶在不同的屏幕之間快速切換,每個標簽對應一個獨立的屏幕。 基本用法 import {createBottomTabNavigator } from @react-navigation/bottom-tabs; im…

[GraphRAG]完全自動化處理任何文檔為向量知識圖譜:AbutionGraph如何讓知識自動“活”起來?

在當今信息爆炸的時代,企業和研究人員面對大量非結構化文檔時,如何高效地提取、存儲和查詢其中的知識,已成為一個核心挑戰。傳統的關鍵詞檢索早已無法滿足深層次語義關聯和智能問答的需求。 每天面對成百上千份PDF論文、Excel報告、行業白皮…

模擬tomcat接收GET、POST請求

訪問: http://localhost:10086/mytomcatMyTomcat/ └── src/└── com/└── zhang/├── MyServer.java├── MyRequest.java├── MyResponse.java├── MyMapping.java├── MyServlet.java└── MyHttpServlet.java核心類功能說明 MyServer.java 服務…

氯化釔:科技與高性能材料的核心元素

氯化釔是釔元素的氯化物,廣泛應用于高性能材料、催化劑、光電技術等領域。作為稀土元素之一,釔因其獨特的物理和化學特性,在現代工業中具有重要地位,而氯化釔則是其中的關鍵化合物之一。氯化釔的優勢與特點1. 化學穩定性強氯化釔具…