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