HTTP 基础

SpringBoot集成SpringSecurity5和OAuth2 — 2、OAuth2客户端【SSO单点登录时作为客户端】 阅读详情

在这里插入图片描述


阅读原文


HTTP 和 TCP 的关系

HTTP 是在 TCP 传输协议上层的应用层协议,主要解决如何包装数据的问题,关于 TCP/IP 和 HTTP 协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP 协议,但是如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如 HTTP、FTP、TELNET 等,也可以自己定义应用层协议,Web 使用 HTTP 协议作应用层协议,以封装 HTTP 文本信息,然后使用 TCP/IP 做传输层协议将它发到网络上”。


HTTP 协议和 TCP 协议

1、HTTP 访问到服务器的过程

从在浏览器中输入一个网址直到请求到达服务器的过程中如下图。


HTTP 协议访问服务器流程

2、长连接

在 HTTP1.0 版本中,每一个请求都需要在 TCP 协议中经历 “三次握手四次挥手”,在 HTTP1.1 中有了长连接,这个问题得到了改善,可以通过创建的一次 TCP 连接,进行多次请求响应,并在结束后关闭 TCP 连接。

HTTP1.0 版本:

HTTP1.1 长连接版本:

在这里插入图片描述

3、管线化

在不同的浏览器中对于访问同一个域名,都有一个最大的请求数限制,数量大小因浏览器而异,如果请求数量大于最大请求数限制,则需要排队等待其他请求结束。

管线化技术,在超出最大请求数限制,客户端继续发送请求到服务端,而不需要其他请求得到响应的时候才能进行,实现并行发送请求,CDN 是比较典型的解决方式,将静态资源分发到不同 ip 下的服务器,请求资源是通过不同的代理服务器去同时获取,可以提高页面初始化响应的速度。

在这里插入图片描述

4、URI 和 URL

URI:是统一资源标识符,在某个规则下能把这个资源独一无二标示出来,类似人的身份证号;
URL:统一资源定位符,表示资源的地点,URL 是使用浏览器访问 Web 页面时需要输入的网页地址。

URL 的组成:

http://username:password@www.pandashen.com:80/2018/07/09/index.html?uid=1&name=panda#ch1

  • http:协议类型;
  • username:password:登录信息(如 Github,不安全);
  • www.pandashen.com:服务器地址(与前面用 @ 连接);
  • 80:服务器端口号(与前面用 : 连接);
  • /2018/07/09/index.html:带层次的文件路径;
  • uid=1&name=panda:查询字符串(与前面用 ? 连接);
  • ch1:片段标识符(hash 值,与前面使用 # 连接)。

HTTP 的组成

请求的一方叫客户端,响应的一方叫服务器端,通过请求和响应达成通信,HTTP 是一种无状态的协议。

1、请求报文

请求报文包含请求行、请求首部和请求体三个部分。

在这里插入图片描述

请求行由三个部分组成,并写在同一行,分别为请求方法、请求路径(域名和端口号后面的部分)和协议/版本号。

请求方法:

  • GET:获取资源
  • POST:向服务器端发送数据,传输实体主体
  • PUT:传输文件
  • HEAD:获取报文首部
  • DELETE:删除文件
  • OPTIONS:询问支持的方法
  • TRACE:追踪路径

追踪路径方式如下图:

在这里插入图片描述

请求体内的内容为向服务端发送的数据,首部分为通用首部、请求首部、响应首部和实体首部四种,在后面详细说明。

2、响应报文

响应报文同样包含三个部分,响应行、响应首部和响应体。

在这里插入图片描述

响应行由三个部分组成,并写在同一行,分别为协议/版本号、状态码和状态码原因短语。

注意:在请求首部与请求体之间、在响应首部与响应体之间都应该空一个空行。


HTTP 响应状态码

状态码负责表示客户端请求的返回结果、标记服务器端是否正常、通知出现的错误。

1、状态码类别

类别原因短语
1XXInformational(信息性状态码)
2XXSuccess(成功状态码)
3XXRedirection(重定向)
4XXClient Error(客户端错误状态码)
5XXServer Error(服务器错误状态吗)

2、常见状态码

(1) 成功
状态码原因短语原因解释
200OK客户端发过来的数据被正常处理
204Not Content正常响应,没有实体
206Partial Content范围请求,返回部分数据,响应报文中由 Content-Range 指定实体内容
(2) 重定向
状态码原因短语原因解释
301Moved Permanently永久重定向
302Found临时重定向,规范要求方法名不变,但是都会改变成 GET
303See Other和 302 类似,但必须用 GET 方法
304Not Modified状态未改变,配合(If-Match、If-Modified-Since、If-None_Match、If-Range、If-Unmodified-Since)
307Temporary Redirect临时重定向,不该改变请求方法
(3) 客户端错误
状态码原因短语原因解释
400Bad Request请求报文语法错误
401Unauthorized需要认证
403Forbidden服务器拒绝访问对应的资源
404Not Found服务器上无法找到资源
(4) 服务器错误
状态码原因短语原因解释
500Internal Server Error服务器故障
503Service Unavailable服务器处于超负载或正在停机维护

HTTP 首部

HTTP 首部字段是 HTTP 报文首部的重要部分,在客户端和服务器进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用。

HTTP 首部主要分为通用首部、请求首部、响应首部和实体首部四种:

  • 通用首部字段:请求和响应报文两方都会使用的首部字段;
  • 请求首部字段:从客户端向服务器发送请求报文时使用的首部字段,补充了请求的附加内容,客户端信息,响应内容相关优先级等信息;
  • 响应首部字段:从服务器向客户端返回响应报文时使用的首部字段;补充了响应的附加内容,也会要求客户端附加额外的内容信息;
  • 实体首部字段:针对请求报文和响应报文的实体部分使用的首部,补充了资源内容的更新时间等与实体有关的信息。

1、通用首部字段

首部字段名说明
Cache-Control控制缓存行为
Connection链接的管理
Date报文日期
Pragma报文指令
Trailer报文尾部的首部
Trasfer-Encoding指定报文主体的传输编码方式
Upgrade升级为其他协议
Via代理服务器信息
Warning错误通知

2、请求首部字段

首部字段名说明
Accept用户代理可处理的媒体类型
Accept-Charset优先的字符集
Accept-Encoding优先的编码
Accept-Langulage优先的语言
AuthorizationWeb 认证信息
Expect期待服务器的特定行为
From用户的电子邮箱地址
Host请求资源所在的服务器
If-Match比较实体标记
If-Modified-Since比较资源的更新时间
If-None-Match比较实体标记
If-Range资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since比较资源的更新时间( 与 If-Modified-Since相反 )
Max-Forwards最大传输跳数
Proxy-Authorization代理服务器需要客户端认证
Range实体字节范围请求
Referer请求中的URI的原始获取方
TE传输编码的优先级
User-AgentHTTP 客户端程序的信息

3、响应首部字段

首部字段名说明
Accept-Ranges是否接受字节范围
Age资源的创建时间
ETag资源的匹配信息
Location客户端重定向至指定的 URI
Proxy-Authenticate代理服务器对客户端的认证信息
Retry-After再次发送请求的时机
Server服务器的信息
Vary代理服务器缓存的管理信息
www-Authenticate服务器对客户端的认证

4、实体首部字段

首部字段名说明
Allow资源可支持的 HTTP 方法
Content-Encoding实体的编码方式
Content-Language实体的自然语言
Content-Length实体的内容大小(字节为单位)
Content-Location替代对应资源的 URI
Content-MD5实体的报文摘要
Content-Range实体的位置范围
Content-Type实体主体的媒体类型
Expires实体过期时间
Last-Modified资源的最后修改时间

总结

本篇重点介绍关于 HTTP 协议的一点基础知识,关于请求、响应以及报文对应的信息及内容,也可以用作查询使用。


EDA工具安装第一步:Synopsys Installer的配置与图形化界面使用详解 本文详细解析了EDA工具安装的关键第一步——Synopsys Installer的配置与使用。文章阐述了其作为统一部署管理器和依赖协调者的核心作用,并分步详解了如何通过图形化界面高效安装EDA工具,同时介绍了命令行批处理等进阶技巧,旨在帮助工程师快速搭建稳定的芯片设计环境。 阅读详情

相关推荐

3GPP协议解读_物理层系列(一)_物理层协议怎么看?

5G NR相关协议一般都在38系列,点进去以后可以看到,38.2xx系列为物理层相关协议,为了掌握物理层相关知识,应该怎么看协议呢?我建议从38.201读起,对38.2xx系列协议有一个整体的把握。

JCMLSY的博客 1329

HTTP 协议中的 Transfer-Encoding

HTTP 协议中的 Transfer-Encoding 文章目录 Persistent ConnectionContent-LengthTransfer-Encoding: chunked 本文作为我的博客「HTTP 相关」专题新的一篇,主要讨论 HTTP 协议中的 Transfer-Encoding。这个专题我会根据自己的理解,以尽量通俗的讲述,结合代码示例和实际场景来

mandagod的博客 1193

详解MegatronLM序列模型并行训练(Sequence Parallel)

MegatronLM的第三篇论文是2022年出的。在大模型训练过程中显存占用过大往往成为瓶颈,一般会通过recomputation重计算的方式降低显存占用,但会带来额外的计算代价。这篇论文提出了两种方法,分别是和,这两种方法和Tensor并行是可以相结合的,可以有效减少不必要的计算量。下图中绿色部分表示不同模型中需要用于保存activation需要的显存大小,蓝色部分表示不同模型中需要用于保存parameter和optimizer state需要的显存大小。红色线表示A100的显存大小80G。

分享机器学习、深度学习、分布式计算、MLSys相关领域知识 1万+

[HTTP] HTTP 协议 Response Header 之 Content-Length、Transfer-Encoding与Content-Encoding

目录0 引言1 概述篇1.1 Transfer-Encoding1.2 Content-Encoding1.3 Accept-Encoding : 客户端声明可接受的编码1.4 Persistent Connection(持久连接)1.5 Content-Length : 告诉浏览器(编码后)响应实体的长度没有 Content-Length 时 : pending引入 Content-Length...

weixin_33509600的博客 2084

手把手教你用RMII接口配置以太网PHY芯片(附YT8512实战代码)

本文详细介绍了如何使用RMII接口配置以太网PHY芯片,以国产YT8512为例,提供从硬件设计到软件驱动的全流程实战指南。内容包括RMII接口技术解析、YT8512硬件设计要点、驱动开发实战代码及常见问题排查,帮助开发者快速实现以太网通信功能。

mac99的博客 995

通达信波段交易公式实战:如何用副图指标精准捕捉买卖点(附完整源码)

本文深入解析通达信波段交易副图指标的构建与应用,提供完整源码实现,帮助投资者精准捕捉买卖点。通过趋势强度度量、超买超卖判断及信号过滤机制,结合K线图分析,有效提升波段交易的成功率。

weixin_29306317的博客 606

分块编码(Transfer-Encoding: chunked)

参考链接: HTTP 协议中的 Transfer-Encoding 分块传输编码 一、背景: 持续连接的问题:对于非持续连接,浏览器可以通过连接是否关闭来界定请求或响应实体的边界;而对于持续连接,这种方法显然不奏效。有时,尽管我已经发送完所有数据,但浏览器并不知道这一点,它无法得知这个打开的连接上是否还会有新数据进来,只能傻傻地等了。 用Content-len...

weixin_30571465的博客 886

OpenSees入门指南:从零开始的环境配置与TCL脚本实战

本文提供了一份详细的OpenSees入门指南,涵盖从零开始的环境配置到TCL脚本实战的全过程。文章重点讲解了OpenSees的安装步骤、环境变量设置,并推荐了高效的VS Code集成开发环境配置方法。通过一个简支梁分析的完整TCL脚本示例,手把手引导读者完成第一个非线性有限元分析,帮助土木工程与结构工程领域的研究者与学生快速上手这一强大的开源分析工具。

weixin_28829339的博客 336

老生常谈——HTTP

HTTP 和 TCP 的关系HTTP 是在 TCP 传输协议上层的应用层协议,主要解决如何包装数据的问题,关于 TCP/IP 和 HTTP 协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP 协议,但是如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如 HTTP、FTP、TELNET 等,也可以...

weixin_33974433的博客 230

用R来做一个临床研究亚组分析的森林图

在编程语言里R语言最强大的功能是做图功能,我们知道在做Meta分析的时候会需要做森林图,实际上我们在很多临床研究中也经常看到森林图,主要是亚组分析的森林图,比如下面这篇文章里的一个森林图: 今天就教教大家怎么用R语言来做上面这种亚组分析的森林图 1. 在Excel里编辑好数据,按照下面的格式整理,保存为csv格式 2. 下载安装R跟Rstudio R软件的下载地址: https://mirrors.tuna.tsinghua.edu.cn/CRAN/ Rstudio下

Mrrunsen的博客 5340

第十四节《OpenCascade集成Qt》

将 OpenCascade 与 Qt 集成是开发图形界面应用的常见需求。通过将 OpenCascade 的几何建模与 Qt 的图形用户界面(GUI)功能结合,可以创建强大而灵活的 CAD 或建模工具。OpenCascade 提供了与 Qt 的集成接口,允许你在 Qt 应用程序中嵌入 OpenCascade 的视图,执行几何操作,并与用户进行交互。以下是 OpenCascade 与 Qt 集成的详细步骤:首先,确保已安装 OpenCascade 和 Qt。你可以从 OpenCascade 官方网站或通过包管理

yumeiguo的博客 597

HTTP Transfer-Encoding介绍

参考资料:https://www.cnblogs.com/micro-chen/p/7183275.html Transfer-Encoding Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」。实际上,HTTP 协议中还有另外一个头部与编码有关:Content-Encoding(内容编码)。Content-Encoding 通常用于...

Dancen的专栏 7353

华为OD机试 - 商品推荐多属性排序 - 数组(Python/JS/C/C++ 双机位A卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。双十一来临,小王准备买某个购物平台买坚果。在输入坚果时,页面默认按照综合推荐列表。小王想知道这个综合排序时如何完成的,于是便开始思考算法题。经过一番操作后,完成它的多个关键词排序算法。希望你给小王提供一份正确的排序结果,验证其实现算法结果的准确性

学Java,找哪吒 622

HTTP基础

![在这里插入图片描述](https://img-blog.csdnimg.cn/0d450d458dae422daf15691887c45748.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfMzk4Mjc1NTU=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

qq_39827555的博客 1761

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Web 基础与 HTTP 协议

定义:HTML 是HyperText Markup Language(超文本标记语言)的缩写,是构建网页的基础技术之一。核心作用:通过 “标签” 描述网页的结构和内容(如标题、段落、图片、链接等),不负责样式(由 CSS 控制)和交互(由 JavaScript 控制)。超文本(HyperText):指网页内容不仅包含文本,还可以包含图片、链接、音频、视频等多媒体元素,且元素之间通过超链接相互关联。定义。

2301_80839375的博客 1361

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

web 基础与 http 协议

HTML 叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记 要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标 记符,可以告诉浏览器如何显示其中的内容。HTML, 文件可以使用任何能够生成 txt 文件的文本编辑器来编辑,生成超文本标记 语言文件,只用修改文件名后缀为”.html”或“.htm” 即可。HTTP 协议采用了请求/响应模型。

2501_91350469的博客 1585

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HTTP协议基础

HTTP协议 -- HyperText Transfer Protocol 超文本传输协议,HTTP 是一种能够获取如 HTML 这样的网络资源的(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的 Web 文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等客户端和服务端通过交换各自的消息(与数据流正好相反)进行交互。由像浏览器这样的客户端发出的消息叫做请求。

2501_90609832的博客 931

Web基础和HTTP协议

根域。

2401_88768957的博客 1491

Http基础

HTTP(HyperText Transfer Protocol,超文本传输协议)是Web通信的基础协议,它定义了浏览器与服务器之间通信的格式和流程。

oy的博客 986

http协议基础

一、网络基础 1】使用HTTP协议访问web 客户端:通过指定的访问地址获取(或上传)服务器资源(文件等信息) 服务器:使用HTTP协议的通信 2】TCP/IP协议 TCP是TCP/IP的第三层传输层,对应OSI的第四层传输层,以数据报的形式传输;(三次握手四次挥手) IP是TCP/IP的第二层互联层,对应OSI的第三层网络层; HTTP是传输协议,HTTP协议是属于应用层; UDP是TCP/IP的第三层传输层,对应OSI的第四层传输层是数据流的形式传输。(广播) 通常使用的网络(包括互联网)是在TCP

weixin_45221036的博客 234

Web基础与HTTP协议

3. 稳定性高:经过多年的发展和大量用户的实践检验,Apache具有出色的稳定性。6. 配置灵活:Apache的配置文件采用文本格式,虽然对于初学者来说可能有一定的学习曲线,但对于有经验的管理员来说,这种配置方式非常灵活,可以根据不同的需求进行精细的调整和优化。这里说的动态网页,与网页上的各种动画、滚动字幕等视觉上的动态效果没有直接关系,动态网页也可以是纯文字内容的,也可以是包含各种动画的内容,这些只是网页具体内容的表现形式,无论网页是否具有动态效果,只要是采用了动态网站技术生成的网页都可以称为动态网页。

2302_79420346的博客 1269

Web基础和Http协议

3.域名注册html概述纯文本格式文件编写语言为HTML在用户的浏览器中被“翻译”成网页形式显示出来HTML文件可以使用任何能够生成txt文件的文本编辑器来编辑,生成超文本标记语言文件,只用修改文件名后缀为”.html”或“.htm”即可。HTML基本标签HTML 语法规则HTML标签采用双标记符的形式,前后标记符对应,分别表示标记开始和结束,标记符中间的内容被标签描述。前标记符由“<XXX>”表示,结尾标记符多了一个“/”,由“</XXX>”表示。HTML 文件结构。

aran2002的博客 1244
上一篇: 基于 TCP 实现简易聊天室
下一篇: NodeJS 搭建 HTTP 服务器
Panda Shen
博客等级 码龄10年 18粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值