HTTP协议简单介绍

HTTP协议介绍

HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。HTTP协议是一种无状态的协议,这样保证了它高效的传输信息效率,但是因为它是无状态协议,在许多场景中,需要借助其他技术来辅助它完成一些其他功能。

HTTP详细请求过程

  1. 建立TCP连接:当用户在浏览器中输入一个URL并按下回车键时,浏览器首先会检查自身的DNS缓存以及操作系统的DNS缓存,看是否有该URL对应的IP地址。如果没有,浏览器会向DNS服务器发起一个DNS解析请求,将域名解析为对应的IP地址。然后,浏览器会尝试与服务器建立TCP连接,这通常通过TCP三次握手完成。

  2. Web浏览器向Web服务器发送请求命令:一旦TCP连接建立成功,Web浏览器会向Web服务器发送一个HTTP请求。这个请求包含了请求方法(如GET或POST),请求的URL,以及请求头部信息。请求头部信息可以包含客户端的环境信息、身份验证信息等。

  3. Web服务器应答:Web服务器在接收到请求后,会处理该请求并生成一个HTTP响应。响应的第一部分包括状态码,用来指示请求是否成功以及其他相关信息。

  4. Web服务器发送应答头信息和数据:在状态码之后,Web服务器会发送应答头信息,这些信息可以包含服务器类型、日期时间、内容类型和长度等。接着,服务器会发送请求的正文数据,这些数据可能是HTML、JSON或其他格式的内容。

  5. 浏览器解析和渲染页面:浏览器在接收到响应后,会解析HTML标签,并加载和解析其中的JavaScript和CSS等资源。然后,浏览器会根据这些资源对页面进行渲染,最终在用户的屏幕上显示出请求的网页。

  6. 断开连接:在数据传输完成后,浏览器和服务器会进行TCP四次挥手来断开连接,释放网络资源。

    需要注意的是,HTTP/1.1版本中引入了持久连接(persistent connection)的概念,也称为keep-alive连接。在这种连接中,多个请求和响应可以在同一个TCP连接上依次进行,不需要为每个请求都建立新的连接。这可以显著提高网络传输的效率。

HTTP请求响应模型

HTTP是一种经典的C/S模型(客户端服务器模型),HTTP协议永远都是客户端向服务端发送请求,服务器回复。

在这里插入图片描述

HTTP响应码

  • 1XX类状态码信息表示:临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1XX响应
  • 2XX类状态码信息表示:服务器成功的接收了客户端请求
  • 3XX类状态码信息表示:客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同页面,或者通过代理服务器重复该请求
  • 4XX类状态码信息表示:发生错误,客户端似乎有问题。一般跟网络的资源丢失相关,或者拒绝你的访问。
  • 5XX类状态码信息表示:服务器遇到错误而不能完成该请求

HTTP报文格式

请求/响应报文格式主要分成三部分:请求行,头部信息,空行,正文。

在这里插入图片描述

常见头部字段

  1. 通用首部字段:这些字段在请求报文和响应报文中都会使用。例如:
  • Cache-Control:用于控制缓存的行为,如设置缓存的最大有效时间、禁止缓存等。
  • Connection:用于控制是否保持连接,常见的值有keep-alive和close。
  • Date:表示消息创建的日期和时间。
  • Transfer-Encoding:指定报文主体的传输编码方式。
  1. 请求首部字段:这些字段主要在请求报文中使用。例如:
  • Host:表示请求资源所在服务器的域名或IP地址。
  • Accept:告知服务器客户端可以处理哪些媒体类型,如text/html、application/xml等。
  • Accept-Encoding:告诉服务器客户端支持的压缩格式,如gzip、deflate等。
  • Accept-Language:告诉服务器客户端支持的自然语言,如zh-CN、en-US等。
  • User-Agent:包含发出请求的用户代理的信息,通常包括浏览器类型、版本和操作系统等。
  • Referer:指示请求源自哪个页面,常用于分析用户行为、防止恶意请求等。
  1. 响应首部字段:这些字段主要在响应报文中使用。例如:
  • Server:包含服务器的软件信息,如服务器名称、版本等。
  • Location:用于重定向,告诉客户端应该访问的新URL地址。
  • Allow:告诉客户端资源支持哪些HTTP请求方法,如GET、POST等。
  1. 实体首部字段:这些字段与请求报文和响应报文的实体部分相关。例如:
  • Content-Length:表示实体主体的长度,即请求或响应正文的字节数。
  • Content-Type:表示实体主体的媒体类型,如text/html、application/json等。
  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值