HTTP 协议(Ⅲ)

目录

[一、HTTP 协议概念](#一、HTTP 协议概念)

二、无状态协议

[三、HTTP1.0 & HTTP1.1](#三、HTTP1.0 & HTTP1.1)

四、请求协议和响应协议

五、请求协议

1.浏览器监视请求和响应

[2. HTTP请求](#2. HTTP请求)

[2.1 请求的结构](#2.1 请求的结构)

[2.2 GET请求](#2.2 GET请求)

[2.3 POST请求](#2.3 POST请求)

[3. HTTP响应](#3. HTTP响应)

[3.1 响应的结构](#3.1 响应的结构)

[3.2 常见响应头字段](#3.2 常见响应头字段)

[3.3 常见状态码](#3.3 常见状态码)

[4. 请求和响应的总结](#4. 请求和响应的总结)


HTTP协议是客户端与服务器通信的"语言",规定了请求和响应的格式与规则。服务器是HTTP协议的执行者,接收客户端的HTTP请求,处理后返回HTTP响应。两者的关系是:HTTP协议定义了交互方式,服务器是实现和响应协议的主体。

一、HTTP 协议概念

HTTP ,即超文本传输协议。所有浏览器都可以发出http协议。

协议:就是规定的文本格式!例如写本书也要有格式,写总结也有格式。当然客户端发 送请求也要有格式,这个格式是已经约定的格式,所以服务器端按请求格式来获取请求信息, 然后服务器端再按照响应格式来响应,当然客户端还要按响应的格式来解析。

二、无状态协议

HTTP 是无状态协议,必须必须理解这一点!!!

所谓无状态,就是客户端发送一个请求,服务器返回一个响应,然后就断开连接了

无状态协议的好处,当然是效率高了,用户连接一下就断开,当用户再次发送请求时, 再连接,然后在响应之后再次断开。如果用户在服务器上找到了自己想看的小说,那么服务器只是把小说的内容(html)发送给用户的浏览器,然后用户的浏览器显示已经发送到本地的html,其实这时已经与服务器断开连接了。用户可能会看很久,但这不会占用服务器 的任何资源!

即实现了随用随断开。

三、HTTP1.0 & HTTP1.1

特性 HTTP/1.0 HTTP/1.1
连接方式 默认非持久连接,每次请求后关闭连接 默认持久连接(Keep-Alive),支持多个请求/响应
Host 头 不支持 Host 头,无法区分同一 IP 上的多个域名 支持 Host 头,支持虚拟主机
响应头 响应头较简单,功能有限 增加了更多响应头字段(如 Content-LengthTransfer-Encoding),支持分块传输
缓存机制 缓存依赖于 Expires 头,机制简单 引入 Cache-Control,支持强缓存和协商缓存
错误处理 状态码较少,错误处理简单 增加更多状态码,提供更详细的错误信息
性能优化 性能较差,每次请求都需要建立和关闭连接 性能提升,持久连接减少连接开销
应用场景 已基本被 HTTP/1.1 替代,现代服务器很少使用 广泛应用于现代 Web 服务器,是主流协议之一

四、请求协议和响应协议

无论是请求协议还是响应协议,都是由如下部分构成的:

请求(或响应)首行;

请求(或响应)头信息;

空行;

请求(或响应)正文。

五、请求协议

1.浏览器监视请求和响应

  • 功能:通过浏览器的开发者工具可以监视HTTP请求和响应,获取完整的请求和响应信息。

  • 浏览器支持

    • Firefox:支持监视功能。

    • Google Chrome:内置此功能,无需安装。

2. HTTP请求

2.1 请求的结构
  • 请求首行:包含请求方法(如GET或POST)、请求路径和HTTP协议版本。

    • 示例:GET /hello/index.jsp HTTP/1.1
  • 请求头:包含客户端向服务器发送的附加信息。

  • 请求正文:GET请求没有正文,POST请求有正文。

2.2 GET请求
  • 特点

    • 请求参数通过URL传递,容量有限(通常不超过1024KB)。

    • 没有请求正文,只有请求头。

  • 请求头字段

    • Host:请求的主机名。

    • User-Agent:客户端的浏览器和操作系统信息。

    • Accept:客户端可接受的文档类型。

    • Accept-Language:客户端支持的语言。

    • Accept-Encoding:支持的压缩格式。

    • Connection:连接方式(如keep-alive)。

    • Cookie:客户端存储的Cookie信息。

2.3 POST请求
  • 特点

    • 请求正文包含表单数据。

    • 常用于提交表单数据。

  • 请求头字段

    • Referer:请求来源页面。

    • Content-Type:表单数据的编码类型(如application/x-www-form-urlencoded)。

    • Content-Length:请求正文的长度。

  • 请求正文

    • 示例:username=hello,表示表单中输入的数据。

3. HTTP响应

3.1 响应的结构
  • 响应首行:包含HTTP协议版本、状态码和状态码的解释。

    • 示例:HTTP/1.1 200 OK
  • 响应头:包含服务器向客户端发送的附加信息。

  • 响应正文:通常是HTML代码。

3.2 常见响应头字段
  • Server:服务器的版本信息。

  • Content-Type:响应正文的编码格式。

  • Content-Length:响应正文的长度。

  • Set-Cookie:服务器发送给客户端的Cookie。

  • Date:响应的时间。

3.3 常见状态码
  • 200 OK:请求成功。

  • 404 Not Found:未找到请求的资源。

  • 500 Internal Server Error:服务器内部错误。

  • 其他情况:通常是格式不匹配等问题。

4. 请求和响应的总结

  • 请求方法

    • GET:用于获取资源,无正文,参数在URL中。

    • POST:用于提交数据,有正文,数据在请求正文中。

  • 请求首行请求方法 URL HTTP/1.1

  • 响应首行HTTP/1.1 状态码 状态码的解释

  • 响应正文:通常是HTML代码。

相关推荐
qwy7152292581634 小时前
13-R数据重塑
服务器·数据库·r语言
anddddoooo6 小时前
域内证书维权
服务器·网络·网络协议·安全·网络安全·https·ssl
zhoupenghui1687 小时前
golang时间相关函数总结
服务器·前端·golang·time
努力的小T7 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
IsToRestart7 小时前
什么是RPC,和HTTP有什么区别?
网络协议·http·rpc
梨落秋溪、8 小时前
输入框元素覆盖冲突
java·服务器·前端
猫猫的小茶馆9 小时前
【网络编程】UDP协议
linux·服务器·网络·网络协议·ubuntu·udp
鱼嘻9 小时前
Linux自学day23-进程和线程
linux·服务器·c语言·进程和线程
爆更小小刘9 小时前
Linux下基本指令(4)
linux·运维·服务器