Wireshark数据抓包分析之HTTP协议

1. 什么是HTTP

HTTP(HyperText Transfer Protocol,超文本传输协议)是Web系统最核心的内容,它是Web服务器和客户端直接进行数据传输的规则。Web服务器就是平时所说的网站,是信息内容的发布者。最常见的客户端就是浏览器,是信息内容的接受者。

HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个应用层协议,有请求和响应构成,是一个标准的客户端服务器模型。

2. HTTP具有的特点

2.1 两个支持

支持客户/服务器模式,支持基本认证和安全认证

2.2 简单快速

客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

2.3. 灵活

HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

2.4. HTTP 0.9和1.0使用非持续连接

限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。

2.5. 无状态

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

3. HTTP请求方法

HTTP/1.1协议中共定义了8种动作(方法)来表明Request-URI指定的资源的不同操作方式。

3.1 OPTIONS

返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送"*"的请求来测试服务器的功能性。

3.2 HEAD

向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

3.3 GET

向特定的资源发出请求。注意:get方法不应当被用于产生“副作用”的操作中。例如在Web APP中,其中一个原因是GET可能会被网站蜘蛛等随意访问。

3.4 POST

向指定资源提交数据进行处理请求(比如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。

3.5 PUT

向指定资源位置上传其最新内容

3.6 DELETE

请求服务器删除Request-URI所标识的资源

3.7 TRACE

回显服务器收到的请求,主要用于测试或者诊断。

3.8 CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

在大部分情况下,只会用到GET和HEAD方法,并且这些方法是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405,当服务器不认
识或不支持对应的请求方法的时候,应当返回状态行501。

4. HTTP工作流程

HTTP是一个无状态的协议。无状态是指客户端(Web浏览器)和服务器之间不需要建立持久的链接。这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应“*”(response),连接就被关闭了,在服务器端不保留连接的有关信息,HTTP遵循请求(Request)/ 应答(Response)模型。客户端(Web浏览器)向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。在该过程中要经过4个阶段,包括建立连接发送请求信息发送响应信息关闭连接,如下图所示:

在这里插入图片描述

下面详细介绍上图中描述的HTTP工作流程,如下:

  • 1.客户端通过TCP三次握手与服务器建立连接。

  • 2.TCP建立连接成功后,向服务器发送HTTP请求。

  • 3.服务器接收客户端的HTTP请求后,将返回应答,并向客户端发送数据

  • 4.客户端通过TCP四次断开,与服务器断开TCP连接。

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

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

5.1 非持久连接

非持久性连接就是每个TCP连接只用于传输一个请求消息和一个响应消息。用户每请求一次Web页面,就产生一个TCP连接。为了更详细的了解非持久连接,下面简单介绍一个例子。

假设在非持久连接的情况下服务器向客户端传送一个web页面。假设该页面由1个基本HTML文件和10个JPEG图像构成,而且所有这些对象都存放在同一台服务器主机中。
再假设该基本HTML文件的URL为http://www.example.cn/somepath/index.html,则传

<think>嗯,用户想了解如何使用Wireshark进行FTP协议数据抓包分析。首先,我需要回忆一下Wireshark的基本操作以及FTP协议的特点。FTP使用两个端口,控制连接是21号端口,数据传输是20号或者动态端口。但用户提到的问题中,引用[1]说到如果本地通过WiFi访问本地FTP,可能捕获不到数据包,因为数据不经过网卡。这时候需要另一台局域网内的PC作为客户端来访问,这样流量才会经过服务器的网卡,被Wireshark捕获到。所以第一步应该指导用户设置正确的网络环境,避免本地回环的问题。 接下来,用户需要启动Wireshark并选择正确的网卡。通常,如果是服务器,应该选择正在监听的网卡,比如以太网或者无线网卡。然后开始抓包,这时候可能会有很多无关数据,所以需要设置过滤器。根据引用[3],可以用ftp或tcp.port==21来过滤控制连接的数据包。此外,用户可能还需要捕获数据连接,但数据连接的端口可能不固定,特别是被动模式下,所以可能需要更复杂的过滤条件,比如tcp.port==20或者追踪FTP控制连接中的端口协商。 然后分析捕获到的数据包。FTP的控制命令如USER、PASS、RETR、STOR等可以在控制连接中看到。需要提醒用户注意敏感信息,比如密码是明文传输的,这在引用[2]中也有提到。另外,数据连接的建立过程可能需要结合控制连接中的PORT或PASV命令来解析。 用户可能遇到的问题包括无法捕获数据包,这时候需要检查网络环境,确保流量经过被监控的网卡。另外,过滤器是否正确设置,比如是否使用了ftp或正确的端口号。还有,FTP被动模式下的数据传输端口可能动态分配,这时候可能需要使用追踪TCP流的功能,或者结合控制连接中的信息来过滤数据包。 最后,生成相关问题时要考虑用户可能进一步想了解的内容,比如为什么捕获不到包,如何优化过滤表达式,FTP的安全性问题,以及被动模式和主动模式的区别。这些都能帮助用户深入理解FTP协议分析方法。</think>### 使用Wireshark进行FTP协议数据抓包分析的方法 #### 一、环境准备 1. **网络拓扑要求** - 避免本地回环问题:若本机同时作为FTP客户端和服务端,数据可能不经过网卡,导致Wireshark无法捕获[^1]。 - 建议使用两台设备:一台作为FTP服务器,另一台作为客户端,通过局域网通信[^1]。 #### 二、捕获FTP数据包 1. **启动Wireshark并选择网卡** - 打开Wireshark,选择与FTP服务器绑定的网卡(如无线网卡或以太网卡)。 - 点击“开始捕获”按钮(鲨鱼鳍图标)。 2. **设置过滤器** - 控制连接过滤:在过滤栏输入 `ftp` 或 `tcp.port==21` 以捕获FTP控制通道(默认端口21)[^3]。 - 数据连接过滤(可选):对于主动模式可过滤 `tcp.port==20`,被动模式需通过动态端口追踪。 #### 三、触发FTP通信 1. **客户端操作** - 使用命令行工具(如Windows的`ftp`命令或Linux的`ftp`/`lftp`)连接服务器。 - 执行登录、文件上传/下载等操作,例如: ```bash ftp 192.168.1.100 user anonymous pass example@email.com get file.txt ``` #### 四、数据分析步骤 1. **控制连接分析** - 定位`USER`和`PASS`命令:查看明文传输的账号密码[^2]。 - 观察响应代码:如`230`(登录成功)、`150`(文件传输准备就绪)。 - 分析传输模式:`PORT`(主动模式)或`PASV`(被动模式)指令。 2. **数据连接分析** - 在被动模式下,通过`227 Entering Passive Mode`响应解析动态端口。 - 使用过滤器 `tcp.port==<动态端口>` 定位实际数据传输包。 #### 五、关键协议特性验证 1. **明文传输验证** - 右键任意FTP控制包 → 选择"Follow → TCP Stream",可查看完整会话明文。 2. **文件传输验证** - 在数据包中搜索`RETR`(下载)或`STOR`(上传)指令,关联对应的数据流。 ```plaintext # 示例捕获结果片段 Frame 15: FTP Request: USER anonymous Frame 16: FTP Response: 331 Password required Frame 18: FTP Request: PASS test@example.com Frame 19: FTP Response: 230 Login successful Frame 23: FTP Request: PASV Frame 24: FTP Response: 227 Entering Passive Mode (192,168,1,100,123,45) Frame 27: TCP 数据传输端口 123*256+45=31533 ``` #### 六、常见问题解决 - **捕获不到数据包**:检查网卡选择是否正确,确认客户端通过目标网卡访问服务器。 - **过滤失效**:尝试使用`tcp contains "FTP"`作为备用过滤条件。 - **被动模式端口追踪**:通过`Edit → Find Packet`搜索`227 Entering Passive Mode`快速定位动态端口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值