网络原理7认识HTTP

Posted 革凡成圣211

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络原理7认识HTTP相关的知识,希望对你有一定的参考价值。

目录

一、HTTP协议的位置

二、HTTP协议的特点&应用场景

三、HTTP协议的格式的查看

Fiddler下载与使用

​编辑 如何查看HTTP请求消息

​编辑 如何查看HTTP响应数据包

如何默认开启HTTPS的解析功能 

四、HTTP的请求数据包的格式含义

第一部分:请求行(首行)

      HTTP方法:

       URL 

       HTTP协议版本 

 第二部分:请求头(header)

第三部分:空行(请求头结束的标志)

 第四部分:请求正文(可选的)

五、HTTP响应数据包格式

第一部分:状态行

①HTTP版本号

②HTTP状态码

③对于状态码的描述

第二部分:响应头(header)

第三部分:空行

第四部分:响应正文(body)

一、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数据。

       这些数据,可以不存在。


以上是关于网络原理7认识HTTP的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络HTTP 协议详解

python | CHROME底层原理和HTTP协议

计算机网络(HTTP协议 与 HTTPS)

自顶向下理解网络协议(应用层_HTTP协议)

网络知识_详解HTTP和HTTPS

网络知识_详解HTTP和HTTPS