Linux -- 應用層協議Http

1.HTTP背景知識

HTTP協議:HTTP(HyperText Transfer Protocol,超文本傳輸協議)的本質是運行在 TCP/IP 協議族之上的 “應用層協議”,核心作用是定義客戶端(如瀏覽器、APP)與服務器之間的 “數據交互格式與流程”,最終實現 “超文本(如 HTML、圖片、JSON)的傳輸與展示”。HTTP 協議的實質:應用層的 “請求 - 響應” 通信規則。

HTTP協議是客?端與服務器之間通信的基礎。HTTP 是 “應用層的通信語言”—— 就像兩個人對話需要共同語言(如中文、英文),客戶端和服務器要交互數據,也需要提前約定 “如何發起請求、如何返回響應、數據用什么格式封裝”,HTTP 就是這套約定好的 “語言規則”。
客?端通過HTTP協議向服務器發送請求,服務器收到請求后處理并返回響應。HTTP協議是?個?連接、?狀態的協議。“無連接” 并非 “不建立連接”,而是指客戶端與服務器的連接 “按需建立、用完即斷”,不長期維持一個固定連接。“無狀態” 是指服務器對每個 HTTP 請求的處理都是 “獨立的、孤立的”,不保存客戶端的任何 “上下文信息”—— 即服務器無法通過前一次請求的信息,判斷當前請求是否來自同一個客戶端。
與我們之前實現的單純tcp或者udp服務器不同,之前的客戶端與服務器在連接以后就一直進入循環進行收發消息,而HTTP協議只會按需建立連接,處理完一次客戶端的請求以后就會斷開連接。

為什么設計為無狀態?核心是降低服務器負擔:若服務器需要記憶每個客戶端的狀態(如登錄狀態、瀏覽記錄),則需為每個客戶端維護 “狀態數據”,當并發量極高(如百萬級用戶)時,服務器的內存和性能會被嚴重消耗。

如何解決 “無狀態” 的局限性?通過 “額外機制” 在無狀態基礎上實現 “狀態保持”,最典型的是Cookie+Session。

認識URL :平時我們俗稱的 "?址" 其實就是說的 URL

2.HTTP協議組成部分

HTTP請求通常包括四個部分:
1.請求行?[?法] + [url] + [版本]
2.請求報頭?請求的屬性, 冒號分割的鍵值對;每組屬性之間使? \r\n 分隔;遇到空?表? Header部分結束
3.空白行?
4.請求正文?Body: 空?后?的內容都是Body. Body允許為空字符串. 如果Body存在, 則在Header中會有?個Content-Length屬性來標識Body的?度;

HTTP響應格式與請求格式類似也是分為四個部分,只是第一行變變為狀態行,且其中填寫的內容有所不同。

3.HTTP的?法

HTTP的?法,常用的一般就是GET和POST方法
1. GET?法(重點)
?途:?于請求URL指定的資源。
?例: GET /index.html HTTP/1.1
特性:指定資源經服務器端解析后返回響應內容。
2. POST?法(重點)
?途:?于傳輸實體的主體,通常?于提交表單數據。
?例: POST /submit.cgi HTTP/1.1
特性:可以發送?量的數據給服務器,并且數據包含在請求體中。

4.HTTP的狀態碼

我們常用的狀態碼有404(Not Found),200(OK),403((Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)

HTTP狀態碼301(永久重定向)和302(臨時重定向)都依賴Location選項。以下是關于兩者依賴 Location選項的詳細說明:

HTTP狀態碼301(永久重定向)

當服務器返回HTTP 301狀態碼時,表?請求的資源已經被永久移動到新的位置。
在這種情況下,服務器會在響應中添加?個Location頭部,?于指定資源的新位置。這個Location頭部包含了新的URL地址,瀏覽器會?動重定向到該地址。
HTTP狀態碼302(臨時重定向)
當服務器返回HTTP 302狀態碼時,表?請求的資源臨時被移動到新的位置。
同樣地,服務器也會在響應中添加?個Location頭部來指定資源的新位置。瀏覽器會暫時使?新的URL進?后續的請求,但不會緩存這個重定向。
總結:?論是HTTP 301還是HTTP 302重定向,都需要依賴Location選項來指定資源的新位置。這個Location選項是?個標準的HTTP響應頭部,?于告訴瀏覽器應該將請求重定向到哪個新的URL地址。
示例:
HTTP/1.1 302 Found\r\n
Location: https://www.new-url.com\r\n

服務器的職責僅在于通過重定向狀態碼和Location字段,向瀏覽器傳遞 “臨時重定向的目標地址”,不參與后續的新請求 —— 既不會主動幫瀏覽器訪問Location對應的 URL,也不會處理新請求的邏輯(新請求需由瀏覽器重新發起,服務器再按新請求的 URL 處理)。

HTTP常?報頭Header
Content-Type: 數據類型(text/html等)
Content-Length: Body的?度
Host: 客?端告知服務器, 所請求的資源是在哪個主機的哪個端?上;
User-Agent: 聲明??的操作系統和瀏覽器版本信息;
Referer: 當前??是從哪個??跳轉過來的;
Location: 搭配3xx狀態碼使?, 告訴客?端接下來要去哪?訪問;
Cookie: ?于在客?端存儲少量信息. 通常?于實現會話(session)的功能;
除此之外,HTTP還有一個Connection 字段,這是HTTP報?頭的?部分,它主要?于控制和管理客?端與服務器之間的連接狀態。

5.實現一個簡單的服務器

實現?個最簡單的HTTP服務器, 只在??上輸出 "hello world"; 只要我們按照HTTP協議的要求構造數據, 就很容易能做到.
代碼運行實例:

如果我們將狀態行改成302我們會得到以下的結果,我們的頁面被重定向到了百度的首頁,這就是重定向的用法

6.總結

如果想要實現與客戶端瀏覽器更多詳細的交互,需要對客戶端的請求進行反序列化與序列化,然后根據方法做對應的處理,以及根據請求的url將外部根目錄的文件填寫到正文中,這個文件可以是Html,可以是圖片等,然后響應信息并進行反序列化,將信息交給瀏覽器渲染,這樣就能夠實現一些好玩的后端與前端交互的網頁。我的前面文章中寫了一篇基于Tcp實現一個電商網站,感興趣也可以瀏覽一下。

具體的代碼已經上傳我的gitee,需要的可以自取study_code: 學習路上寫的一些代碼 - Gitee.com

感謝瀏覽,如有錯誤可以指出。

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

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

相關文章

R 語言本身并不直接支持 Python 中 f“{series_matrix}.txt“ 這樣的字符串字面量格式化(f-string)語法 glue函數

R 語言本身并不直接支持 Python 中 f"{series_matrix}.txt" 這樣的字符串字面量格式化(f-string)語法。 在 R 中,要實現字符串拼接或格式化,你需要使用其他方法。下表對比了 Python f-string 和 R 中常見對應方法的主要…

【AI智能體】亮數據MCP Server × Dify:AI智能體獲取實時影音數據就是這么簡單

文章目錄一、引言:AI 應用與實時影音數據的融合價值1、傳統采集方式的痛點2、MCP Server 的創新價值二、亮數據 MCP Server 概覽1、什么是 MCP Server?2、支持的影音平臺和API接口3、產品特色亮點三、業務場景示例設計1、選定場景:競品分析與…

從《Attention Is All You Need》深入理解Transformer

2017年的《Attention Is All You Need》論文提出的Transformer架構,不僅徹底改變了自然語言處理的格局,更為現代人工智能的發展奠定了堅實基礎。本文將帶你深入解析這一劃時代模型的核心思想、技術細節及其深遠影響。🔄 一、背景與動機&#…

【08】AI輔助編程完整的安卓二次商業實戰-修改消息聊天框背景色-觸發聊天讓程序異常終止bug牽涉更多聊天消息發送優化處理-優雅草卓伊凡

【08】AI輔助編程完整的安卓二次商業實戰-修改消息聊天框背景色-觸發聊天讓程序異常終止bug牽涉更多聊天消息發送優化處理-優雅草卓伊凡引言本次二開布局沒有變,但是下一次整體布局會有變,不過本次開發發現朋友圈跳轉功能的流程步驟也做了一定的變化。原…

心理調適與情緒管理實訓室:支撐康養旅游人才心理能力培養

在康養休閑旅游服務專業的教學體系中,心理調適與情緒管理實訓室作為關鍵教學場所,承擔著培養學生心理服務能力、情緒疏導技能和人際溝通素養的重要任務。隨著社會對康養旅游服務質量要求的提升,具備心理調適與情緒管理能力的專業人才日益受到…

Oracle sql tuning guide 翻譯 Part 6 --- 優化器控制

第五部分優化器控制你可以用提示信息和初始化參數來影響優化器的判斷和運作方式。Influencing the Optimizer Optimizer defaults are adequate for most operations, but not all.In some cases you may have information unknown to the optimizer, or need to tune the opti…

pthread_mutex_lock函數深度解析

摘要 pthread_mutex_lock是POSIX線程庫中用于實現線程同步的核心函數,它通過對互斥鎖的加鎖操作來確保多個線程對共享資源的安全訪問。本文從互斥鎖的歷史背景和發展脈絡入手,詳細解析了pthread_mutex_lock函數的設計理念、實現機制和使用場景。通過生產…

qt QBoxSet詳解

1、概述QBoxSet 類代表箱形圖中的一個條目。箱形條目是范圍和由五個不同值構成的三個中值的圖形表示。這五個值分別是:下極值、下四分位數、中位數、上四分位數和上極值。QBoxSet 提供了多種方法來設置和獲取這些值,并且可以與 QBoxPlotSeries 和 QChart…

機器學習勢函數(MLPF)入門:用DeePMD-kit加速億級原子模擬

點擊 “AladdinEdu,同學們用得起的【H卡】算力平臺”,注冊即送-H卡級別算力,80G大顯存,按量計費,靈活彈性,頂級配置,學生更享專屬優惠。 引言:從傳統分子模擬到機器學習勢函數的革命…

制作uniapp需要的storyboard全屏ios啟動圖

//鎖定豎屏 plus.screen.lockOrientation("portrait-primary") // #endif首先準備啟動圖兩個dc_launchscreen_portrait_background2x.png(750*1624)dc_launchscreen_portrait_background3x.png(1125*2436)LaunchScreen.storyboard文件內容如下<?xml version"…

OpenCV:答題卡識別

目錄 一、項目原理 二、環境準備 三、核心代碼實現 1. 導入必要庫 2. 定義關鍵函數 坐標點排序函數 透視變換函數 輪廓排序函數 圖像顯示函數 3. 主程序實現 圖像預處理 輪廓檢測與答題卡定位 透視變換矯正 答案識別與評分 四、實現效果 本文將介紹如何使用 Ope…

機器寵物(以四足寵物為主)四肢與關節的系統化設計指南

1. 目標與約束先行 目標&#xff1a;自然步態&#xff08;走/小跑/小跳&#xff09;、安全親和、低噪、跌倒不致損&#xff1b;支持地毯/木地板/瓷磚等家庭地面。約束&#xff1a;體重 1–6 kg&#xff1b;單次續航 ≥ 30–60 min&#xff1b;整機成本與可維護性&#xff1b;室…

spark hive presto doris 對substr函數的差異

Spark、Hive、Presto&#xff08;現更名為 Trino&#xff09;和 Doris&#xff08;原百度 Palo&#xff09;的 substr 函數在功能上都是用于截取字符串的子串&#xff0c;但在起始索引規則和參數含義上存在差異&#xff0c;這是導致結果不同的主要原因。以下是它們的具體區別&a…

開題報告之基于AI Agent智能問答的旅游網站

課題題目&#xff1a; 基于AI Agent智能問答的旅游網站 學生姓名&#xff1a; 學 號&#xff1a; 學 院&#xff1a; 專業年級&#xff1a; 指導教師&#xff1a; 開題報告word版&#xff1a; 開題報告word版 一、課題的研究目的和意義&#xff08;本…

HTB打靶復個小盤

文章目錄jerrySauGoodGamesdevvotexpaper最近打了不少靶場&#xff0c;雖然難度都不算高&#xff0c;但也學到不少東西&#xff0c;中間去打了一周的實網滲透&#xff0c;打完后聯系了一家企業準備面試&#xff0c;感覺面試準備的差不多了&#xff0c;回來繼續打靶&#xff0c;…

云手機的技術架構可分為哪些

一、基礎設施層為其提供計算、存儲和網絡資源&#xff0c;高性能的服務器 CPU 是關鍵&#xff0c;它需具備多核多線程處理能力&#xff0c;以同時支持多個云手機實例的運行&#xff0c;比如英特爾至強系列處理器&#xff0c;能夠有效處理復雜的運算任務&#xff1b;通過虛擬化技…

[創業之路-585]:初創公司的保密安全與信息公開的效率提升

初創公司處于快速發展與資源有限的雙重約束下&#xff0c;平衡保密安全與信息公開效率是生存與發展的關鍵。保密安全可保護核心資產&#xff08;如技術、客戶數據、商業計劃&#xff09;&#xff0c;避免被競爭對手模仿或惡意攻擊&#xff1b;而信息公開的效率則直接影響團隊協…

如何在Docker容器中為Stimulsoft BI Server配置HTTPS安全訪問

在 Stimulsoft BI Server 2025.3.1 版本中&#xff0c;新增了在 Docker 容器中運行 BI Server 的能力。本文將為大家介紹如何在容器環境中為 BI Server 配置 HTTPS 協議的數據傳輸&#xff0c;從而實現安全、加密的訪問。 為什么需要 HTTPS&#xff1f; **HTTPS&#xff08;S…

PPT中將圖片裁剪為愛心等形狀

在WPS演示和PowerPoint中&#xff0c;使用裁剪功能&#xff0c;可以將插入的圖片裁剪為各種形狀&#xff0c;例如心形、五角形、云朵形等等。WPS演示還可以指定裁剪的位置&#xff0c;更加靈活。一、在PowerPoint中裁剪圖片為愛心等形狀將圖片插入到幻燈片后&#xff0c;選中圖…

深入理解Docker網絡:實現容器間的內部訪問

目錄一、利用宿主機 IP 外部端口實現容器互訪1.思路2.示例操作3.訪問測試4.工作原理5.總結二、Docker 容器之間的網絡通信&#xff08;docker0 與自定義橋接網絡&#xff09;1. docker0 簡介2. 通過容器 IP 訪問3. 自定義橋接網絡&#xff08;推薦方式&#xff09;創建自定義網…