計算機網絡————(一)HTTP講解

基礎內容分類

從TCP/IP協議棧為依托,由上至下、從應用層到基礎設施介紹協議。
1.應用層:
HTTP/1.1
Websocket
HTTP/2.0
2.應用層的安全基礎設施
LTS/SSL
3.傳輸層
TCP
4.網絡層及數據鏈路層
IP層和以太網

HTTP協議

網絡頁面形成基本

流程:
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

其中當在瀏覽器上面的網址搜索界面點擊搜索的時候如果出現了一些記錄就相當于圖片中右邊藍色的“瀏覽器引擎”去搜索數據存儲,然后找到發現一些存儲在瀏覽器中的數據。
詳細操作:
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

定義

一種無狀態的、應用層的、以請求/應答方式運行的協議,它使用可擴展的語義和自描述消息格式、與基于網絡的超文本信息系統靈活的互動

基于ABNF(元語言)語法的HTTP格式:
1." “字符:用來分隔定義中的各個元素
2.”/“選擇:表示多個規則都是可供選擇的規則
3.”%c##-###“:表示從字符 ##到 ###
4.”()"序列組合:將規則組合起來,視為單個元素
5."mn"不定量重復:
表示零個或更多元素
1
表示1個或更多元素
2
4表示兩個或者至多4個元素
6.[]可選序列:包體是可選的,可有可無的
操作符為:
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

根據上面的規則來分析格式
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

HTTP-message:表示http消息
start-line:起始行
request-line/status-line:表示請求行或者響應行構成起始行
request-line=method SP request-target SP HTTP-version CRLF:請求行有 方法 空格 請求路徑 空格 HTTP版本 換行
status-line=HTTP-version SP status-code SP reason-phrase CRLF :響應行由 HTTP版本 空格 響應碼(三位數字) 空格 字符串形式描述的原因 換行

詳細分析請求頭

method——常見的方法有:
GET:主要的獲取信息方法
HEAD:類似GET方法,但服務器不發送BODY,用以獲取HEAD元數據,冪等方法
POST:常用于提交HTML FROM表單、新增資源等
PUT:更新資源、帶條件時是冪等方法
DELETE:刪除資源、冪等方法
CONNECT:建立tunnel隧道
OPTION:顯示服務器對訪問資源支持的方法,冪等方法————跨域
TRACE:回顯服務器手到的請求,用于定位問題。
Linux中使用: curl static.taohui.tech -X OPTIONS 可以查看允許使用的方法
用于文檔管理的
PROPFIND:從Web資源中檢索以XML格式存儲的屬性——查看目錄
PROPPATCH:在單個原子性動作中更改和刪除資源的多個屬性
MKCOL:創建集合或者目錄
COPY:將資源從一個URI復制到另一個URI
MOVE:將資源從一個URI移動到另一個URI
LOCK:鎖定一個資源
UNLOCK:接觸資源的鎖定

詳細分析響應行

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

響應碼的規范:
1XX:表示請求已經被服務器接收到了,需要進一步處理才能完成更進一步的操作
100 Continue:上傳大文件前使用
101 Switch Protocols:協議升級使用
102 Proccessing:表示服務器已經收到了請求但是這個響應需要很長的時間處理,放置客戶端超市。

2XX:成功處理請求
200 OK :成功返回響應
201 Created: 有新資源在服務器端杯成功創建
202 Accepted:服務器接收并開始處理請求,請求并沒有處理完成。異步、需要很長時間處理的任務
203 Non-Authoritative Information:當代理服務器修改了origin server 的原始響應包體時。
204 NO Content:成功執行了請求且不攜帶響應包體,并暗示客戶端無需更新當前的頁面視圖。
205 Reset Contern:成功執行了請求切不攜帶響應包體,同時指明客戶端需要更新當前頁面視圖。
206 Partial Content:使用range協議時返回部分響應內容時的響應碼,多線程下載
207 Multi-Status:在WEBDAV協議匯
208 Already Reported:為了解決WEb協議

3XX:重定向
300 Multiple Choices:允許客戶端主動的顯示
301 Moved Permanently:表示資源永久的重定向
302 Found:表示資源臨時的重定向。
303 See Other:重定向到其他資源
304 Not Modified:客戶端可復用的緩存
307 Temporary Redirect:明確重定向后請求方法必須與原請求方法相同
308 Permanent Redirect:類似301

4XX:客戶端出現錯誤
400 Bad Request:服務器認為客戶端出現了錯誤,但不能明確判斷那種錯誤
401 Unauthorized: 用戶認證信息缺失
407 Proxy Authentication Required :對需要經有代理的請求,認證信息為通過代理服務器的驗證
403 Forbidden: 服務器理解請求的含義,但沒有權限執行此請求
404 Not Found: 服務器沒有找到相對應的資源
410 Gone :服務器沒有找到對應的資源,且明確的知道該位置永久性找不到資源————對404補充
405 Method Not Allowed:服務器不支持請求行中的method方法
406 Not Acceptable:對客戶端指定的資源表述不存在————語言不兼容
408 Request Timeout:服務器接收請求超時
409 Conflict:資源沖突
411 Length Required:請求中未攜帶Content-Length頭部
412 Precondition Failed:條件類請求不滿足時候返回
413 Payload Too Large/Request Entity Too Large:請求的包體超出服務器能處理的最大限度
414 URI Too Long:請求的URI超出服務器的最大長度
415 Unsupported Media Type:上傳的文件類型不支持
416 Range Not Satisfiable: 無法提供Range請求中指定的那段包體
417 Expectation Failed: 對于Expect 請求頭部期待的情況無法滿足
421 Misdirected Request: 服務器認為該請求不該發給它
426 Upgrade Required:服務器拒絕基于當前HTTP協議提供服務,必須要Upgrade告知客戶端升級
428 Precondition Required:用戶請求中缺少條件類頭部
429 Too Many Requests:客戶端發送請求的速率太快
431 Request Header Fields Too Large:請求的頭部大小超過限額
451 Unavailable For Legal Reasons :由于法律原因資源不可訪問

5XX:表示服務端出現錯誤
500 Internal Server Error :服務器內部錯誤
501 Not Implemented: 服務器不支持實現請求所需要的功能
502 Bad Gateway:代理服務器無法獲取到合法響應
503 Service Unavailable :服務器資源尚未準備好處理當前請求
504 GateWay Timeout:代理服務器無法及時的從上游獲得響應
505 HTTP version Not Supported: 請求的HTTP協議版本不支持
507 Insufficient Storage:服務器沒有足夠的空間處理請求————存在安全錯誤
508 Loop Detected:訪問資源是檢測到循環
511 Network Authentication Required:代理服務器發現客戶端需要進行身份驗證才能獲取網絡訪問權限

*(header-field CRLF):表示0個或多個以CRFL為結尾的http頭部
header-field = field-name":"OWS field-value OWS 表示由一個頭部名稱 中間分隔符號為:和頭部的值構成
OWS = *(SP / HTAB ) : 表示由零個或者多個空格或者橫向制表符構成
field-name = token
field-value = *(field-content/obs-fold)
后續介紹field-name/value

CRLF:空行
[message-body]:表示后面可以有消息體,但他與頭部必須中間隔了一個CRLF。
message-body: 表示由二進制的包傳遞的

利用telnet 工具查看

telnet www.taohui.pub 80
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

對比上面發現發現
請求構成
GET SP request-target SP HTTP/1.1 CRLF 符合請求頭的格式
Host : www.xxx.com 表示的就是header-field : field-value

響應構成
上面一大串就是status-line
分隔開的單獨的CRLF(空行,表示從這里開始這一行就沒有了)
最后的那一段就是message-body

網絡為什么要分層

OSI 概念模型
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

應用層:解決業務問題–七層設備nginx等
表示層:把網絡中的消息轉化成為應用層的東西(TLS/LLS加密)
會話層:建立關系連接/握手————概念層
傳輸層:解決進程與進程的關系,TCP協議等–四層設備
網絡層:確保在廣域網中從一個ip發送到另一個ip上–三層設備
數據鏈路層:利用mac地址連接到局域網的交換機的–二層設備
物理層:物理介質

分層的好處是:每一層只需要關注自己這一層的東西(封裝)不需要關心其他層做了什么。這樣技術迭代的時候就不用擔心兼容問題。
壞處:因為分層之間需要數據處理,就需要更長的時間影響了效率。

每一層的詳細處理:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

架構風格

1.數據流風格

優點:簡單性、可進化性、可擴展性、可配置性、可重用性
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

管道與過濾器:每個Filter都有輸入端和輸出,只能從輸入端讀取數據,處理后再從輸出端輸出數據
統一接口的管道與過濾器:在PF上增加了統一接口的約束,所有的Filter過濾器必須具有同樣的接口

2.復制風格

優點:用戶可察覺的性能、可伸縮性、網絡效率、可靠性
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

復制倉庫(RR):多個進程提供相同的服務,通過反向代理對外提供集中服務
緩存:RR的變體,通過復制請求的結果,為后續請求服用

3.分層風格

優點:簡單性、可進化性、可伸縮性
客戶端服務器(CS):由客戶端觸發請求,服務端監聽到請求后響應,客戶端一直等待收到響應后,會話結束
分層系統(LS):每一層為其上的層服務,并使用在其下的層所提供的服務,如:TCP/IP
分層客戶端服務器(LCS):LS+CS,如正向代理/反向代理,從空間上分為外部層與內部層
無狀態、客戶端服務器(CSS):基于CS、服務器不允許有session state會話狀態
緩存、無狀態、客戶端服務器(C$SS):提升性能

4.移動代碼風格

優點:可擴展性、網絡效率
虛擬機(VM):分離指令與實現
遠程求值(REV):基于CS的VM,將代碼發送至服務器執行
按需代碼(COD):服務器在響應發回處理代碼,在客戶端執行

5.點對點風格

優點:可進化性、可重用性、可拓展性、可配置性
EBI:基于事件集成系統

使用Chrome抓包

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

控制器:控制面板的外觀與功能。
過濾器:過濾請求列表中顯示的資源
概覽:顯示HTTP請求、響應的時間軸
請求列表:默認時間排序,可選擇顯示列
概要:請求總數、總數據量、總花費時間等

瀏覽器的加載過程

1.解析HTML結構
2.加載外部腳本和樣式表文件
3.解析并執行腳本代碼//部分腳本會阻塞頁面的加載
4.DOM樹構建完成//DOMContentLoaded事件
5.加載圖片等外部文件
6.頁面加載完畢//load事件

請求時間詳細分布:
Queueing:瀏覽器在排隊
Stalled:請求可能會因Queueing中描述的任何原因停止
DNS Lookup:瀏覽器正在解析請求的IP地址
Proxy Negotiation:瀏覽器正在與代理服務器協商請求
Request sent :正在發送請求
ServiceWorker Preparation:瀏覽器正在啟動Service Worker
Request to ServiceWork:正在將請求發送到Service Workder
Waiting(TTFB):將瀏覽器正在等待響應的第一個字節
Content Download:瀏覽器正在接受響應
Receiving Push:瀏覽器正在通過HTTP/2服務器推送接受此響應數據
Reading Push:瀏覽器正在讀取之前的本地數據

URI

定義:
Uniform Resource Identifier 統一資源標識符
組成:
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

scheme, user information, host, port(HTTP默認43), path, query,fragment(分段)
用元語表示URI:
URI= scheme “:” hire-pary[“?“query][”#“fragment]
解釋:
scheme=ALPHA*(ALPHA/DIGIT/”+”/“-”/“.”)
如:https,http,ftp,mailto,file,telnet等
ALPHA表示字母
DIGIT表示數字

hire-pary=“//” authority path-abempty / path-absolute /path-rootless /path-empty
authority=[ userinfo"@“]host[”:" port]————用戶信息@域名:端口
userinfo=*(unreserved /pct-encoded /sub-delims/“:”)
host=IP-literal/ipv4address/reg-name
port=*DIGIT

query=*(pchar/“//”?“)————以”?"開頭的可選項

fragment=*(pchar/“/”/“?”)————以"#"開頭的可選項

相對URI:去除絕對路徑只留下/html/rfc7231?test=1#page-7

學習來源:極客時間

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

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

相關文章

【網絡編程】廣播和組播

數據包發送方式只有一個接受方,稱為單播。如果同時發給局域網中的所有主機,稱為廣播。只有用戶數據報(使用UDP協議)套接字才能廣播: 廣播地址以192.168.1.0 (255.255.255.0) 網段為例,最大的主機地址192.168.1.255代表該網段的廣…

小程序如何實現跨頁面通信

前言 最近有很多同學問,小程序里面如何進行跨頁面通信。看了下之前的老代碼,基本都是基于onShow或者localStorage。雖然可以實現,但是并不怎么優雅。 今天就來聊一聊,小程序的跨頁面通信的幾種實現方案。或許會有你想要的方案&a…

【工具】win-畫圖 保留圖片信息并僅改變圖片比例的工具

Windows 系統自帶的“畫圖”工具 Windows 系統自帶的“畫圖”(Paint)工具可以進行簡單的圖片編輯,包括調整圖片大小和比例。 使用方法: 打開“畫圖”工具(可以通過在開始菜單中搜索“畫圖”或“Paint”)。…

如何編輯autodl中以.bashrc結尾的隱藏文件

在nnunet的運行過程中遇到了設置環境變量的問題。之前沒有接觸過linux系統,但是autodl里面默認是linux系統。.bashrc 是一個在 Bash shell 啟動時執行的腳本文件,常用于設置環境變量、定義別名、加載函數等,用戶可以通過編輯這個文件來定制自…

實驗3 知識表示與推理

實驗3 知識表示與推理 一、實驗目的 (1)掌握知識和知識表示的基本概念,理解其在AI中的深刻含義與意義; (2)熟悉AI中常用的知識表示方法的優缺點及其應用場景; (3)掌握產…

在 M1 Mac 上解鎖 TensorFlow GPU 加速:從環境搭建到實戰驗證

在 M1 Mac 上解鎖 TensorFlow GPU 加速:從環境搭建到實戰驗證 前言:蘋果芯片的深度學習新紀元 隨著 Apple Silicon 芯片的普及,M1/M2/M3 系列 Mac 已成為移動端深度學習開發的新選擇。本文將以 TensorFlow 2.x 為例,手把手教你如…

Python 數據分析概述 ①

一文讀懂Python數據分析:從基礎到實踐全攻略 在當今數字化浪潮中,數據分析已然成為解鎖海量數據價值的關鍵鑰匙,而Python憑借其獨特優勢,在數據分析領域大放異彩。今天,咱們就結合教學PPT內容,深入探索Pyt…

【Gin-Web】Bluebell社區項目梳理6:限流策略-漏桶與令牌桶

本文目錄 一、限流二、漏桶三、令牌桶算法四、Gin框架中實現令牌桶限流 一、限流 限流又稱為流量控制,也就是流控,通常是指限制到達系統的并發請求數。 限流雖然會影響部分用戶的使用體驗,但是能一定程度上保證系統的穩定性,不至…

Linux高并發服務器開發 第十九天(線程 進程)

目錄 1.進程組和會話 2.守護進程 2.1守護進程daemon概念 2.2創建守護進程 3.線程 3.1線程的概念 3.2線程內核三級映射 3.3線程共享 3.4線程優缺點 4.線程控制原語 4.1獲取線程id 4.2創建線程 4.3循環創建N個子線 4.4子線程傳參地址,錯誤示例 4.5線程…

軟件工程和系統分析與設計

軟件工程 1、軟件危機 2、軟件過程模型 2.1 瀑布模型 2.2原型模型 2.3螺旋模型 2.4敏捷模型 2.5軟件統一過程 3、軟件能力成熟度模型 CMM 4、軟件能力成熟度模型集成 CMMI 系統分析與設計 1、結構化方法SASD 1.1結構化分析 DFD 1.2結構化設計 SD-是一種面向數據流的設計…

Qt/C++面試【速通筆記一】

Qt 信號與槽機制 什么是信號(Signal)和槽(Slot)? 在Qt中,信號(Signal)和槽(Slot)是實現對象之間通信的一種機制。信號是對象在某些事件發生時發出的通知&…

LangChain大模型應用開發:構建Agent智能體

介紹 大家好,博主又來給大家分享知識了。今天要給大家分享的內容是使用LangChain進行大模型應用開發中的構建Agent智能體。 在LangChain中,Agent智能體是一種能夠根據輸入的任務或問題,動態地決定使用哪些工具(如搜索引擎、數據庫查詢等)來…

微服務架構概述及創建父子項目

目錄 一,什么是單體架構 二,什么是集群和分布式架構 三,什么是微服務架構 四,解決微服務難題的方案Spring-cloud Spring Cloud Alibaba是阿里巴實現的方案,基于SpringCloud的規范。如果說Spring Cloud Netflix 是…

C/C++跳動的愛心

系列文章 序號直達鏈接1C/C李峋同款跳動的愛心2C/C跳動的愛心3C/C經典愛心4C/C滿屏飄字5C/C大雪紛飛6C/C炫酷煙花7C/C黑客帝國同款字母雨8C/C櫻花樹9C/C奧特曼10C/C精美圣誕樹11C/C俄羅斯方塊小游戲12C/C貪吃蛇小游戲13C/C孤單又燦爛的神14C/C閃爍的愛心15C/C哆啦A夢16C/C簡單…

量子計算的威脅,以及企業可以采取的措施

當谷歌、IBM、Honeywell和微軟等科技巨頭紛紛投身量子計算領域時,一場技術軍備競賽已然拉開帷幕。 量子計算雖能為全球數字經濟帶來巨大價值,但也有可能對相互關聯的系統、設備和數據造成損害。這一潛在影響在全球網絡安全領域引起了強烈關注。也正因如…

Unity制作游戲——前期準備:Unity2023和VS2022下載和安裝配置——附安裝包

1.Unity2023的下載和安裝配置 (1)Unity官網下載地址(國際如果進不去,進國內的官網,下面以國內官網流程為例子) unity中國官網:Unity中國官網 - 實時內容開發平臺 | 3D、2D、VR & AR可視化 …

23貪心算法

分發餅干 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {int i0,j0;int count0;sort(s.begin(),s.end());sort(g.begin(),g.end());while(i<g.size()&&j<s.size()){if(g[i]<s[j]){i;j;count;}else…

Spark 和 Flink

Spark 和 Flink 都是目前流行的大數據處理引擎&#xff0c;但它們在架構設計、應用場景、性能和生態方面有較大區別。以下是詳細對比&#xff1a; 1. 架構與核心概念 方面Apache SparkApache Flink計算模型微批&#xff08;Micro-Batch&#xff09;為主&#xff0c;但支持結構…

Android 串口通信

引言 在iot項目中&#xff0c;Android 端總會有和硬件通信。 通信這里&#xff1a;串口通信&#xff0c;藍牙通信或者局域網通信。 這里講一下串口通信。 什么是串口&#xff1f; “串口”&#xff08;Serial Port&#xff09;通常是指一種用于與外部設備進行串行通信的接口。…

【計算機網絡】OSI模型、TCP/IP模型、路由器、集線器、交換機

一、計算機網絡分層結構 計算機網絡分層結構 指將計算機網絡的功能劃分為多個層次&#xff0c;每個層次都有其特定的功能和協議&#xff0c;并且層次之間通過接口進行通信。 分層設計的優勢&#xff1a; 模塊化&#xff1a;各層獨立發展&#xff08;如IPv4→IPv6&#xff0c…