HTTP 协议的基本格式和 Fiddler 的用法

HTTP协议是什么

  • HTTP协议在TCP/IP五层(四层)网络协议模型中的应用层中出现,它是一个使用非常广泛的应用层协议
  • HTTP协议的可定制性非常强。在应用层协议中,经常是需要自定义协议的,这就得HTTP协议在应用层使用非常广泛
  • HTTP协议存在于任何网络之中。只要你在上网,你就会用到HTTP协议
  • HTTP是"一问一答"形式的协议,即一个请求一个响应。你请求什么它就响应什么

HTTP协议基本格式查看方法

要想查看HTTP协议的基本格式,我们要借助抓包工具(Fiddler等等),在此我用的是Fiddler,下文会介绍一些基本的用法。
Fiddler官方下载地址
安装OK如下图所示:
在这里插入图片描述
打开如图所示:
在这里插入图片描述
左侧显示的是对当前主机网络的抓包情况,它会随时刷新滚动的,因为电脑中有很多程序都会发送请求

注意: 首次使用需要勾选https。如下图点击Tools,点击options
进入options,点击HTTPS,并将所有选项勾选。在设置过程中它会弹出一个类似于安装证书的对话框,一定要点击yes,否则就要卸载重装
对于无法抓包问题:

  • 没有勾选https,这样就会导致抓出来的东西很少
  • Fiddler本质是一个代理,它可能会与电脑上的其它代理冲突,例如插件,梯子,加速器等出现冲突,无法进行抓包

在这里插入图片描述
在这里插入图片描述

那么这么多抓包情况,哪个才是自己想要看的包呢?
例如打开搜狗搜索,想查看此抓包情况。
在这里插入图片描述
最快的确认方法就是看颜色,黑色的响应为普通数据,蓝色的响应为html数据,而搜狗的响应就是蓝色的。再根据Host进行进一步确认。
在这里插入图片描述
找到后点击,右边我们只需要点击ROW,这样就可以看出请求和响应了,上面为请求下面为响应。

HTTP协议的请求与响应

请求

在这里插入图片描述
如图所示,当你点击之后就会将请求以文本文档的形式表示出来,更清楚的看到请求的内容。
在这里插入图片描述
上图就是一个完整的HTTP请求。

请求包括四部分:

  1. 首行(方法 URL 版本号)
  2. 请求头header
  3. 空行
  4. 正文(body),空行后面的内容,可有可无

请求首行

在这里插入图片描述

其中GET是HTTP中的方法,描述了这个请求想干啥GET是从服务器这里取一些东西。还有别的方法:
POST:向服务器提交一些东西
在这里插入图片描述
其中GET请求一般都没有正文即body,而POST请求一般都会有正文,将正文提交给服务器。例如登录,上传的时候。

在这里插入图片描述
URL:唯一资源定位符。用来描述网络上唯一的一个资源。例如:
在这里插入图片描述
其中在这里插入图片描述
表示协议方案(协议名),HTTP和HTTPS是非常相似的,HTTPS只是在HTTP的基础上进行了加密操作(具体如何实现的,见后文)
在这里插入图片描述
域名,表示服务器的地址(IP:端口号)。其后面还有端口号,一般就省略掉了,但是存在而不是没有,浏览器会在后面加上默认端口号,对于HTTP协议来说,默认端口号为80,对于HTTPS来说,默认端口号为443
在这里插入图片描述
带层次的结构路径,标识要访问的这个服务器资源是什么。
在这里插入图片描述
query string(查询字符串),是一些参数,键值对结构,用&分割键值对,用=分割键和值,这些参数是对请求资源进行进一步补充。例如:
http://小吃/臭豆腐?辣椒=多辣&香菜=要&酱汁=多汁

在这里插入图片描述
表示HTTP版本号

请求头header

在这里插入图片描述

键值对结构:每个键值对占一行,每个键和值用冒号空格来分开,键值对可以很多对,即好多行,结束时用空行作为结束标记

  • Host:描述该请求要访问哪个服务器,地址,端口号都可以写。注意:在URL中已经有了这个请求要访问的服务器地址/端口号,而此处再写的目的是当我们用代理(不是Fiddler)来访问这个服务器时,这里的URL就和Host不一致了。可以理解成URL代表当前目标,而Host代表最终目标(他们俩一般情况下是一致的)。
  • User-Agent(UA):描述了用户使用的客户端是什么样子的即操作系统版本,浏览器版本
  • Referer:描述了当前页面是从哪个页面跳转过来的。当你直接用URL搜索是不会有Referer这个属性的。
  • Conten-Type:描述body的数据格式。请求没有body就没有这个属性
  • Content-Length:描述body的长度(字节)。请求没有body就没有这个属性 在这里插入图片描述
    application/json:数据的格式(json格式) charset:数据字符集
  • Cookie:本质是浏览器在本地存储用户自定义数据的一种关键机制。键值对结构,键值对之间用分号隔开,键和值之间用等号隔开。其中的内容都是由程序员自定义的

响应

在这里插入图片描述
请求下面为响应,如上图,它是被压缩过的,只需要点击上面那行黄色背景即可变为字符串。
在这里插入图片描述

在这里插入图片描述
上图为一个完整HTTP响应。

响应包括四部分:

  1. 首行(版本号 状态码 状态码描述)
  2. 响应头header
  3. 空行
  4. 正文(body)

响应的首行和响应头header

  • 版本号:即HTTP版本号,与请求的是一样的
  • 状态码:数字表示,表示这次请求是成功还是失败以及失败的原因。
  • 状态码描述: 通过一个或一组单词来描述这个状态码
  • 响应头header里面的属性和请求头header里面的属性对应描述含义一致

对于状态码,状态码有很多,只需要记住常见的即可

  • 404 not found :表示要访问的资源不存在
  • 403 Forbidden:访问被拒绝,无权限访问
  • 500 Internet Server Error:服务器内部错误
  • 504 Gateway Timeout:服务器访问超时
  • 302 Move Temporarily:临时重定向(这次是,下次不一定)
  • 301 Moved Temporarily:永久重定向
  • 200 OK: 表示请求成功
    对于重定向:例如:要访问的服务器域名改变了,你这次访问这个服务器的旧域名它就会把你自动带到新的域名。
    状态码可以分成以下几大类:
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值