计算机网络————(一)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

学习来源:极客时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/978525.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

源码压缩包泄露

##解题思路 因为网站的文件都放在www下面,所以直接访问/www.zip就可以得到网页的源码压缩包 在fl000g.txt这个文件中看到一个flag{flag_here}不像是真的flag,尝试提交ctfshow{flag_here},果然提交失败 打开文件属性之类的,也没有…

组态软件在物联网中的应用

随着物联网的快速发展,组态软件在物联网中的应用也越来越广泛。组态软件是一种用于创建和管理物联网系统的可视化工具,它能够将传感器、设备和网络连接起来,实现数据的采集、分析和可视化。本文将探讨组态软件在物联网中的应用,并…

Java+SpringBoot+Vue+数据可视化的音乐推荐与可视化平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 在互联网技术以日新月异之势迅猛发展的浪潮下,5G 通信技术的普及、云计算能力…

(论文)PartialSpoof 数据库和检测话语中嵌入的短假语音片段的对策

The PartialSpoof Database and Countermeasures for the Detection of Short Fake Speech Segments Embedded in an Utterance 摘要 自动说话人验证容易受到各种作和欺骗,例如文本到语音合成、语音转换、重放、篡改、对抗性攻击等。我们考虑一种称为“部分欺骗”…

Leaflet介绍及使用示例

一、Leaflet介绍 Leaflet是一个开源的JavaScript库,专门用于构建交互式的地图应用程序。它以其轻量级、高性能和易于使用的API而著称,方便开发者在网页中集成地图功能。Leaflet支持多种地图提供商的瓦片图层,如OpenStreetMap、Mapbox等&…

【笔记】redis回忆录(未完 重头过一遍)

了解 redis在linux上运行 没有window版本 有也是微软自己搞的 (一)安装与修改配置 1.在linux虚拟机上 安装gcc依赖 然后再usr/local/src解压在官网下载好的redis安装包 直接拖进去 tar -zxvf 安装包名字 tab键补齐 解压成功 进入软件 并执行编译命令…

使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力

作者:陈子康,Apache Dubbo Contributor 2025年1月20日,国产大模型公司深度求索(DeepSeek)正式发布了大语言模型 DeepSeek-R1,并同步开源其模型权重。通过大规模强化学习技术,DeepSeek-R1 显著提…

Unity TMPro显示中文字体

TMP默认的字体只能显示英语,那么怎么显示中文呢 1、找到支持中文的字体文件 在c盘搜索Fonts文件夹有很多支持中文的字体文件 我这里选择雅黑 PS.双击打开发现里面有粗体细体普通三个版本,也可以只导入一个版本进去 2、将其拖入到unity Assets里面 3…

【MySQL篇】数据库基础

目录 1,什么是数据库? 2,主流数据库 3,MySQL介绍 1,MySQL架构 2,SQL分类 3,MySQL存储引擎 1,什么是数据库? 数据库(Database,简称DB&#xf…

Linux 日志系统·

目录 一、前言 二、实现一个简单的日志 1.可变参数 2.日志等级 3.日志时间 4.打印每一条参数 5.合并两个缓冲区 6.封装日志函数 三、完整代码 一、前言 当我们写一个函数,例如打开文件open,当我们打开失败的时候,会调用perror看到错误…

【PromptCoder】使用 package.json 生成 cursorrules

【PromptCoder】使用 package.json 生成 cursorrules 在当今快节奏的开发世界中,效率和准确性至关重要。开发者们不断寻找能够优化工作流程、帮助他们更快编写高质量代码的工具。Cursor 作为一款 AI 驱动的代码编辑器,正在彻底改变我们的编程方式。但如…

【VUE】vue-i18n: Uncaught SyntaxError: Not available in legacy mode

报错: 解决方法: 找到 createI18n 并加上 legacy: false,

2025年SCI一区智能优化算法:混沌进化优化算法(Chaotic Evolution Optimization, CEO),提供MATLAB代码

一、混沌进化优化算法 https://github.com/ITyuanshou/MATLABCode 1. 算法简介 混沌进化优化算法(Chaotic Evolution Optimization, CEO)是2025年提出的一种受混沌动力学启发的新型元启发式算法。该算法的主要灵感来源于二维离散忆阻映射的混沌进化过…

网络安全之日志审计 网络安全审计制度

一、代码审计安全 代码编写安全: 程序的两大根本:变量与函数 漏洞形成的条件:可以控制的变量“一切输入都是有害的 ” 变量到达有利用价值的函数(危险函数)“一切进入函数的变量是有害的” 漏洞的利用效果取决于最终函数的功能,变量进入…

VScode+stfp插件,实现文件远程同步保存【2025实操有效】

目录 1 痛点2 准备工作3 操作步骤3.1 第一步,下载STFP插件3.2 第二步,修改配置文件3.3 第三步,测试是否成功 4 后记 1 痛点 我一直用vscode远程连接服务器,传代码文件等到服务器上面,突然有一次服务器那边尽心维修&am…

Java高频面试之SE-23

hello啊,各位观众姥爷们!!!本baby今天又来了!哈哈哈哈哈嗝🐶 Java 中的 Stream 是 Java 8 引入的一种全新的数据处理方式,它基于函数式编程思想,提供了一种高效、简洁且灵活的方式来…

python-leetcode-乘积最大子数组

152. 乘积最大子数组 - 力扣&#xff08;LeetCode&#xff09; class Solution:def maxProduct(self, nums: List[int]) -> int:if not nums:return 0max_prod nums[0]min_prod nums[0]result nums[0]for i in range(1, len(nums)):if nums[i] < 0:max_prod, min_prod…

NavVis VLX三维扫描:高层建筑数字化的革新力量【沪敖3D】

在三维激光扫描领域&#xff0c;楼梯结构因其复杂的空间形态和连续垂直移动的实际需求&#xff0c;一直是技术难点之一。利用NavVis VLX穿戴式移动扫描系统成功完成一栋34层建筑的高效扫描&#xff0c;其中楼梯部分的数据一遍成形且无任何分层或形变。本文将深入分析该项目的技…

docker安装register私库

一、使用自己的私库 1、安装register私库 docker pull registry运行 docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --name registry registry:2参数-v /data/registry:/var/lib/registry&#xff0c;挂载目录 2、拉取需要的镜像 docker pull hello-w…

PCI_PCIe子系统学习(一)概念理清

文章目录 1、其它学习文章2、PCI和PCIe总线简单介绍2.1、PCI2.2、PCIe 3、引脚概述3.1、PCI3.1.1、PCI引脚概述3.1.2、PCI引脚定义3.1.2.1、32位 PCI (124针)3.1.2.2、64位 PCI (188针) 3.1.3、PCI引脚功能分类 3.2、PCIe3.2.1、PCIe引脚概述3.2.2、PCIe引脚定义3.2.2.1、PCIe …