如何理解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:字段说明数据的压缩方法。表示服务器返回的数据使用了什么压缩格式