——————————————————————————————————————————————————————————————————————
一、基本概念
HTTP(HyperText Transfer Protocol,超文本传输协议)是一种无状态的应用层协议,基于传输层的TCP协议实现的(HTTP3是个特例基于UDP协议实现),目前主流版本依旧是1.1和2.0版本。
超文本:文本指的是文字通常由二进制编码而成、而超文本自然是比文本更高级一点,可以传输图片、表情等等。
传输协议:简单来说就是二者进行通信过程中共同遵守的规则、只有遵守这个规则双方才能正常传输信息。
二、工作流程
工作流程:客户端发送请求 -> 服务器接收并解析请求 -> 服务器返回响应
🌰:当我们在浏览器输入一个网址时,浏览器就会给服务器发送一个HTTP请求,服务器接收到请求并进行解析,将解析后内容以HTTP响应的格式返回给客户端。
每个请求都是独立的,服务器不会自动保存请求信息(可以利用cookie和session进行保存),这就是为什么说HTTP是一种无状态的应用层协议。
三、请求和响应
我们知道了HTTP的工作原理,那么请求和响应到底是什么呢?我们可以通过抓包工具(Filder\proxyman)来看看具体内容
1.抓包工具的原理
🌰:在旧社会时期朋友之间距离很远,只能通过书信交流写好书信交给快递员,快递员将书信打包成一个包裹,经过长途跋涉交到对方手里。而如今也一样之不过将人力运输转变成网络运输,也需要将信息打包成一个包裹📦进行传递。
现实生活中快递员如果想知道📦里面有什么,只需要拿到📦后打开看看就知道了,但这么做很容易挨揍。
抓包工具原理与其不相径庭,它相当于一个中转站,客户端发出请求交给代理 -> 代理在将请求发送给服务器 -> 服务器解析完后将响应发给代理 -> 代理发送给客户端,因此代理对📦里的内容了如指掌。抓包工具充当的就是代理这个角色。
2.HTTP请求
HTTP请求主要分为三个部分:首行、请求报头、请求正文
首行:请求方法(method)、网址(URL)、HTTP版本号三者组成
请求报头(header):请求的参数以key:value键值对形式储存,遇到空行则表示header结束
请求正文:客户端发给服务器的内容,空行后的内容都为body
3.HTTP响应
HTTP响应同样分为三个部分:首行、状态码、状态码解释
首行:版本号、响应状态码、状态码解释
响应报头(header):响应的属性,同样以key:vualue形式组成,空行表示heade结束
响应正文:服务器发给客户端的内容,空行后的内容都为body
针对HTTP请求/响应内容本章只做简单概括,详细内容请参考:HTTP请求和响应详细解析