一.定义
HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的应用层协议.
目前大规模使用的版本是:HTTP/1.1
二.使用场景
1.浏览器打开网站
2.手机APP访问服务器
三.HTTP报文格式
(一)分类
HTTP协议是一种"一问一答"的结构模型的协议,分成两个部分来看待 分别是请求和响应
请求和响应的协议格式是有差异的.
(二)Fiddler工具
如何查看到HTTP的请求和响应格式呢? 我们使用抓包工具Fiddler(专门针对HTTP的抓包工具)
抓包工具是啥呢? 就是把网卡上经过的数据获取到,显示出来让我们看到.
我们这里以力扣网页为例,实现抓包,可以看到一下请求和响应的数据信息:
(三)特性
我们抓包工具看到的数据信息用记事本打开,内容是字符串,并未乱码,可以看出HTTP协议是文本格式的协议. (TCP,UDP,IP都是二进制格式的协议)
注意:在响应中的数据,我们会到一些二进制格式数据,原因是数据进过压缩后传输的,体积变小,节省带宽.
四.请求
1.首行
1)GET,HTTP请求的方法,常用的有GET,POST.
2)https://leetcode.cn/ URL 唯一资源定位符,描述一个资源在网络上的位置
3)HTTP/1.1 版本号
2.请求头(header)
header是一个键值对结构的数据(有很多键值对)
每个键值对占一行
键和值之间使用 :空格 来分隔,其键值都是属于"标准规定",不能随便编写
3.空行
请求头的结束标记
4.正文(body)
有的HTTP请求有,有的没有
五.响应
1.首行
1) HTTP/1.1 版本号
2) 200 状态码,描述请求的结果
3) OK 状态码描述
2.响应头(header)
同请求头一样.....
header是一个键值对结构的数据(有很多键值对)
每个键值对占一行
键和值之间使用 :空格 来分隔,其键值都是属于"标准规定",不能随便编写
3.空行
响应头的结束标记
4.正文(body)
正文内容较长,可能是多种格式,
HTML,CSS,JS,JSON,XML,图片,字体,视频........