【网络】HTTP协议

目录

1. 什么是HTTP协议?

2. 为什么使用HTTP协议?

3. HTTP协议通信过程

4. 什么是url?

5. HTTP报文

5.1 请求报文

5.2 响应报文

6. HTTP请求方式

7. HTTP头部字段

8. HTTP状态码

9. 连接管理

长连接与短连接

管线化连接


1. 什么是HTTP协议?

HTTP协议是 Hyper Test Transfer Protocol(超文本传输协议)的缩写


2. 为什么使用HTTP协议?

HTTP协议是用于服务器与客户端浏览器之间传输超文本数据(文字、图片、视频、音频)的应用层协议


3. HTTP协议通信过程

http协议通信过程步骤:

1. 用户发起一个请求时,浏览器会对服务器的 TCP 请求连接

2. 服务器与浏览器会按照 TCP 协议的三次握手,建立 TCP 连接

3. 浏览器按照 http 协议格式,创建请求数据包(http请求报文),然后将请求数据包发送给服务器

4. 服务器按照 http 协议格式,解析请求数据包,执行请求处理,调用相关业务的方法,产生相应数据,然后将响应数据封装成响应数据包(http 响应报文)并发送给浏览器

5. 浏览器按照 http 协议格式,对响应数据包进行解析,将响应数据显示到浏览器页面,为用户展示


4. 什么是url?

HTTP协议使用 url(Uniform Resource Locator,统一资源定位符)定位资源

格式:http://host[ ":" port ][abs_path]

示例:http://127.0.0.1:8080/index.html

  • http :表示要通过 http 协议定位网络资源
  • host :表示合法的 Internet Web 服务器或者 IP 地址
  • port:指定一个端口号,为空则使用缺省端口80
  • abs_path:指定请求资源的URI

URL(url) : URI(Uniform Resource Identifier,统一资源标识符)的子集,URL 在 URI 的基础上增加了定位能力 

URN:只是用来定义一个资源的名称,并不具备定位该资源的能力


5. HTTP报文

5.1 请求报文

浏览器通过URL发起一个请求时,会发送一个 http 请求报文给目标服务器,服务器会根据请求报文中携带的请求数据进行处理

5.2 响应报文

当服务器处理完请求后,会将响应数据放入 http 响应报文中返回给浏览器


6. HTTP请求方式

  • GET:获取资源

        用于使用给定的 URL 从给定服务器中检索信息,完成从指定资源中请求数据。只是检索数据,并不会对数据产生其他影响。

  • POST:提交数据增加资源

        用于将数据发送到服务器以创建增加资源。使用 post 方法,如果两个请求相同,后一个请求不会覆盖第一个请求,所以 post 用于增加资源。

  • HEAD:获取响应头

        与 GET 方法类似,但是不反悔响应报文内容主体部分,仅传输响应报头部分。主要用于确认 URL 的有效性以及资源更新的日期时间等。

  • PUT:修改资源

        用于修改资源,要求在请求报文的主体中包含数据内容,然后保存到请求 URL 指定位置。使用 put 方法,如果两个请求相同,后一个请求会覆盖第一个请求,所以 put 用于修改资源。

  • DELETE:删除资源

        用于删除指定的资源。

  • OPTIONS:查询支持的方法

        查询指定的 URL 能够支持的方法。会返回 Allow:GET,POST,HEAD,OPTIONS等请求方式内容。

-------------------------------------------------------------------------------------------------------------------------

GET 和 POST 的区别

  • GET 用于获取资源,POST 用于提交数据。
  • GET 和 POST 的请求报文格式不同。
  • GET 使用请求报文中的首部字段 URL 传递请求参数,POST 使用 Request Body 提交数据。
  • GET 是幂等且可缓存,POST 非幂等且不可缓存;

        [幂等]:意思是多次执行相同的操作,结果都是[相同]的。


7. HTTP头部字段

  • Host 字段:浏览器在发送请求时,用来指定服务器的域名;
  • Content-Length 字段:服务器在响应数据时,会通过 Content-Length 字段,表示本次响应数据的长度;
  • Connection 字段:Connection 字段用于浏览器要求服务器使用长连接,以便其他请求复用该连接;
  • Content-Type 字段:Content-Type 字段用于服务器响应时,告诉浏览器本次响应数据的内容类型;
  • Accept 字段:Accept 字段用于浏览器发送请求时,声明可以接受哪些响应数据格式;
  • Content-Encoding 字段:Content-Encoding  字段说明数据的压缩方法,表示服务器响应的数据使用的压缩格式;
  • Accept-Encoding 字段:客户端在请求时,用 Accept-Encoding 字段说明自己可以接受哪些压缩方法;

8. HTTP状态码

服务器返回的 响应报文 的第一行为状态行,包含了状态码以及描述信息,用来告诉客户端请求后的响应结果。

状态码代表具体含义常见状态码
1xx信息提示100、101
2xx成功,报文已经收到且被正确处理200、201、204
3xx重定向,资源位置发生变动,需要客户端重新发起请求301、302、304
4xx客户端错误,请求报文有误,服务器无法处理400、401、403、404、405
5xx 服务器错误,服务器在处理请求时内部发生了错误500、502、503、504

1xx 信息:属于提示信息

  • 100:客户端可以继续发送请求
  • 101:服务器已经理解并接受请求,正在切换协议

2xx 信息:服务器成功处理了客户端的请求

  • 200:请求成功
  • 201:已创建新资源
  • 204:请求成功,但没有返回任何内容
  • 206:请求成功,但响应返回的 body 数据不是资源的全部,而是其中的一部分

3xx 信息:客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源

  • 301:永久性重定向,请求的资源不存在,需改用新的 URL 再次访问
  • 302:临时性重定向,请求的资源还在,但暂时需要用另一个 URL 来访问
  • 304:客户端可以使用缓存的内容

4xx 信息:客户发送的报文有误,服务器无法处理

  • 400:请求无效
  • 401:未经授权
  • 403:权限不足
  • 404:请求的资源不存在
  • 405:请求方法不被允许

5xx 信息:客户端请求报文正确,但服务器处理时内部发生了错误,属于服务器端的错误码

  • 500:服务器内部错误
  • 502:网关错误
  • 503:服务器不可用
  • 504:网关超时

 9. 连接管理

长连接与短连接:

HTTP 1.0 默认使用短连接,HTTP 1.1 默认使用长连接,也叫持久性连接。

  • 短连接:每次使用 HTTP 协议进行通信,都需要重新按照三次握手的方式建立一个独立的 TCP 连接,响应完毕后,通过四次挥手断开连接。循环往复,增加了通信的开销;
  • 长连接:只需要建立一次 TCP 连接就能进行多次 HTTP 通信,减少了 TCP 连接的重复建立和断开所造成的额外开销,减少了服务端的负载;

管线化连接:

  • 通过长连接将多个 HTTP 请求整批提交,在传送过程中不需先等待服务端的回应。 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1、鸿蒙学习-为应用/服务进行签名

针对应用/服务的签名,DevEco Studio为开发者提供了自动签名方案,帮助开发者高效进行调试。也可选择手动方式对应用/服务进行签名,如果使用了需要ACL的权限,需采用手动方式进行签名。 自动签名 说明 使用自动签名前,请…

探讨大世界游戏的制作流程及技术——大场景制作技术概况篇

接上文,我们接下来了解一下大世界场景制作技术有哪些,本篇旨在给大家过一遍目前业界的做法,能让大家有一个宏观的知识蓝图。实际上,针对不同的游戏类型和美术风格,制作技术在细节上有着非常大的不同,业界目…

3、设计模式之工厂模式1(Factory)

工厂模式是什么?     工厂模式是一种创建者模式,用于封装和管理对象的创建,屏蔽了大量的创建细节,根据抽象程度不同,主要分为简单工厂模式、工厂方法模式以及抽象工厂模式。 简单工厂模式 看一个具体的需求 看一个…

pytorch升级打怪(三)

数据集合数据加载器 简介加载数据集迭代和可视化数据集为您的文件创建自定义数据集__init____len____getitem__ 准备您的数据以使用DataLoaders进行训练通过DataLoader进行遍载 简介 处理数据样本的代码可能会变得混乱且难以维护;理想情况下,我们希望我…

4种小众的能力,帮你更好地适应未来

新年伊始,又是一个全新的开始。 未来的社会究竟需要什么样的能力?这已经是一个很老的话题,已经有许许多多讨论了。但这其中,可能有一些是容易被人忽略的,或者不容易被注意到的。 我想跟你一起分享,我对这个…

高分1、2号卫星原始遥感影像数据

高分一号 高分一号卫高分一号卫星是中国高分辨率对地观测系统的首发星,突破了高空间分辨率、多光谱与宽覆盖相结合的光学遥感等关键技术,设计寿命5至8年。 高分辨率对地观测系统工程是《国家中长期科学和技术发展规划纲要(2006~2020年)》确定…

vue学习笔记25-组件数据传递透传Attribute

组件数据传递 之前学的 props:父传子 自定义事件:子传父 props可以实现子传父,因为props传递数据不限制类型,当然也可以传函数,而我们可以利用函数互相携带参数实现子传父(传一个回调函数,emit的底层原…

MongoDB实战面试指南:常见问题一网打尽

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! MongoDB是一款流行的非关系型数据库,以其高效、可扩展的特性受到开发者的青睐。了解MongoDB的架构、存储引擎和数据结…

精酿啤酒:煮沸、发酵与成熟的过程解析

在啤酒酿造过程中,煮沸、发酵与成熟是重要的环节,它们对啤酒的口感、香气和品质具有决定性的影响。下面将详细解析Fendi Club啤酒在煮沸、发酵与成熟过程中的关键步骤和与众不同之处。 煮沸是啤酒酿造过程中的一个重要环节。在这一步骤中,麦汁…

Mac电脑搭建前端项目环境,并适配老项目

1.上一篇文章中,我说到了,node.js中文网下载node 包,根据系统进行选择,然后安装包node即可,对于比较新的项目确实也是适用的,但是老项目就不行了会报错,node版本过高,导致环境不匹配…

基于数据库的全文检索实现

对于内容摘要&#xff0c;信件内容进行全文检索 基于SpringBoot 2.5.6Postgresqljpahibernate实现 依赖 <spring-boot.version>2.5.6</spring-boot.version> <hibernate-types-52.version>2.14.0</hibernate-types-52.version><dependency><…

手机备忘录怎么导出到电脑,如何将手机备忘录导出到电脑

备忘录是我们日常生活和工作中常用的工具之一&#xff0c;我们可以在手机上轻松地记录重要的事务、想法和灵感。然而&#xff0c;在某些情况下&#xff0c;我们可能需要将手机备忘录导出到电脑进行更详细的整理和管理。那么&#xff0c;手机备忘录怎么导出到电脑&#xff0c;如…