应用层-HTTP协议

news2024/11/19 16:38:29

HTTP概述

HTTP(HyperTextTransferProtocol)是Web应用的应用层协议,定义浏览器如何向Web服务器发送请求以及Web服务器如何向浏览器进行响应。目前主要使用的HTTP/1.0 和HTTP/1.1,尤其以HTTP/1.1 为主流。

HTTP连接

浏览器在向服务器发送请求之前,首先需要建立TCP连接,然后才能发送HTTP请求报文,并接收HTTP响应报文。根据HTTP使用TCP连接的策略不同,可以分为非持久连接的HTTP和持久连接的HTTP。

  • HTTP/1.0 默认的是非持久连接。
  • HTTP/1.1 默认使用流水方式持久连接。HTTP/1.1 持久连接默认是激活的。
  • HTTP/1.1 代理服务器不应该与HTTP/1.0 客户端建立持久连接。

图解过程使用例子:假如用户在浏览器中输入了URL地址 https://pumg.gitee.io/note/ ,请求浏览器一个引用3个图像的web页面。

非持久连接

非持久连接

指HTTP客户与HTTP服务器建立TCP连接后,通过该连接发送HTTP请求报文,接收HTTP响应报文,然后断开连接。HTTP/1.0默认使用非持久连接。

  • 图解 HTTP/1.0 使用非持久连接传输过程
    shuyu

并行连接

通过建立多条并行TCP连接,并行发送HTTP请求和并行接收HTTP响应。

  • 图解 HTTP/1.0 使用并行连接传输过程
shuyu

持久连接

重用已建立的TCP连接发送新的HTTP请求和接收HTTP响应,从而消除新建TCP连接的时间开销。根据使用持久连接传输多个对象的策略不同:非流水方式持久连接和流水方式持久连接。

非流水方式持久连接

客户端在通过持久连接收到前一个响应报文后,才能发出对下一个对象的请求报文,也称为非管道方式持久连接。

  • 图解 HTTP/1.1 使用非流水方式持久连接传输过程
    shuyu

流水方式持久连接

客户端在通过持久连接收到前一个响应报文后,才能发出对下一个对象的请求报文,也称为管道方式持久连接。

  • 图解 HTTP/1.1 使用流水方式持久连接传输过程
    shuyu

HTTP报文

HTTP 报文可以分为两类:请求报文和响应报文,请求报文由浏览器(客户端)发送给 Web 服务器,响应报文由 Web 服务器发给浏览器。
报文结构图:

请求报文响应报文
起始行<方法> <资源路径> <HTTP版本><HTTP版本> <状态码> <原因短语>
首部行携带附加信息携带附加信息
空白行必须有(CRLF)必须有(CRLF)
报文主体实际要传输的内容实际要传输的内容

HTTP典型的请求方法:

  1. GET:请求读取由URL所标识的信息,是最常见的方法。
  2. HEAD:请求读取由URL所标识的信息的首部。
  3. POST:给服务器添加信息。
  4. OPTION:请求一些选项的信息。
  5. PUT:在指明的URL下存储一个文档

HTTP状态码分类:

响应码类别解释
1xxInformational(信息性状态码)接受的请求正在处理
2xxSuccess(成功状态码)请求正常处理完毕
3xxRedirection(重定向)需要进行附加操作以完成请求
4xxClient error(客户端错误)客户端请求出错,服务器无法处理请求
5xxServer Error(服务器错误)服务器处理请求出错

1XX 表示临时响应并需要请求者继续执行操作

  • 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
  • 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

2XX 表示成功处理了请求的状态代码

  • 200 (请求成功),服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
  • 201 (已创建) 请求成功并且服务器创建了新的资源。
  • 202 (已接受) 服务器已接受请求,但尚未处理。
  • 203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
  • 204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
  • 205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
  • 206 (部分内容) 服务器成功处理了部分 GET 请求。

3XX 表示要完成请求,需要进一步操作。重定向

  • 300 (多种选择) 针对请求,服务器可执行多种操作。
  • 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
  • 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
  • 303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
  • 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
  • 305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
  • 307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

4XX 这些状态代码表示请求可能出错,妨碍了服务器的处理

  • 400 (错误请求) 服务器不理解请求的语法。
  • 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
  • 403 (禁止) 服务器拒绝请求。
  • 404 (未找到) 服务器找不到请求的网页。
  • 405 (方法禁用) 禁用请求中指定的方法。
  • 406 (不接受) 无法使用请求的内容特性响应请求的网页。
  • 407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
  • 408 (请求超时) 服务器等候请求时发生超时。
  • 409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
  • 410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
  • 411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
  • 412 (未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。
  • 413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
  • 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
  • 415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
  • 416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
  • 417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求。

5XX 一般是服务器问题

  • 500 (服务器内部错误) 服务器遇到错误,无法完成请求。
  • 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
  • 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
  • 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
  • 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
  • 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全日制和非全日制之争,看完六年前的这个文件心里就有数了

在每年的报考咨询中&#xff0c;都能接触到不少关于非全日制硕士的质疑&#xff0c;最大的争议点无非在于社会含金量的问题。其实很多年以前是没有非全日制这一说法的&#xff0c;早些年很多学员也是在职周末读的双证MBA/MPA/MEM这些专业&#xff0c;但证书一律是全日制标识&am…

Oracle Primavera Unifier进度管理器(Schedule Manager)

目录 功能介绍 功能包括 功能介绍 在进度管理器中&#xff0c;Primavera Unifier 用户可以在项目/外壳和项目群级别创建和管理进度表。他们可以创建根据项目或外壳的需求自定义的项目/外壳计划表。当他们为项目/外壳创建第一个时间表表时&#xff0c;Primavera Unifier 会自…

【软考】系统集成项目管理工程师(九)项目成本管理

这里写目录标题 一、项目成本管理概述二、项目成本管理子过程1. 规划成本2. 成本估算3. 制定预算4. 控制成本一、项目成本管理概述 成本 即项目的全过程中所耗用的各种成本,它们的总和为项目成本。成本管理 是在预算范围内确保项目团队完成一个项目所需要开展的管理过程,项目…

前端网页项目-学成在线案例

典型的企业级网站目的是为了整体感知企业级网站布局流程&#xff0c;复习以前知识 准备素材和工具&#xff1a; 学成在线PSD源文件开发工具PS&#xff08;切图&#xff09;/cutterman插件vscode&#xff08;代码&#xff09;chrome&#xff08;测试&#xff09; 案例准备工作&…

[附源码]java毕业设计健身健康规划系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

发布 .NET 7 MAUI / MAUI Blazor 应用到 Windows 应用商店

.NET MAUI 目前仅允许发布 MSIX 包。 原文地址 https://www.cnblogs.com/densen2014/p/16885318.html 创建签名证书发布到本地传送门 https://www.cnblogs.com/densen2014/p/16567384.html 使用 Visual Studio 2022 发布到 Windows 应用商店 由于是发布到 Windows 应用商店,本…

代码中可能会使用

代码中可能会使用 日志 结合兼具举报系统日志 https://www.cnblogs.com/lingduqianli/p/7589173.html 拦截器 https://blog.csdn.net/neymar_jr/article/details/79115839 拦截器应用场景 拦截器本质上是面向切面编程&#xff08;AOP&#xff09;&#xff0c;符合横切关注点…

MYSQL窗口函数(Rows Range)——滑动窗口函数用法

语法介绍 窗口函数语法&#xff1a; <窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名> rows/range子句<用于定义窗口大小> ) <窗口函数>可以放以下两种函数&#xff1a; 1&#xff09; 专用窗口函数&#xff0c;包括…

图文详解Linux基础经典教程(07)——CentOS安装Tomcat

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 概述 之前&#xff0c;我们在CentOS中安装了JDK&#xff1b;接下来&#xff0c;我们在CentOS中安装Tomcat。 安装步骤 在此&#xff0c;详细介绍Tomcat的安装步骤。 第一…

上海亚商投顾:A股缩量调整 AIGC、Web3.0概念抢眼

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪三大指数今日震荡调整&#xff0c;深成指、创业板指午后均跌超1%&#xff0c;黄白二线有所分化&#xff0c;科创50指…

Django Celery异步任务队列

“ https://github.com/celery/celery” celery的GitHub源码文件 Celery是一个异步任务队列&#xff0c;需要python的环境&#xff0c;一般可用于python的web开发框架“食”用&#xff0c;例如Django。 场景 例如在自己开发网站时&#xff0c;写发送短信验证码的部分&#xff0…

Http不转换成Https会有什么后果?

自从互联网诞生以来&#xff0c;大家一开始接触的就是http站点&#xff0c;类似于http://域名&#xff0c;看习惯了也用习惯了。不过&#xff0c;随着人们网络安全意识的提高&#xff0c;越来越多的http站点已经被https站点所替代&#xff0c;逐年在增加。那么&#xff0c;http…

艾美捷C1q天然蛋白化学性质和相关研究方案

艾美捷C1q天然蛋白背景&#xff1a; C1q是补体系统C1的组成成份。它是一个巨分子量 (460kD) 糖蛋白。一个C1q分子由18条多肤链组成,含A、B、C 3条不同链。补体系统通过经典途径、旁路途经和甘露糖结合凝集素途径激活&#xff0c;而C1q是补体经典途径重要的启动分子&#xff0c…

【干货】STM32通过ADC模拟看门狗实现掉电保存

1.前言 很多时候我们需要将程序中的一些参数、数据等存储在EEPROM或者Flash中&#xff0c;达到掉电保存的目的。但有些情况下&#xff0c;程序需要频繁的修改这些参数&#xff0c;如果每次修改参数都进行一次保存&#xff0c;那将大大降低存储器的寿命。尤其是单片机内部Flash&…

uniapp中使用微信小程序custom-tab-bar

uniapp中使用微信小程序custom-tab-bar1、配置信息2、添加 tabBar 代码文件3、 编写 tabBar 代码4、踩坑5、解决今天把小程序项目中的 tabBar 改为使用自定义的tabbar 其实很简单&#xff0c;只要按照小程序开发文档中的步骤来做 1、配置信息 在 app.json 中的 tabBar 项指定…

移动魔百盒UNT401A、UNT403A、UNT413A_晶晨S905L3A/B芯片_红外蓝牙语音_免拆卡刷固件

移动魔百盒UNT401A、UNT403A、UNT413A_晶晨S905L3A/B芯片_红外蓝牙语音_免拆卡刷固件&#xff0c;28G或216G配置-安卓9.0 支持最新出UWE5621DS/MT7661/MT7663/MT7668/RTL8822CS及以往其他无线型号-当贝红外蓝牙语音免拆卡刷包固件。 固件特点&#xff1a; 1、修改dns&#xf…

使用EasyCV Mask2Former轻松实现图像分割

作者&#xff1a;贺弘 谦言 临在 导言 图像分割(Image Segmentation)是指对图片进行像素级的分类&#xff0c;根据分类粒度的不同可以分为语义分割(Semantic Segmentation)、实例分割(Instance Segmentation)、全景分割(Panoptic Segmentation)三类。图像分割是计算机视觉中的…

CDD文件——CANdelaStudio

诊断协议那些事儿 本文为诊断协议那些事儿专栏文章&#xff0c;在CANoe诊断测试一文中介绍了导入CDD文件&#xff0c;CDD(CANdela Diagnostic Descriptions&#xff0c;CANdela诊断描述)是诊断数据的数据库&#xff0c;与CAN消息的数据库文件DBC类似&#xff0c;也就是上文提到…

【minimal problem】资料整理

minimal problem use as few data as to generate a system of algebraic equaIons with a finite number of soluIons 使用尽可能少的数据来生成代数系统 解数有限的方程 以往工作 基于神经网络解一元高次方程 代码实战&#xff1a;解低次方程 代码实战&#xff1a;解高次方…

基于象鼻虫损害优化算法求解装箱问题附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …