【Java ee初階】http(1)

HTTP

全稱為“超文本傳輸協議”,由名字可知,這是一個基于文本格式的協議,而TCP,UDP,以太網,IP...都是基于二進制格式的協議。

如何區別該協議是基于哪種格式的協議?

形如這種協議格式,按照xxx個字節,xxx個比特位,這樣的方式來安排的妥妥的就是二進制(不涉及任何字符)

超文本:文本包含了一些更復雜的內容,例如圖片、視頻、音頻、特殊字體、鏈接......

HTTP誕生于1991年,同時,Python,Linux,Vim,Qt(C++知名的庫)同時誕生于這一年。

HTTP的各種版本

HTTP是應用層協議,傳輸層依賴于TCP來進行實現。(HTTP2.0及以前,是基于TCP;到了HTTP3.0,基于UDP)

因為TCP的傳輸效率更好,但是他的可靠性沒有UDP好

HTTP協議,是一個非常經典的“一問一答”模型。

關心HTTP交互過程的時候,應該注重兩方面:一方面需要關心HTTP請求是什么樣子的,另一方面要關心HTTP響應是什么樣子的。而上述二者就構成了HTTP的協議格式。

HTTP 請求格式
1. 首行 (請求的第一行)
2. 請求頭 (header) 從第二行開始, 往后若干行
3. 空行 (請求頭的結束標記)
4. 請求正文 (body) [有的請求有, 有的沒有]

HTTP 響應,可能被壓縮的
Content-Encoding: gzip

本來是文本,壓縮了就變成二進制了。

網絡通信過程中,最貴的硬件資源,就是網絡帶寬

直接把原始數據進行傳輸,比較大,消耗的網絡帶寬就多了。

可以把數據進行壓縮,壓縮之后數據就變少了,通過網絡傳輸的內容也少了。
數據到了對端再通過 CPU 來進行解壓縮

壓縮 / 解壓縮
壓縮包 (rar, zip....) (一系列的壓縮算法)

一個不太恰當的例子
比如你的數據
aabbbccccccdddd
壓縮后
2a3b4c5d


點擊這個條條就能解壓縮

HTTP 響應格式
1. 首行
2. 響應頭 (header)
3. 空行 (響應報頭的結束標記)
4. 正文 (body)
(當前的正文部分就包含了網頁的 HTML)

URL

方法(method)? ? URL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?版本號

URL:統一資源定位器,描述了網絡上的某個資源的具體位置,需要明確訪問網絡上的哪個資源

登錄信息(認證):淘汰了,現在已經沒有網站采取這種認證方式了。30年前,采取這樣的方式來進行身份認證。

服務器地址:服務器地址

服務器端口:服務器的端口號

帶層次的文件路徑:path,一個機器上的一個服務器程序,可能管理著很多資源,這些資源可能是真實的文件,還可能是一些“虛擬的”“動態生成的”資源(根據請求,計算出來的響應)

查詢字符串:query string。請求中的參數,通過參數進行進一步的解釋說明。是鍵值對格式,=分割鍵和值,通過&分割多個鍵值對

片段標識符:標識網頁的某個部分,實現“頁面內跳轉功能”。文檔類網站會帶有這個。

完整的 URL 包含了很多信息
重點關心的主要是 4 個部分
1) IP
2) 端口
3) 路徑
4) 查詢字符串


https://www.sogou.com/ 只有 IP 地址, 其他的好像都沒有。
https://cn.vuejs.org/guide/introduction.html#single-file-components 沒有端口, 也沒有查詢字符串
一個 URL 中, 有些部分是可以省略的

如果沒有端口號, 瀏覽器會給一個默認值

一次通信, 需要
源 IP (瀏覽器客戶端, 端口號, 系統分配的空閑端口)
源端口
目的 IP
目的端口 (URL 中的端口, 描述了你訪問的服務器的端口, 不是你瀏覽器客戶端的端口)


URL 中目的端口如果不寫, 瀏覽器會給默認值. 根據協議類型確定.
http:// => 端口給 80 (http 服務器的端口號 也是作為 "知名端口號")
https:// => 端口給 443 (https 服務器的端口號也是 "知名端口號")

帶層次的路徑也能省略, 省略之后, 其實是一個 /
表示 "根目錄"
訪問一個服務器管理資源/目錄 中的最頂層的目錄/資源
通常就對應到一個網站的主頁

query string 本來就不是必須的. 都屬于程序員自行約定的

片段標識符, 也可以省略(需要頁面內跳轉, 才設定, 不需要的話就可以省略了)
程序員代碼中自定義的(前端內容)

URL encode

https://cn.bing.com/search?q=%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9&qs=n&form=QBRE&sp=-1&lq=0&pq=%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9&sc=12-4&sk=&cvid=7CD8656EDA4749B08D5958CCF80B8679


url 的 query string 中的 value 部分, 可能需要進行 "轉義" 的.

query string 的內容, 程序員可以自定義 (尤其是 value)
如果 value 中包含特殊符號, 就可能使 url 的解析出現錯誤.

url 中的特殊符號有特定含義.

中文也需要轉義 (中文通過 utf8/gbk 之類的編碼格式表示的, 有可能某個漢字的
utf8/gbk 編碼中的某個字節, 恰好和某個特殊符號的 ascii 碼相同了 還是可能造成誤會)

轉義的規則非常簡單
把特殊符號的 ascii 取出來, 按照字節維度, 插入一些 %

上述 utf8 的編碼解碼 過程不需要手動實現
都有專門的庫來進行


如果需要放中文/符號, 需要主動進行 url encode
否則, 瀏覽器/服務器可能解析失敗

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

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

相關文章

登錄接口中圖片驗證碼Tesseract-OCR識別Java腳本

項目上移植了研發部的產品,文檔不全,項目上驗證碼功能無法關閉,又要做接口/性能測試,開發不配合(作為測試多么無奈),此方法識別命中率不高,僅作借鑒。 版本JDK11 import io.restass…

JS手寫代碼篇---手寫 Object.create

JS手寫代碼篇 在做手寫題的時候,我們要思考兩個問題 這個代碼的作用是什么能夠實現的效果是什么樣子 1. 手寫 Object.create 思路:創造一個對象,類似于Object.create()方法>將obj作為原型 // 手寫 Object.create function create (ob…

全面指南:Xinference大模型推理框架的部署與使用

全面指南:Xinference大模型推理框架的部署與使用 Xinference(Xorbits Inference)是一個功能強大的分布式推理框架,專為簡化各種AI模型的部署和管理而設計。本文將詳細介紹Xinference的核心特性、版本演進,并提供多種部署方式的詳細指南,包括本地部署、Docker-Compose部署…

next.js實現項目搭建

一、創建 Next.js 項目的步驟 1、安裝 npx create-next-applatest # 或 yarn create next-app # 或 pnpm create next-app 按照交互式提示配置你的項目: 輸入項目名稱 選擇是否使用 TypeScript 選擇是否啟用 ESLint 選擇是否啟用 Tailwind CSS 選擇是否使用 s…

PHP基礎知識

【學習資料】 視頻: https://www.bilibili.com/video/BV1Xh411S7G1?spm_id_from333.788.videopod.episodes&vd_sourcebe26b82da70367069ab00d6db4f4ffc0 文檔:https://www.runoob.com/php/php-tutorial.html 目錄 1,PHP是什么2&#xff…

國內MCP服務平臺推薦 AIbase推出MCP服務器客戶端商店

在當今數字化時代,人工智能(AI)技術正以前所未有的速度發展,不斷改變著我們的生活和工作方式。2025年,AI領域迎來了一項重要的技術進展——MCP(Model Context Protocol,模型上下文協議)的廣泛應用。這一技術…

在文件檢索方面doris和elasticsearch的區別

apache Doris 與 Elasticsearch 在文件檢索領域的差異源于技術架構與定位目標的本質區別,以下從核心維度對比分析二者的技術特性: 一、 ?架構設計與定位差異? ?維度??Apache Doris??Elasticsearch??核心架構?分布式 MPP 列式分析引擎,面向 OLAP 優化分布式倒排索…

鴻蒙OSUniApp打造多功能圖表展示組件 #三方框架 #Uniapp

使用UniApp打造多功能圖表展示組件 在當前移動應用開發領域,數據可視化已成為不可或缺的一部分。無論是展示銷售數據、用戶增長趨勢還是其他業務指標,一個優秀的圖表組件都能有效提升用戶體驗。UniApp作為一款跨平臺開發框架,如何在其中實現…

AI Agent開發第67課-徹底消除RAG知識庫幻覺-文檔分塊全技巧(1)

開篇 在上篇《AI Agent開發第66課-徹底消除RAG知識庫幻覺-帶推理的RAG》放出后,網友們反響很大。有得告訴我:原來還有Rewrite這么一招?早知道這一招很多之前的一些遺留問題都能解決了。不過在上一篇結尾我已經提到了,要真正解決一個AI Agent在響應時產生的幻覺我們用提示語…

NHANES指標推薦:OBS

文章題目:Association between oxidative balance score and all-cause and cancer-specific mortality among cancer survivors DOI:10.3389/fimmu.2025.1541675 中文標題:癌癥幸存者氧化平衡評分與全因死亡率和癌癥特異性死亡率之間的關聯 …

主流快遞查詢API橫向對比:快遞100快遞鳥菜鳥物流接口差異解析

主流快遞查詢API橫向對比:快遞100/快遞鳥/菜鳥物流接口差異解析 一、核心功能與適用范圍 菜鳥API 核心功能:物流信息查詢、電子面單打印、智能倉儲管理、跨境物流服務,整合阿里生態資源(如淘寶、天貓訂單直接對接)。…

解決:npm install報錯,reason: certificate has expired

目錄 1. 問題分析2. 問題解決2.1 查看配置的鏡像2.2 修改鏡像源 種一棵樹最好的時間是10年前,其次就是現在,加油! --by蠟筆小柯南 1. 問題分析 啟動前…

緩存(5):常見 緩存數據淘汰算法/緩存清空策略

主要的三種緩存數據淘汰算法 FIFO(first in first out):先進先出策略,最先進入緩存的數據在緩存空間不夠的情況下(超出最大元素限制)會被優先被清除掉,以騰出新的空間接受新的數據。策略算法主要比較緩存元素的創建時…

Spring框架的事務管理

引言 在企業級應用開發中,事務管理是一個至關重要的環節,它確保了數據的一致性和完整性。Spring 框架為我們提供了強大而靈活的事務管理功能,能夠幫助開發者更輕松地處理復雜的事務場景。本文將深入探討 Spring 框架的事務管理,包…

FPGA: UltraScale+ bitslip實現(ISERDESE3)

收獲 一晃五年~ 五年前那個夏夜,我對著泛藍的屏幕敲下《給十年后的自己》,在2020年的疫情迷霧中編織著對未來的想象。此刻回望,第四屆集創賽的參賽編號仍清晰如昨,而那個在家熬夜焊電路板的"不眠者",現在…

用 wireshark 解密 SIP over TLS 以及 SRTP 解密

--todo 有空再搞 MicroSIP 向 FreeSWITCH 注冊&#xff0c;transport 設置為 tls 同時 Media Encryption 設置為強制 FreeSWITCH 做一個這樣的路由&#xff1a; <action application"set" data"rtp_secure_mediaoptional"/> <action applicat…

Delphi 12.3調用Chrome/edge內核實現DEMO源碼

DELPHI使用調用Chrome/Edge內核瀏覽器&#xff0c;雖然舊的WebBrowser也還可以用&#xff0c;但大勢所趨&#xff0c;新版的已經不需要使用第三方的組件了&#xff0c;算是全內置的開發了&#xff0c;不廢話 Unit1 源碼 Form 源碼 unit Unit1;interfaceusesWinapi.Windows, W…

快速搭建一個electron-vite項目

1. 初始化項目 在命令行中運行以下命令 npm create quick-start/electronlatest也可以通過附加命令行選項直接指定項目名稱和你想要使用的模版。例如&#xff0c;要構建一個 Electron Vue 項目&#xff0c;運行: # npm 7&#xff0c;需要添加額外的 --&#xff1a; npm cre…

26考研 | 王道 | 計算機組成原理 | 一、計算機系統概述

26考研 | 王道 | 計算機組成原理 | 一、計算機系統概述 文章目錄 26考研 | 王道 | 計算機組成原理 | 一、計算機系統概述1.1 計算機的發展1.2 計算機硬件和軟件1.2.1 計算機硬件的基本組成1.2.2 各個硬件的工作原理1.2.3 計算機軟件1.2.4 計算機系統的層次結構1.2.5 計算機系統…

01-數據結構概述和時間空間復雜度

數據結構概述和時間空間復雜度 1. 什么是數據結構 數據結構&#xff08;Data Structure&#xff09;是計算機存儲、組織數據的方式&#xff0c;指相互之間存在一種或多種特定關系的數據元素的集合。 2. 什么是算法 算法&#xff08;Algorithm&#xff09;就是定義良好的計算…