HTTP协议与请求过程

HTTP协议工作原理

  • HTTP是一种无状态协议,即每个请求都是独立的,服务器不会记住之前的请求。这意味着每个请求都必须携带足够的信息来完成通信。
  • HTTP协议是建立在TCP协议之上的,通过在应用层发送文本格式的请求和响应数据来实现通信。
  • HTTP使用请求/响应模型:客户端发送请求给服务器,服务器接收请求并返回响应给客户端。

以下是各个HTTP协议版本的主要特点

版本主要特点优点缺点
HTTP/1.0每个请求/响应需单独建立TCP连接,不支持持久连接- 简单易实现
- 能满足基本需求
- 每个请求/响应需单独建立TCP连接
- 不支持持久连接,性能较低
HTTP/1.1引入了持久连接机制,支持管道化请求、分块传输编码等优化性能的特性- 引入了持久连接,减少了延迟时间
- 支持管道化请求和分块传输编码,提高性能
- 仍然存在并发请求限制
- 头部未压缩,导致头部信息过多
HTTP/2使用二进制格式传输数据,支持头部压缩、多路复用、服务器推送等,提高网页加载速度- 使用二进制格式传输数据,提高效率
- 支持头部压缩,减少数据量
- 多路复用技术提高了并行传输效率
- 需要加密,对服务器资源要求较高
- 部分网络设备不支持HTTP/2
HTTP/3基于QUIC协议,采用UDP进行数据传输,提供快速握手和数据传输机制,进一步提高性能和安全性- 基于QUIC协议,提供更快的握手和数据传输机制
- 使用UDP协议,改进了传输速度和连接恢复速度
- 尚处于发展阶段,可能存在兼容性问题
- 部署难度较大,需要支持QUIC协议的服务器和客户端

请求过程

  1. 建立连接:客户端向服务器发起TCP连接。

    第一次握手(SYN):

     客户端发送一个带有SYN(同步)标志的数据包给服务器,表示客户端请求建立连接,并指定自己的初始序列号。
    
     这个数据包会携带客户端的初始化序列号Seq=client_isn。
    

    第二次握手(SYN + ACK):

     服务器收到客户端发来的SYN数据包后,会回复一个带有SYN和ACK(确认)标志的数据包给客户端,表示接收请求并同意建立连接。这个数据包除了携带服务器的初始化序列号外,
    
     还会确认客户端的序列号,同时也会使服务器的序列号增1以防止重复。
    

    第三次握手(ACK):

     客户端收到服务器发来的SYN + ACK 数据包后,在这个过程中客户端向服务器发回一个确认的数据包,表示客户端接收到服务器的确认信息。
    
     这个数据包中携带的确认号码(Ack)是服务器序列号的下一个,即Ack=server_isn + 1。
    
  2. 发送请求:客户端发送包含请求方法(GET、POST等)、目标URL、协议版本、请求头和请求体等信息的HTTP请求消息。

  3. 服务器处理请求:服务器接收到请求后,根据请求内容进行处理,可能包括访问数据库、调用后端服务等。

  4. 发送响应:服务器将处理结果构建成HTTP响应消息,包括状态码、响应头和响应体等信息。

  5. 关闭连接:服务器向客户端发送完整的响应后,可以选择关闭连接或保持连接以便后续请求。

    客户端发送一个FIN(结束)包给服务器,表示客户端不再发送数据。
    服务器收到客户端的FIN后,发送一个ACK给客户端,确认收到了关闭请求。
    服务器发送一个FIN给客户端,表示服务器也准备关闭连接。
    客户端收到服务器的FIN后,发送一个ACK给服务器,确认收到关闭请求并同意关闭连接。

响应过程

  1. 接收响应:客户端接收来自服务器的HTTP响应消息。
  2. 解析响应:客户端解析响应消息的内容,包括状态码、响应头和响应体等信息。
  3. 处理响应:客户端根据状态码和其他信息进行相应的处理,如渲染页面、处理数据等。
  4. 关闭连接:客户端根据需要可以选择关闭连接或保持连接以进行后续请求。
  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蹦跶哒哒哒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值