目录
1. HTTP协议
1.1 HTTP简介
1. HTTP协议即“超文本传输协议”,即不止可以传输文本,还可以传输图片、音频、视频等二进制数据,是一个应用层协议;
2. HTTP已经更新到HTTP/3.0,但目前大规模使用的版本是HTTP/1.1;
3. 最常见的使用HTTP协议的场景有:
(1)网站网页与后台服务器的交互;
(2)手机APP与后台服务器的交互;
4. 应用层协议需要基于传输层协议向上层提供服务,HTTP是基于TCP协议实现的。
5. HTTP协议是一种“一问一答”结构模型的协议。
6. HTTP报文与之前的TCP/UDP报文不同,HTTP的报文分为请求和响应两种格式。
注:1. 常见的协议结构模型有:
(1)一问一答:访问网站;
(2)多问一答:上传文件;
(3)一问多答:下载文件;
(4)多问多答:串流,远程桌面;
1.2 Fiddler
Fiddler是当今广泛使用的HTTP抓包工具,具体下载以及简单使用见下文,此处不再赘述:
【JavaEE】_Fiddler抓包HTTP请求与响应-CSDN博客
2. HTTP请求
2.1 首行
HTTP请求的第一行有三个部分信息,分别使用空格进行分隔:
1. GET:HTTP请求的“方法”(method),表示请求的目的;
2. URL:即唯一资源定位符,用于描述一个资源在网络上的位置:
3. 版本号:HTTP/1.1目前是最主流的HTTP版本;
2.2 请求头(header)
1. 请求头是键值对结构的数据,每个键值对独占一行,格式为: 键: 值;
2. 此处的键与值都是标准规定的,后续详细介绍;
2.3 空行
空行用于作为请求头的结束标记;
2.4 正文(body)
有些HTTP请求有正文部分,有些HTTP请求没有正文部分;
3. HTTP响应
3.1 首行
HTTP响应首行有三个部分:
1. 版本号:HTTP/1.1
2. 状态码(200):描述了请求的结果;
3. 状态码描述(OK):进一步描述状态码的含义:
3.2 响应头(header)
同HTTP请求一样:
1. 请求头是键值对结构的数据,每个键值对独占一行,格式为: 键: 值;
2. 键与值内容由标准规定;
3.3 空行
空行是响应头的结束标志;
3.4 正文(body)
正文内容可能比较长,并且可能是多种样式,如HTML,CSS,JS,JSON,XML,图片、字体、视频、音频等等,可能会进行压缩;