Skip to content

如何理解HTTP协议

专题简介

  • http是什么
  • 一个完整的HTTP请求流程是什么样的?
  • HTTP的特点
  • 什么是HTTP无状态协议
  • 如何克服HTTP无状态协议的缺陷?
  • HTTP的请求报文包括哪些部分
  • 响应报文包含哪些部分
  • http常见字段有哪些

HTTP是什么?

HTTP 是超文本传输协议,一个基于请求与响应,无状态的,应用层协议,常基于TCP/IP协议传输数据,互联网上应用最广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

一个完整的HTTP请求流程是什么样的?

  • 域名解析
  • 发起TCP的3次握手。
  • 建立TCP连接后发起HTTP请求。
  • 服务器端响应HTTP请求,浏览器得到HTML代码。
  • 浏览器解析HTML代码,并请求HTML代码中的资源。
  • 浏览器对页面进行渲染并呈现给用户。

HTTP的特点

  • 无状态
  • 无连接
  • 基于请求和响应
  • 通信使用明文,请求响应不会对通信方进行确认,无法保护数据的完整性

什么是HTTP无状态协议

无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续需要处理,需要前面提供的信息

如何克服HTTP无状态协议的缺陷?

克服无状态协议缺陷的办法是通过 cookie和会话保存信息。

HTTP的请求报文包括哪些部分

  • 请求行:包含请求方法、URI、HTTP版本信息。
  • 请求头部:包含浏览器类型、所支持的编码方式、语言首选项
  • 空行:请求头部之后是一个空行,用于分隔请求头部和请求正文。
  • 请求正文(可选):有些请求可能包含请求正文,例如表单数据或上传的文件

响应报文包含哪些部分

  • 响应状态行:包含HTTP版本、响应状态码、对应的状态消息。
  • 响应头部:包含服务器类型、响应时间、返回的数据类型等。
  • 空行:响应头部之后是一个空行,用于分隔响应头部和响应正文。
  • 响应正文:响应正文包含了服务器返回的实际数据,例如HTML页面、图像、CSS样式表等。

HTTP常见字段有哪些

  • Host:客户端发送请求时,用来指定服务器的域名
  • Content-Length:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度。
  • Connection:字段最常用于客户端要求服务器使用「HTTP 长连接」机制,以便其他请求复用。
  • Content-Type:字段用于服务器回应时,告诉客户端,本次数据是什么格式。
  • Content-Encoding:字段说明数据的压缩方法。表示服务器返回的数据使用了什么压缩格式