本文主要是介绍HTTP的通讯流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、什么是HTTP
http
:是我们前/后台交互
时的传输协议(即:超文本传输协议
)解释
:- 是指:在进行传输时使用的协议
- 协议中,规定了如何连接、如何发请求、如何携带数据、获取响应数据的格式、获取响应数据时,获取结束之后的链接/断开方式等
2、HTTP 的工作流程
- 和
服务器
建立链接 - 建立链接后,发送一个
请求
给服务器
(请求) - 服务器接受到请求以后进行相应的处理并给出一个
回应
(响应) - 断开与服务器的链接
- 注意:
- 并不是前端发了请求这件事就结束了,而是发完请求获取响应之后这事才算结束
- 所以HTTP的工作流程是针对一个"发",一个"收"这样整体来完成的
- 在整体的传输过程中,为了传输数据的严谨性,会进行一些验证,验证通过后才会进行数据的传输
- 注意:
3、如何与服务器建立链接
- 需要保证
客户端(浏览器)
的接收和发送正常,服务器端
的接收和发送正常 - 这里就涉及到一个东西叫做:
TCP/IP 协议
http协议
是基于TCP/IP协议
的一个高级封装
http协议
是高级版的TCP协议
,所以它的主要验证手段就是:三次握手
,即:建立链接的主要步骤
三次握手
客户端
发送一个消息给到服务端
- 此时:
- 服务端知道了 客户端可以正常发送消息
- 服务端知道了 服务端可以正常接受消息
- 此时:
服务端
回给客户端
一个消息- 此时:
- 服务端知道了 客户端可以正常发送消息
- 服务端知道了 服务端可以正常接受消息
- 客户端知道了 客户端可以正常发送消息
- 客户端知道了 客户端可以正常接受消息
- 客户端知道了 服务端可以正常接受消息
- 客户端知道了 服务端可以正常发送消息
- 此时:
客户端
再回给服务端
一个消息- 此时:
- 服务端知道了 客户端可以正常发送消息
- 服务端知道了 服务端可以正常接受消息
- 客户端知道了 客户端可以正常发送消息
- 客户端知道了 客户端可以正常接受消息
- 客户端知道了 服务端可以正常接受消息
- 客户端知道了 服务端可以正常发送消息
- 服务端知道了 服务端可以正常发送消息
- 服务端知道了 客户端可以正常接受消息
- 简单来说:客户端自己收发共两次,在验证自己是否能收发共2次 + 服务端也是一样的 => 共8次
- 此时:
- 至此,依照
TCP/IP 协议
的建立链接
就建立好了,双方都知道双方可以正常收发消息,确保可以正常的进行数据交互了,就可以进入到第二步:通讯
4、发送请求—前端的处理阶段
- 建立完链接以后就是发送请求的过程
- 每一个请求都要让所有信息包含请求
- 每一个请求都会有一个
请求报文
- 在
请求报文
中会包含:我们所有的请求信息(也就是:我们要和服务端说的"话"都在里面)- 注意 :
- 浏览器发起请求是有固定格式的,虽然写的时候好像没有什么固定格式,但是浏览器发请求是需要按照协议的规范去发送,而ajax的使用工具里已经在内部封装好了按照协议规范去发送,而我们是应用层的使用者,也就是工具被封装好了,根据工具的使用条件去使用即可
- 所有的请求发送,不管是xhr、fetch、axios这些ajax请求工具发起的请求格式都会被浏览器格式化成 请求报文这种类型
- 注意 :
请求报文
中会包含几个东西:- 请求行
- 请求头(请求头都是键值对的形式出现的)
- 请求空行(请求头和请求主体之间要留一个空白行)
- 请求体(本次请求携带的数据)
- 完整的请求报文示例——
post
POST /user HTTP/1.1 # 请求行
Host: www.user.com
Content-Type: application/x-www-form-urlencoded
accept: application/json
User-agent: Mozilla/5.0. # 以上是首部
#(此处必须有一空行) # 空行分割header和请求内容
name=world # 请求体
- 完整的请求报文示例——
get
GET /user HTTP/1.1 # 请求行
Host: www.user.com
Content-Type: application/x-www-form-urlencoded
accept: application/json
User-agent: Mozilla/5.0. # 以上是首部
#(此处必须有一空行) # 空行分割header和请求内容
5、接受一个响应
客户端
的请求发送到服务端
以后,服务端
进行对应的处理- 会给我们返回一个
响应
,每一个响应
都会有一个响应报文
- 在
响应报文
中会包含我们所有的响应信息
(也就是:服务端
在接受到客户端
请求以后,给我们的回信) - 我们的
响应报文
中会包含几个信息:- 状态行
- 响应头
- 响应体
6、断开于服务端的链接
- 建立链接是基于
TCP/IP协议
的三次握手
- 断开链接是基于
TCP/IP协议
的四次挥手
:客户端
发送一个"我要断开"
的消息给服务端
服务端
接受到以后,发送消息告诉客户端
:我已经进入关闭等待状态服务端
再次发送一个消息告诉客户端
:这是我的最后一次发消息给你,当我再接受到消息的时候就会关闭客户端
接受到服务端
的消息以后,告诉服务器
:我已经关闭,这个是给你的最后一条消息
7、完成一个 HTTP请求具体流程
- 一个
HTTP请求
必须要包含的四个步骤
:- 建立链接
- 发送请求
- 接受响应
- 断开链接
- 在一个
HTTP请求
中,请求的部分有请求报文
,接受响应的部分有响应报文
请求报文
包含- 请求行
- 请求头
- 请求空行
- 请求体
响应报文
包含- 状态行
- 响应头
- 响应体
这篇关于HTTP的通讯流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!