HTTP协议的构成你懂吗?

Posted 凡猫软件测试

tags:

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




01

「HTTP 协议介绍」


1.1.1 什么是HTTP协议


协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。


超文本传输协议(HyperText Transfer Protocol, HTTP) 是互联网上应用最广泛的一种网络协议,它允许将超文本标记语言(html) 文档从Web服务器传送到客户端的浏览器。


目前我们使用的 HTTP 协议是HTTP/1. 1版本。


1.1.2 如何学习HTTP协议


协议是很抽象的东西,想要学好HTTP 协议,必须先了解HTTP协议的基本知识;然后找一个抓包软件实实在在地看到数据包的内容,并且看到数据包是如何在浏览器和 Web

服务器中进行交互的。这才是学习HTTP的正确方法。


Fiddler 就是我们需要的抓包工具。你对 HTTP 协议越了解,你就能越掌握Fiddler 的使用方法。你越使用Fiddler, 它就越能帮助你了解HTTP 协议。HTTP 协议和 Fiddler是相辅相成的,应该一起学习。


我们通过Fiddler 抓包的方式来学习HTTP协议。


1.1.3 HTTP协议的工作原理



实际上,我们输入URL后,浏览器就给Web服务器发送了一个HTTP请求(HTTPReqest) .Web 服务器接到 HTTP 请求后进行处理,生成相应的HTTP响应(HTT Response) 然后发送给浏览器。浏览器解析HTTP 响应中的 HIML, 这样我们就看到了网页,该过程如图1-1所示。

▲图1-1 HTTP 协议工作原理


浏览器客户端和 Web 服务器之间是通过HTTP 协议来交流的。我们每天都会用浏览器浏览各种网站。目前主流的 Web 浏览器有微软的 Internet Explorer、Firefox 和 Google的Chrome.


Web 浏览器会给 Web 服务器发送一条 HTTP 请求,服务器会把 Web 对象发送给浏览器,浏览器解析Web 对象,这些对象就显示在屏幕上了。


通过上面的介绍我们已经了解了HTTP协议的工作原理。那么HTTP请求和HTTP响应的数据包(报文)具体有哪些内容呢?协议是抽象的东西,是看不到的。下面我们使用

Fiddler 来抓包查看里面的内容。


就好比如果你想学习TCP/IP 协议,你可以使用 Wireshark 来抓包学习里面的内容。


02

「Fiddler的介绍」


Fiddler是世界上最强大最好用的 Web 调试工具,可以称得上是“神器”。其用途非常广泛,能记录所有客户端和服务器的 HTTP和 HTTPS 请求,允许你监视、设置断点,甚至修改输入输出数据。


Fiddler 包含了一个强大的基于事件脚本的子系统,并且能使用.NET语言进行扩展。


无论对开发人员或者测试人员来说,Fiddler 都是非常有用的工具。


Fiddler是用C#开发的,作者是 Eric Lawrence, 是个大师级的人物,曾经在微软总部西雅图工作。


1.2.1 Fiddler的下载和安装



Fiddler 是用 C#开发的,主要在Windows 系统上运行。苹果 Mac 系统和 Linux上有Beta版本可以运行,作者还在开发。


Fiddler 有2个版本,Fiddler2 和Fiddler4, 两者功能相同。建议你使用 Fiddler4。


Fiddler4是基于.NET Framework 4. 0的。Win7和Win10系统一般都已经安装好了.NET Framework 4. 0, 所以在Fiddler的下载页面会提供Fiddler4的下载。


Fiddler2 是基于.NET Framework 2. 0的,是为了照顾一些老的 Windows 系统用户而开发的,会逐渐被淘汰。


Fiddler 一定要在官方网站下载,不建议在别的地方下载。目前官方网站只提供了英文版的Fiddler。


1.2.2 Fiddler的基本界面


图1-2是Fiddler的基本界面,接下来简单介绍一下各个区域的作用,以便大家更好地掌握Fiddler 的用法。


Fiddler基本界面包括如下区域。

1.主菜单栏:菜单中几乎可以启动所有的 Fiddler 功能,后续章节会对其进行讲解。

2.工具栏:提供了很多常见的命令。

3.Web Sessions 列表(会话列表):显示捕捉到的每个 Session 的简短信息。平常都需要在这里选择一个或者多个Session后再进行操作。

4.功能面板:这里有很多选项卡,提供了很多功能。我们常用的是 Inspectors选项卡。

5.QuickExec: 命令行工具,可以输入简单的命令,例如输入cls 可以清空 Web Sessions。

HTTP协议的构成你懂吗?

▲图1-2 FIddler的基本界面


6.状态栏:上面显示了Fiddler的一些配置信息。


1.2.5 Fiddler捕获HTTP的数据包

1.启动 Fiddler, 打开任何一个浏览器,输入http://fanmao.mysxl.cn/。

2.如图1-5所示,回到 Fiddler界面,在Session 列表中,会看到Fiddler 已经捕获到了很多 Session.可以选择任何一个Session, 然后选择Inspectors选项卡,就可以查看详细内容。

到这里,我们已经学会怎么使用 Fiddler 来抓HTTP协议的数据包了。


HTTP协议的构成你懂吗?

▲图1-5 查看HTTP请求和HTTP响应的内容


1.2.6 Fiddler设置开始/停止捕获


我们把捕获HTTP 数据包的过程简称为抓包。在Fiddler 的使用过程中,当我们已经抓到自己想要的数据包后,可以停止抓包,以避免抓到一些不需要的数据包。接下来介绍两种设置方法。


方法一:如图1-6所示,在Fiddler中单击 File-> Capture Traffic (快捷键是F12) 来开始抓包或者停止抓包。


HTTP协议的构成你懂吗?

▲图1-6 Capture Traffic


方法二:如图1-7所示,单击Fiddler 左下角的“Capturing”按钮来开始抓包或者停止抓包。


HTTP协议的构成你懂吗?

▲图1-7“Capturing”按钮


03

「HTTP 协议报文的结构」


浏览器发送给Web 服务器的 HTTP 请求报文内容如图1-8所示。

HTTP协议的构成你懂吗?

▲图1-8 HTTP请求报文的过程


HTTP 请求报文的详细内容如图1-9所示。

HTTP协议的构成你懂吗?

▲图1-9 HTTP 请求报文的详细内容


HTTP 请求报文分为 3 部分:第一部分叫起始行(Request line) , 第二部分叫首部(Request Header) , 第三部分叫主体(Body) .


第一行中的 Method 表示请求方法,比如“POST”或者“GET”, 现在使用的 HTTP 协议版本是HTTP/1. 1.


第二部分是首部(Header) , 后面会详细介绍这些首部的用法。


第三部分是主体(Body) .


特别要注意,Header首部和Body (主体)之间有一个空行。


1.3.2 HTTP 响应报文的结构


Web 服务器发送给浏览器的HTTP 响应报文内容如图1-10所示。

HTTP协议的构成你懂吗?

▲图1-10 HTTP响应报文的过程


HTTP响应报文的详细内容如图 1-11所示。

▲图1-11 HTTP 响应报文的详细内容


Response 消息的结构和Request 消息的结构基本一样,同样也分为3部分:第一部分叫响应行(Response Line) , 第二部分叫响应首部(Response Header) , 第三部分是主体(Body) .


第一部分是起始行,有状态码和状态码消息,后面会详细介绍。


第二部分是首部(Header) , 后面会详细介绍这些首部的用法。


第三部分是主体(Body) .


特别要注意,Header首部和Body (主体)之间有一个空行。



往期精彩文章


以上是关于HTTP协议的构成你懂吗?的主要内容,如果未能解决你的问题,请参考以下文章

http协议入门请求和响应报文的构成

http协议请求和响应报文的构成

三http协议—请求和响应报文的构成

HTTP协议

http协议请求和响应报文的构成

图解HTTP—— HTTP协议