文件传输服务是网络互联环境所必需的一种服务,当前网络中文件传输最主要的传输方式是使用ftp协议。
ftp,全称file transfer protocol,中文名为文件传输协议,它可以在网络中传输电子文档、图片、声音、影视、程序及程序等多种类型的文件。如果用户需要将文件从自己的计算机上发送到另一台计算机上,可使用ftp上传(upload)或(put)操作,而更多种的情况是用户使用ftp下载(download)或获取(get)操作从ftp服务器上下载文件。
一个完整的ftp文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。
1) 控制连接
客户端希望与ftp服务器建立上传下载的数据传输时,它首先向服务器的tcp 21端口发起一个建立连接的请求,ftp服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为ftp控制连接。
2) 数据连接
ftp控制连接建立之后,即可开始传输文件,传输文件的连接称为ftp数据连接。ftp数据连接就是ftp传输数据的过程,它有两种传输模式:主动传输模式(port)和被动传输模式(passive,简称pasv)。主动传输模式下,ftp服务器使用20端口与客户端的暂时端口进行连接,并传输数据,客户端只是处于接收状态。被动传输模式下,ftp服务器打开一个暂态端口等待客户端对其进行连接,并传输数据,服务器并不参与数据的主动传输,只是被动接受。
对ftp传输进行分析,首先需要知道的是这个ftp传输使用的是主动模式还是被动模式,因为这两种模式的实现方法不同,两种模式下的分析存在较大的差异,下面分别对两种模式下的ftp传输进行分析。
1) 主动传输模式
我们使用科来网络分析系统捕获并分析一个主动模式下的ftp数据传输。客户端主机名为“wangym”,ftp服务器地址是192.168.2.100,客户端上使用的ftp客户端软件为securefx 2.1.4,传输模式采用主动(port)模式。
在客户端主机上打开科来网络分析系统。为避免数据干扰,设定一个过滤器,只捕获本机的数据通讯。在ftp客户端软件securefx 2.1.4上,建立一个ftp会话连接到ftp服务器192.168.2.100,并上传一个名为t1.cap的文件到服务器,从服务器上下载一个名为readme.txt的文件到客户端。完成操作后停止科来网络分析系统的捕获。
图1所示为科来网络分析系统对上述操作进行捕获后的连接视图。
图1 ftp主动传输模式下的连接及数据流重组信息
从图1中可知,上述的操作在客户端和服务器之间建立了七个连接,其中第一个为ftp控制连接,其余六个为ftp数据连接。详细查看ftp控制连接对应的数据流重组信息,我们可以知道上述操作的原始步骤(即ftp主动传输模式下的步骤)如下:
图1中共有七个连接,其中第一个是ftp控制连接,客户端使用暂时端口与ftp服务器的21端口通讯。其余六个是ftp数据连接,客户端使用暂时端口与ftp服务器的20端口通讯,其作用分别是:第二个list命令列目录、第三个port命令请求传输文件、第四个stor上传文件t1.cap、第五个port命令请求传输文件、第六个retr命令下载文件readme.txt、第七个关闭连接。
(注意:客户端在ftp控制连接上发送的不同命令,将打开和关闭另外的ftp数据连接。上传下载的每一个文件,都分别打开一个ftp数据连接来完成,当所有数据连接完成并关闭后,控制连接才会按照上面的方法进行关闭。)
图2所示的是在进行主动模式的ftp数据传输后,科来网络分析系统的日志视图记录下的ftp传输日志信息。从中可以知道,当前ftp数据传输操作的客户端、ftp服务器端、使用的账号、操作的类型(上传或下载)、传输的文件及路径、传输模式(主动或被动)等信息。要查看日志的所有信息,请在图2所示视图的列头(序号、客户端ip……)中,单击鼠标右键,在弹出的快捷菜单中,单击“more …”,在弹出的“列表选项”对话框中,选中所有的项,单击确定保存即可。
图2 ftp主动传输模式下的日志信息
2) 被动传输模式
我们使用科来网络分析系统捕获并分析一个被动模式下的ftp数据传输。客户端主机名为“wangym”,ftp服务器地址是192.168.2.100,客户端上使用的ftp客户端软件为securefx 2.1.4,传输模式采用被动(passive)模式。
在客户端主机上打开科来网络分析系统。为避免数据干扰,设定一个过滤器,只捕获本机的数据通讯。在ftp客户端软件securefx 2.1.4上,建立一个ftp会话连接到ftp服务器192.168.2.100,并上传一个名为t1.cap的文件到服务器,从服务器上下载一个名为readme.txt的文件到客户端。完成操作后停止科来网络分析系统的捕获。
图3所示为科来网络分析系统对上述操作进行捕获后的连接视图。
图3 ftp被动传输模式下的连接及数据流重组信息
从图3中可知,上述的操作在客户端和服务器之间建立了七个连接,其中第一个为ftp控制连接,其余六个为tcp连接。详细查看ftp控制连接对应的数据流重组信息,我们可以知道,上述操作的原始操作步骤(即ftp被动模式下的操作步骤)如下:
图3中共有七个连接,其中第一个是ftp控制连接,客户端使用暂时端口与ftp服务器的21端口通讯。其余六个是ftp数据连接,客户端使用暂时端口与ftp服务器暂时端口通讯,其作用分别是:第二个list命令列目录、第三个pasv命令请求传输文件、第四个stor上传文件t1.cap、第五个pasv命令请求传输文件、第六个retr命令下载文件readme.txt、第七个关闭连接。
(注意:客户端在ftp控制连接上发送的不同命令,将打开和关闭另外的ftp数据连接。上传下载的每一个文件,都分别打开一个ftp数据连接来完成,当所有数据连接完成并关闭后,控制连接才会按照上面的方法进行关闭。)
注意图1和图3的比较,图1为主动传输模式,图3为被动传输模式,图1中连接视图列表里的第2到第7个连接的协议显示的是ftp data,而图3中,显示的是tcp,原因是ftp在使用被动模式进行数据传输时,其数据连接的端口是不固定的,ftp服务器并不使用主动模式下的20端口进行通讯,而在连接的两端都使用随机的暂时端口,因为暂时端口为随机的,所以就显示为tcp连接。
图4所示的是在进行被动模式的ftp数据传输后,科来网络分析系统的日志视图记录下的ftp传输日志信息。从中可以知道,当前ftp数据传输操作的客户端、ftp服务器端、使用的账号、操作的类型(上传或下载)、传输的文件及路径、传输模式(主动或被动)等信息。要查看日志的所有信息,请在图2所示视图的列头(序号、客户端ip……)中,单击鼠标右键,在弹出的快捷菜单中,单击“more …”,在弹出的“列表选项”对话框中,选中所有的项,单击确定保存即可。
图4 ftp被动传输模式下的日志信息
从上面的分析及截图中我们可以知道,ftp传输过程中所有的操作都是通过在客户端发送命令完成的,ftp常见的命令如表1所示。
命令 | 描述 |
user | 为用户验证提供用户名 |
pass | 为用户验证提供密码 |
pwd | 输出ftp服务器的当前工作目录 |
type | 设置传输的文件类型 |
syst | 获取ftp服务器的操作系统 |
list | 获取ftp服务器上当前目录的文件列表 |
port | 指定使用主动模式进行数据传输 |
pasv | 指定使用被动模式进行数据传输 |
help | 从ftp服务器上获取帮助文件 |
stor | 从客户端上传指定的文件到ftp服务器 |
retr | 从ftp服务器下载指定的文件到客户端 |
dele | 删除ftp服务器上指定的文件 |
mkd | 在ftp服务器上新建目录 |
rmd | 删除ftp服务器上的指定目录 |
quit | 退出关闭ftp连接 |
(表1 ftp常见命令)
从上面的分析及截图中我们可以知道,对客户端发出的所有命令,ftp服务器都会对其做出应答,ftp常见的应答代码如表2所示。
应答代码 | 描述 |
125 | 打开数据连接,且此连接可用于数据传输 |
200 | 命令被成功执行 |
211 | ftp服务器忙 |
212 | ftp服务器返回当前的目录状态给客户端 |
213 | ftp服务器返回当前的文件状态给客户端 |
214 | ftp服务器返回用户请求的帮助信息 |
226 | ftp服务器返回文件传输完成的消息给客户端 |
331 | ftp服务器返回用户名正确,需要密码的消息给客户端 |
425 | ftp服务器返回不能打开数据连接的消息给客户端 |
452 | ftp服务器返回写文件错的消息给客户端,可能是空间不足 |
500 | ftp服务器返回客户端命令不能识别的消息给客户端 |
501 | ftp服务器返回客户端命令的参数不能识别的消息给客户端 |
502 | ftp服务器返回未实现的模式类型的消息给客户端 |
(表2 ftp常见应答代码)
以上简单介绍了ftp协议,并使用科来网络分析分析系统跟踪分析了主动模式和被动模式下的ftp数据传输。据此,用户在遇到ftp传输的故障时,即可结合上面的分析,使用网络检测分析软件(这里是科来网络分析系统)对ftp数据传输进行跟踪分析,以完成对此类故障的快速排查。