HTTP基础概念

HTTP基础概念

byte76 Lv1

HTTP

超文本传输协议(HTTP)是一个用于传输超媒体文档(例如HTML)的应用层协议。它是为了Web浏览器与Web服务器之间的通信而设计的,但也可以用于其他目的(例如API通信)。HTTP是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。


什么是HTTP请求?

HTTP请求是客户端(比如浏览器)向服务器请求获取资源(如网页、图片、文件等)时发送的消息。
包含如下几个关键部分:

请求行:包含请求方法(如 GET 用于获取资源、POST用于提交数据)、请求的 URL(统一资源定位符,指定要访问的资源位置)和 HTTP 协议版本。

请求头:包含一些额外的信息,像用户代理(表明请求的客户端类型)、接受的内容类型(如接受 HTML、JSON 等)、缓存控制信息等,用于告诉服务器更多关于请求的细节。

请求体(可选):主要用于 POST 等请求方法,在其中放置要发送给服务器的数据,例如表单数据。

首先要明确,不是所有的 HTTP 请求方法都使用请求体。最常用于发送请求体的方法是 POST 和 PUT。

  • POST 方法通常用于向服务器提交数据来创建新的资源。例如,当用户在网页上填写一个注册表单并提交时,浏览器会使用 POST 方法将表单数据发送到服务器的注册接口。

  • PUT 方法主要用于更新服务器上已有的资源。假设一个在线文档编辑应用,用户修改了文档内容后,点击保存,应用可能会使用 PUT 方法将更新后的文档内容发送到服务器来更新文档资源。

http请求方法

在 HTTP 通信过程中,每个 HTTP请求报文中都会包含一个 HTTP请求方法,用于告知客户端向服务器端请求执行某些具体的操作,下面列举几项常用的 HTTP请求方法

HTTP 请求方法描述
GET用于客户端请求指定资源信息,并返回指定资源实体
HEAD和 GET 相似,但其不需要服务器响应请求的资源,而返回响应首部(只需要响应首部即可,就是告诉我有或者没有,不需要缓存界面给我)
POST基于HTML表单向服务器提交数据,服务i去通常需要存储此数据,通常存放在 MySQL 这种关系型数据库中
PUT与 GET 相反,是向服务器发送资源的,服务器通常需要存储次资源,这就好比你要把一个新的商品送到商店并让商店存储起来。
DELETE请求服务器端删除URL指定的资源
MOVE请求服务器将指定的页面移至另一个网络地址
OPTIONS探测服务器端对请求的URL所支持使用的请求方法
TRACE跟踪一次请求中间所经历的代理服务器、防火墙或网关等。主要用于调试。

扩展:推荐一款功能强大的的 API开发和测试工具—— postman

http协议版本

http 0.9
最初的版本,仅支持 GET 方法,主要用于获取 HTML 文档,没有其他的概念,响应也很简单,只会返回 HTML 文档内容,没有状态码、响应头这些内容。

http 1.0
相较于0.9版本新增了多种请求方法,如 POST、HEAD等。
引入了请求头和响应头,用于传递关于请求和响应的更多信息;例如,通过请求头中的 “Accept” 字段,客户端可以告诉服务器它能够接受的内容类型;响应头中的 “Content - Type” 字段则告知客户端返回内容的类型。
支持多种内容类型,包括文本、图像、音频等多种格式的文件传输。

http 1.1

目前广泛使用的版本之一,在1.0版本中,每次请求/响应完成后,连接就会关闭。而1.1版本中允许在一次 TCP 连接中进行多次请求/响应,减少了建立和关闭连接的开销,提高了网络传输效率。
新增了更多的请求方法,如 PUT、DELETE 等。
引入了管道化技术,允许客户端在等待一个请求的响应时发送下一个请求。不过,管道化在实际应用中因为一些复杂的原因(如请求顺序依赖等)没有得到广泛使用。

http 2.0
采用二进制格式进行数据传输,相比于1.1版本的文本格式,二进制格式更高效,解析速度更快。
支持头部压缩,通过通过 HPB 算法压缩头部,减少传输量。
多路复用是2.0版本的核心特性之一,它允许在一个 TCP 连接上同时传输多个请求和响应,这些请求和响应可以交错进行,而不需要像1.1版本那样排队等待。

什么是 HTTP 响应?

HTTP 响应是服务器对客户端 HTTP 请求的回复消息。当客户端(如浏览器)向服务器发送请求,请求获取网页、文件或执行某种操作后,服务器会处理该请求,并返回一个 HTTP 响应来告知客户端请求的结果。
组成部分:
状态码:这是 HTTP 响应中非常关键的部分,它是一个三位数字的代码,用于表示服务器对请求的处理状态。
例如,最常见的状态码 200,表示请求成功,服务器已成功处理并返回请求的资源。而 404 状态码则表示请求的资源未找到,可能是客户端请求的 URL 有误或者服务器上不存在该资源。另外还有 500 状态码,通常意味着服务器在处理请求时发生了内部错误。

响应头:响应头包含了关于响应的各种附加信息。
比如 “Content - Type” 字段,它告诉客户端返回内容的类型,如 “text/html” 表示返回的是 HTML 文档,“application/json” 表示返回的是 JSON 格式的数据。还有 “Content - Length” 字段,用于指示响应体的长度(字节数)。此外,响应头还可能包含缓存控制信息(如 “Cache - Control”),用于指导客户端是否缓存以及如何缓存响应内容。

响应体:响应体是服务器返回的实际内容,是客户端真正需要的部分。
如果客户端请求的是一个网页,那么响应体就是网页的 HTML 代码;如果请求的是一张图片,响应体就是图片的二进制数据;若请求的是一个 API 接口获取数据,响应体可能是 JSON 或 XML 格式的数据,这些数据包含了客户端所请求的信息。

http的状态码

状态码说明
1XX信息性状态码
2XX成功状态码
3XX重定向状态码
4XX客户端错误
5XX服务端错误

Web客户端访问Web服务器的工作流程(以网络浏览器为例)

导航和启动
用户在浏览器中输入网址或者点击其他通信中的链接后,浏览器通过 DNS 查找网址并将请求发送到该网址

客户端向服务器发送 HTTP 请求报文
客户端(如浏览器)构建一个请求报文发送给 Web 服务器,请求报文的第一行标识了网站的根页面,指示了HTTP的版本(1.1/1.0/…),还有请求实体(如浏览器)的信息。请求报文发送到Web服务器后,即可由服务器读取并生成响应。

服务器将 HTTP 响应发回给客户端
Web服务器收到请求后,就会生成响应报文并将其返回给浏览器(客户端),浏览器接收并读取响应报文。报文的第一行通常是响应代码如 “200 OK”,表示 Web服务器可以成功响应请求。HTTP响应报文确切再现了请求报文的格式,并包含一系列成为“响应标头”的行,这些行提供有关响应的信息。

浏览器呈现报文
浏览器呈现响应报文,并在浏览器中显示网页

衡量一个 web网址的访问量指标:pv、uv、ip

pv:网站的点击量
uv:网站的访问用户数——COOKIE,cookie值相同的表示是一个用户
ip:网站的访问ip数,即有多少台客户机访问

  • 标题: HTTP基础概念
  • 作者: byte76
  • 创建于 : 2024-12-24 10:37:22
  • 更新于 : 2024-12-24 20:30:31
  • 链接: https://byte76.top/2024/12/24/HTTP/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论