计算机网络————(一)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个或更多元素
24表示两个或者至多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讲解
基础内容分类 从TCP/IP协议栈为依托,由上至下、从应用层到基础设施介绍协议。 1.应用层: HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程:…...
stream流常用方法
1.reduce 在Java中,可以使用Stream API的reduce方法来计算一个整数列表的乘积。reduce方法是一种累积操作,它可以将流中的元素组合起来,返回单个结果。对于计算乘积,你需要提供一个初始值(通常是1,因为乘法…...
最新扣子(Coze)案例教程:全自动DeepSeek 写影评+批量生成 + 发布飞书,提效10 倍!手把手教学,完全免费教程
👨💻群里有同学是做影视赛道的博主,听说最近DeepSeek这么火,咨询能不能用DeepSeek写影评,并整理电影数据资料,自动发布到飞书文档,把每天的工作做成一个自动化的流程。 那今天斜杠君就为大家…...
数据结构:动态数组vector
vector 是 C 标准库的动态数组。 在C语言中一般初学者会使用malloc,int[n]等方式来创建静态数组,但是这种方式繁琐且容易出错。我们做算法题一般使用动态数组vector, 并且在刷题网站的题目给的输入一般也是vector类型。 示例:vect…...
【HeadFirst系列之HeadFirst设计模式】第9天之模板方法模式:从咖啡和茶到Spring框架,掌握设计模式的精髓
模板方法模式:从咖啡和茶到Spring框架,掌握设计模式的精髓 《Head First 设计模式》是一本经典的设计模式入门书籍,它以轻松幽默的方式讲解了设计模式的核心思想。其中,模板方法模式是一个非常简单但非常实用的设计模式ÿ…...
力扣hot100——排序链表(常见方法,归并排序)
解题思路: 分解(Divide):将待排序的列表递归地分成两半,直到每个子列表只包含一个元素(此时每个子列表都是有序的)。解决(Conquer):递归地对每个子列表进行排…...
使用 DeepSeek 和 ECharts 实现大屏数据可视化
引言 在当今数据驱动的时代,数据可视化成为了分析和展示数据的重要手段。大屏数据可视化不仅能够直观地展示数据,还能帮助决策者快速理解复杂信息。本文将介绍如何结合 DeepSeek(一个强大的数据处理与分析工具)和 ECharts(一个流行的数据可视化库)来实现大屏数据可视化。…...
基于springboot+vue的新生报到管理系统
一、系统架构 前端:vue | element-ui | echarts 后端:springboot | mybatis-plus | jwt 环境:jdk1.8 | mysql | maven 二、代码及数据 三、功能介绍 01. 登录 02. 首页 03. 管理员-系统管理-用户管理 04. 管理员-系统…...
【面试系列】Java开发--AI常见面试题
文章目录 1、实际工作或学习中用过哪些Ai工具1.1、AI编程1.2、AI对话聊天1.3、AI图像工具1.4、AI办公工具 2、谈谈你知道的AI领域的一些常见词汇及其含义的理解? 例如AIGC、LLM、DeepLearning分别是什么意思?2.1、AIGC(Artificial Intelligen…...
Maven 基础环境搭建与配置(二)
四、本地仓库配置,存储依赖 在 Maven 的世界里,本地仓库就像是一个 “私人储物间”,专门用来存放项目所需的各种依赖构件,如 JAR 包、WAR 包等。当我们构建项目时,Maven 会首先在本地仓库中查找所需的依赖,…...
了解ffmpeg,安装并配置环境变量
一、了解FFmpeg FFmpeg 是一个功能强大的开源多媒体框架,能够处理音视频的录制、转换和流媒体传输。它由 Fabrice Bellard 发起,采用 LGPL/GPL 许可证,广泛应用于各种平台,包括 Linux、Windows 和 macOS 什么是FFmpeg࿱…...
Deepseek reasoning-content 透出调研
Deepseek reasoning-content 透出调研 部署方式:Docker Ollama Deepseek-R1:8b 参考: https://help.apiyi.com/deepseek-reasoning-content-guide.htmlhttps://yuluo-yx.github.io/blog/%E4%BD%BF%E7%94%A8-Ollama-%E9%83%A8%E7%BD%B2-DeepSeek-%E5…...
Codes 开源免费研发项目管理平台 2025年第一个大版本3.0.0 版本发布及创新的轻IPD实现
Codes 简介 Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费。它通过创新的方式简化研发协同工作,使敏捷开发更易于实施。并提供低成本的敏捷开发解决方案࿰…...
Leetcode K个一组翻转链表
双指针法,java solution class Solution {public ListNode reverseKGroup(ListNode head, int k) {if(head null || head.next null) return head;//设置pre和index节点ListNode pre head, index head.next;int m 0;while(m < k && index ! null) …...
电脑开机一段时间就断网,只有重启才能恢复网络(就算插网线都不行),本篇文章直接解决,不要再看别人的垃圾方法啦
下面的是我解决问题的心路历程,不想看的可以直接跳到解决方法上面! 内心思路: w11电脑更新过系统后,我的电脑是常年不关机的,但是一天突然断网,试了很多方法都连不上,重启电脑就会好࿰…...
Python 性能剖析利器:DTrace 与 SystemTap 深度指南
在 Python 开发过程中,深入了解程序的运行时行为对于优化性能、排查问题至关重要。本文聚焦于 DTrace 和 SystemTap 这两款强大的监控工具,详细介绍它们在 CPython 中的应用,包括启用静态标记、编写 DTrace 和 SystemTap 脚本、利用可用的静态…...
unity学习47:寻路和导航,unity2022后版本如何使用 Navmesh 和 bake
目录 1 寻路和导航对移动的不同 1.1 基础的移动功能 1.1.1 基础移动 1.1.2 智能导航寻路 1.1.3 智能导航寻路还可以 2 如何实现这个效果? 2.1 通过地图网格的形式 2.1.1 警告信息 the static value has been deprecated的对应搜索 2.1.2 新的navigation ba…...
工作-绩效笔记
文章目录 销售项目经理研发项目管理人天拆分抓手评估人天如何拆的细而且有理有据管理等 对这个一直不感兴趣,干好活就行了,但是公司肯定是出于量化的指标,而且不同角色指标不一样,记录下也科普下自己。 销售 销售额 确收、回款 …...
GPT-SoVITS更新V3 win整合包
GPT-SoVITS 是由社区开发者联合打造的开源语音生成框架,其创新性地融合了GPT语言模型与SoVITS(Singing Voice Inference and Timbre Synthesis)语音合成技术,实现了仅需5秒语音样本即可生成高保真目标音色的突破。该项目凭借其开箱…...
WPF的页面设计和实用功能实现
目录 一、TextBlock和TextBox 1. 在TextBlock中实时显示当前时间 二、ListView 1.ListView显示数据 三、ComboBox 1. ComboBox和CheckBox组合实现下拉框多选 四、Button 1. 设计Button按钮的边框为圆角,并对指针悬停时的颜色进行设置 一、TextBlock和TextBox…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
