Wireshark数据抓包分析之HTTP协议

本文详细介绍了使用Wireshark分析HTTP协议的工作,包括HTTP的基本概念、请求方法、工作流程,以及非持久性连接与持久性连接的对比。通过实际的实验步骤,演示了如何配置HFS软件获取HTTP的GET和POST数据,以及如何分析HTTP数据包,深入理解HTTP请求报文和响应报文的格式,最后探讨了POST方法的数据包分析。

预备知识

1.什么是HTTP

HTTP(HyperText Transfer Protocol,超文本传输协议)是Web系统最核心的内容,它是Web服务器和客户端直接进行数据传输的规则。Web服务器就是平时所说的网站,是信息内容的发布者。最常见的客户端就是浏览器,是信息内容的接受者。
HTTP(HyperText Transfer Protocol,超文本传输协议)协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个应用层协议,有请求和响应构成,是一个标准的客户端服务器模型。
HTTP具有以下几个特点:
1.支持客户/服务器模式,支持基本认证和安全认证。
2.简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

2.HTTP请求方法

HTTP/1.1协议中共定义了8种动作(方法)来表明Request-URI指定的资源的不同操作方式。
(1)OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送“*”的请求来测试服务器的功能性。
(2)HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
(3)GET:向特定的资源发出请求。注意:get方法不应当被用于产生“副作用”的操作中。例如在Web APP中,其中一个原因是GET可能会被网站蜘蛛等随意访问。
(4)POST:向指定资源提交数据进行处理请求(比如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。
(5)PUT:向指定资源位置上传其最新内容。
(6)DELETE:请求服务器删除Request-URI所标识的资源。
(7)TRACE:回显服务器收到的请求,主要用于测试或者诊断。
(8)CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
在大部分情况下,只会用到GET和HEAD方法,并且这些方法是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405,当服务器不认识或不支持对应的请求方法的时候,应当返回状态行501。

3.HTTP工作流程

HTTP是一个无状态的协议。无状态是指客户端(Web浏览器)和服务器之间不需要建立持久的链接。这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应“*”(response),连接就被关闭了,在服务器端不保留连接的有关信息。HTTP遵循请求(Request)/应答(Response)模型。客户端(Web浏览器)向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。在该过程中要经过4个阶段,包括建立连接、发送请求信息、发送响应信息和关闭连接,如下图所示:
在这里插入图片描述
下面详细介绍上图中描述的HTTP工作流程,如下:
1.客户端通过TCP三次握手与服务器建立连接。
2.TCP建立连接成功后,向服务器发送HTTP请求。
3.服务器接收客户端的HTTP请求后,将返回应答,并向客户端发送数据。
4.客户端通过TCP四次断开,与服务器断开TCP连接。

4.持久性连接与非持久性连接

浏览器与web服务器建立TCP连接后,双方就可以通过发送请求信息和应答信息进行数据传输。在HTTP协议中,规定TCP链接既可以是持久的,也可以是非持久的。具体采用哪种链接方式,可以由通用头域中的Connection指定。在HTTP/1.0版本中,默认使用的是非持久性连接,在HTTP/1.1版本中,默认使用的是持久性连接。

4.1 非持久连接

非持久性连接就是每个TCP连接只用于传输一个请求消息和一个响应消息。用户每请求一次Web页面,就产生一个TCP连接。为了更详细的了解非持久连接,下面简单介绍一个例子。
假设在非持久连接的情况下服务器向客户端传送一个web页面。假设该贝面由1个基本HTML文件和10个JPEG图像构成,而且所有这些对象都存放在同一台服务器主机中。再假设该基本HTML文件的URL为http://www.example.cn/somepath/index.html,则传输步骤如下所示。
1.HTTP客户段首先与主机www.example.cn中的Web服务器建立TCP连接。Web服务器使用默认端口号80监听来自HTTP客户的连接建立请求。
2.HTTP客户段通过TCP连接向服务器发送—个HTTP请求消息。这个消息中包含路径名/somepath/index.html。
3.Web服务器通过TCP连接接收这个请求消息后,从服务器主机的内存或硬盘中取出对象/somepath/index.html,经由同一个套接字发出包含该对象的响应消息。
4.Web服务器告知本机的TCP协议栈关闭这个TCP连接。但是TCP协议栈要到客户端收到刚才这个应答消息之后,才会真正终止这个链接。
5.HTTP客户经由同一个套接字接收这个响应消息。TCP连接随后终止。
6.该消息标明所封装的对象是一个HTML文件。客户从中取出这个文件,加以分析后发现其中有10个JPEG对象的引用。
7.这时候客户端在重复步骤1~5,从服务器得到所引用的每一个JPEG对象。
上述步骤之所以称为使用非持久连接,原因是每次服务器发出一个对象后,相应的TCP连接就被关闭,也就是说每个连接都没有持续到可用于传送其他对象。每个TCP连接只用于传输一个请求消息和一个响应消息。就上述例子而言,用户每请求一次那个web页面,就产生一个TCP连接。
实际上,客户端还可以通过并行的TCP连接同时取得其中的某些JPEG对象。这样可以大大提高数据传输速度,缩短响应时间。目前的浏览器允许用户通过配置来控制并行连接的数目,大多浏览器默认可以打开5-10个并行的TCP连接,每个连接处理一个请求/应答事务。
根据以上例子的描述,可以发现非持久连接具有如下几个缺点。
首先,客户得为每个待请求的对象建立并维护一个新的连接。对于每个这样的连接,TCP得在客户端和服务器端分配TCP缓冲区,并维持TCP变量。对于有可能同时为来自数百个不同客户的请求提供服务的web服务器来说,这会严重增加其负担。其次,每个对象都有2个RTT(Round-Trip Time,往返时延)的响应延长。一个RTT用于建立TCP连接,另—个RTT用于请求和接收对象。最后,每个对象都要经过TCP缓启动,因为每个TCP连接都起始于缓启动阶段。不过并行TCP连接的使用能够部分减轻RTT延迟和缓启动延迟的影响。

4.2 持久连接

持久连接是指服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。整个Web页面(上例中为包含一个基本HTMLL文件和10个图像的页面)自不用说可以通过单个持久TCP连接发送:甚至存放在同一个服务器中的多个web页面也可以通过单个持久TCP连接发送。
通常,HTTP服务器在某个连接闲置一段特定时间后关闭它,而这段时间通常是可以配置的。持久连接分为不带流水线(without pipelining)和带流水线(with pipelining)两个版本。如果是不带流水线的版本,那么客户只在收到前一个请求的响应后才发出新的请求。这种情况下,web页面所引用的每个对象(上例中的10个图像)都经历1个RTT的延迟,用于请求和接收该对象。与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善,不过带流水线的持久连接还能进一步降低响应延迟。不带流水线版本的另一个缺点是,服务器送出一个对象后开始等待下一个请求,而这个新请求却不能马上到达。这段时间服务器资源便闲置了。
HTTP/1.1的默认模式使用带流水线的持久连接。这种情况下,HTTP客户每碰到一个引用就立即发出一个请求,因而HTTP客户可以一个接一个紧挨着发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。与非流水线模式相比,流水线模式的效率要高得多。

实验目的

1.熟悉并掌握Wireshark的基本操作。
2.加深对常用网络协议的理解,提高就业机会。
3.培养学生理论联系实践的研究兴趣。

实验环境

<think>好的,我现在需要帮助用户学习如何使用Wireshark进行ARP协议数据抓包分析。根据用户的问题,我需要整理一个结构清晰的教程,结合提供的引用内容,并确保正确应用格式要求,比如行内公式和独立公式的LaTeX格式,虽然这里可能用不上太多数学公式,但需要注意。 首先,我需要回忆Wireshark的基本操作步骤,包括如何设置过滤器抓取ARP包。然后,结合引用中的内容,比如使用Netsh和ARP命令绑定IP和MAC地址,这可能是在实验准备阶段需要的步骤。引用1提到了使用这两个命令操作ARP缓存表,所以可能需要包括这些步骤在教程中。 接下来,抓包过程部分需要详细说明如何启动Wireshark,选择正确的网卡,设置ARP过滤器。然后启动抓包并触发ARP请求,例如通过ping命令或者清除ARP缓存。引用2和3提到分析请求和响应包的结构,需要指出关键字段,如源/目标IP和MAC地址,以及操作类型(请求或回复)。 分析部分需要分解ARP请求和响应包的结构,如硬件类型、协议类型、操作码等。这里可以结合引用2中的例子,指出请求包的目标MAC为空,响应包则包含完整的MAC信息。此外,引用3提到实战案例的重要性,因此可能需要建议用户实际操作,观察不同情况下的数据包变化。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何过滤其他协议、ARP欺骗的原理及防范,以及Wireshark的其他应用场景。需要确保问题相关且引导深入学习。 检查格式要求,所有行内变量如操作码(1为请求,2为响应)需要用$...$,例如操作码为$1$或$2$。独立公式可能用不到,但如果有数学表达式,比如校验和的计算,可能需要单独成段。但ARP协议本身不涉及复杂数学,所以可能这部分可以忽略。确保中文回答,结构分步骤,引用标识放在参考内容末尾。 现在整理步骤:准备环境(包括绑定IP和MAC的命令)、抓包步骤、触发ARP请求分析请求和响应包、实战建议。每个部分结合引用内容,并在适当的位置添加引用标记,如使用Netsh命令的部分引用[^1],分析响应包的结构引用[^2],实战案例引用[^3]。 最后生成的相关问题需要围绕ARP协议分析、网络安全应用、Wireshark高级功能展开,帮助用户进一步学习。</think>### Wireshark ARP协议抓包分析教程 #### 一、实验准备 1. **绑定IP与MAC地址**(可选) 使用`netsh`命令绑定静态ARP条目,可观察特定通信行为[^1]: ```bash netsh interface ipv4 add neighbors "网络连接名称" IP地址 MAC地址 ``` 或使用`arp -s`命令: ```bash arp -s 192.168.1.100 00-11-22-33-44-55 ``` 2. **启动Wireshark** 安装后选择需要监控的网卡(如以太网/Wi-Fi适配器)。 --- #### 二、抓取ARP数据包 1. **设置捕获过滤器** 在过滤栏输入`arp`,仅捕获ARP协议数据包。 2. **触发ARP通信** - 清除本地ARP缓存以强制生成请求: ```bash arp -d * ``` - 执行`ping`未知IP地址(目标主机不在ARP缓存中)。 3. **停止捕获** 获得至少一个**ARP请求**(操作码$1$)和一个**ARP响应**(操作码$2$)后停止。 --- #### 三、分析数据包结构 ##### 1. ARP请求包(示例) - **关键字段**: - `Sender MAC/IP`:发送方地址 - `Target MAC`:全$0$(请求时未知) - `Opcode`:值为$1$表示请求 ```plaintext Address Resolution Protocol (request) Hardware type: Ethernet (1) Protocol type: IPv4 (0x0800) Hardware size: 6 Protocol size: 4 Opcode: request (1) Sender MAC: 00:11:22:33:44:55 Sender IP: 192.168.1.2 Target MAC: 00:00:00:00:00:00 Target IP: 192.168.1.100 ``` ##### 2. ARP响应包(示例) - **关键字段**: - `Target MAC/IP`:完整填充请求方信息 - `Opcode`:值为$2$表示响应 ```plaintext Address Resolution Protocol (reply) Opcode: reply (2) Sender MAC: aa:bb:cc:dd:ee:ff Sender IP: 192.168.1.100 Target MAC: 00:11:22:33:44:55 Target IP: 192.168.1.2 ``` --- #### 四、实战建议 1. **对比不同操作场景** - 绑定静态ARP前后抓包差异 - 跨子网通信时的代理ARP 2. **安全分析** 观察ARP欺骗攻击特征(如异常MAC地址重复声明)。 --- §§ 1. 如何通过Wireshark过滤特定IP的ARP通信? 2. ARP协议为何容易被用于网络欺骗?如何防御? 3. Wireshark如何解析其他二层协议(如ICMP、DNS)? : 引用[1]: Wireshark数据抓包分析之ARP协议 : 引用[2]: Wireshark抓包分析ARP协议(1) : 引用[3]: Wireshark抓包分析ARP协议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值