目录
一、HTTP协议的位置
在这一篇文章当中,我们提到了TCP-IP五层协议的构成。
初识网络:IP、端口、网络协议、TCP-IP五层模型_革凡成圣211的博客-CSDN博客TCP/IP五层协议详解https://blog.csdn.net/weixin_56738054/article/details/128666970?spm=1001.2014.3001.5502其中,HTTP协议是位于应用层的协议,也就是直接和用户打交道的。
HTTP/1和HTTP/2版本的传输层是基于TCP协议的。
HTTP/3版本的传输层是基于UDP协议的
但是,最新版本的HTTP/3版本,比较少使用。
二、HTTP协议的特点&应用场景
HTTP协议的可扩展性是非常强的,可以根据实际的需要,让程序员传输各种各样的自定义的数据信息,下面会具体介绍怎样传输的。
关于应用场景,可以说非常地广泛。
只要打开任何一个网站,都会使用到HTTP协议。
打开任意一个手机的APP,都大概率使用到HTTP协议。
三、HTTP协议的格式的查看
在应用层,数据的传输是以文本为单位进行传输的,也就意味着HTTP也是以文本为格式传输的。
Fiddler下载与使用
下面,需要使用一个抓包工具,专门抓HTTP或者HTTPS数据包的工具——Fiddler来监测加载。
下载地址为Fiddler官网:
Fiddler | Web Debugging Proxy and Troubleshooting Solutions (telerik.com)
下载完成之后,点击运行Fiddler,可以看到,左侧是一些具体的HTTP请求。
然后,点击某一个HTTP请求之后,可以看到发送的请求&响应:
其中,上方的代表的是请求,下方代表的是响应。
如何查看HTTP请求消息
下面,重点关注请求上面这一行的内容:
这一行的内容,就显示了HTTP的请求格式。
如果点击了Raw,那么看到的就是HTTP请求数据的本体。
为了方便,可以在记事本当中打开:
如何查看HTTP响应数据包
同理,在下面的响应这一栏当中,也点击Raw,就可以看到HTTP响应数据包。
为了方便查看,可以在记事本当中打开
但是,却发现了下面出现了乱码。
这个乱码,其实是压缩之后的结果。一个服务器,最贵的硬件资源,其实是网络带宽。
为了提高传输的效率,于是会经常被服务器给"压缩"返回了...这些就是压缩的结果
如何默认开启HTTPS的解析功能
点击tools->Options->HTTTPS
然后全部勾选。如果提示需要下载一个证书,那么就下载。
如果此时在响应这一栏看到了乱码:
那么,可以点击上面的那一行--"Click to decode"解码,就可以看到解码之后的数据:
四、HTTP的请求数据包的格式含义
HTTP的请求分为4个部分:
第一部分:请求行(首行)
首行又分为3个部分:
HTTP方法:
有get/post两种显示的方式,大致描述了这个请求的目的是什么。后面会详细介绍这两种方法的区别。
URL
描述了这个资源请求的地址。
HTTP协议版本
指的是当前HTTP的版本号是什么。上图的版本号就是1.1版本。也有可能是1.1/2.0等等...
第二部分:请求头(header)
请求头当中包含了很多行的数据,每一行都是一个键值对、键和值之间使用空格来隔开。
这里的键值对的数目是不固定的,后续会介绍几个常见的键值对。
第三部分:空行(请求头结束的标志)
第三部分和第四部分之间空了一行。
第四部分:请求正文(可选的)
这一部分是可有可无的。如果有的话,可以看到请求的正文部分。
这一部分的内容,很有可能是服务器返回的json格式的数据。
总览一下HTTP的样式~
五、HTTP响应数据包格式
第一部分:状态行
状态行包含了三个部分
①HTTP版本号
如上图,HTTP版本号就是HTTP/1.1。
②HTTP状态码
如上图,状态码就是200。
描述了这一个响应成功与否。
通过一个状态码,可以大致了解到:
如果响应成功,那么成功的原因是什么。
如果失败的话,失败的原因是什么。
③对于状态码的描述
如上图,状态码显示为OK。这是通过一个/一组简单的单词,来描述当前的状态码的含义。
第二部分:响应头(header)
响应头也是由多个键值对组成的。每一个键值对各占一行,每一个键值对之间使用空格来分割。
第三部分:空行
空行,就是响应头的结束标志,也就是响应头和正文之间空出来多一行。
第四部分:响应正文(body)
正文部分,其实响应的就是一些html的页面,或者js/css文件等等。或者一些从后端返回的json数据。
这些数据,可以不存在。