分享
 
 
 

FTP文件传输应用分析

王朝other·作者佚名  2006-12-10
窄屏简体版  字體: |||超大  

应用分析 - FTP文件传输应用分析

一、 FTP简介

1. 文件传输

文件传输服务是网络互联环境所必需的一种服务,当前网络中文件传输最主要的传输方式是使用FTP协议。

FTP,全称File Transfer Protocol,中文名为文件传输协议,它可以在网络中传输电子文档、图片、声音、影视、程序及程序等多种类型的文件。如果用户需要将文件从自己的计算机上发送到另一台计算机上,可使用FTP上传(upload)或(put)操作,而更多种的情况是用户使用FTP下载(download)或获取(get)操作从FTP服务器上下载文件。

2. FTP工作原理

一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。

1) 控制连接

客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。

2) 数据连接

FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式:主动传输模式(PORT)和被动传输模式(PASSIVE,简称PASV)。主动传输模式下,FTP服务器使用20端口与客户端的暂时端口进行连接,并传输数据,客户端只是处于接收状态。被动传输模式下,FTP服务器打开一个暂态端口等待客户端对其进行连接,并传输数据,服务器并不参与数据的主动传输,只是被动接受。

二、 具体分析FTP传输

1. 分析FTP传输的具体流程

对FTP传输进行分析,首先需要知道的是这个FTP传输使用的是主动模式还是被动模式,因为这两种模式的实现方法不同,两种模式下的分析存在较大的差异,下面分别对两种模式下的FTP传输进行分析。

1) 主动传输模式

我们使用科来网络分析系统5.0捕获并分析一个主动模式下的FTP数据传输。客户端主机名为“wangym”,FTP服务器地址是192.168.2.100,客户端上使用的FTP客户端软件为SecureFX 2.1.4,传输模式采用主动(PORT)模式。

在客户端主机上打开科来网络分析系统5.0。为避免数据干扰,设定一个过滤器,只捕获本机的数据通讯。在FTP客户端软件SecureFX 2.1.4上,建立一个FTP会话连接到FTP服务器192.168.2.100,并上传一个名为t1.cap的文件到服务器,从服务器上下载一个名为Readme.txt的文件到客户端。完成操作后停止科来网络分析系统5.0的捕获。

图1所示为科来网络分析系统5.0对上述操作进行捕获后的连接视图。

(图1FTP主动传输模式下的连接及数据流重组信息)

从图1中可知,上述的操作在客户端和服务器之间建立了七个连接,其中第一个为FTP控制连接,其余六个为FTP数据连接。详细查看FTP控制连接对应的数据流重组信息,我们可以知道上述操作的原始步骤(即FTP主动传输模式下的步骤)如下:

A. 客户端(这里是wangym)使用暂时端口作为源端口(这里是1149)向FTP服务器(这里是192.168.2.100)的21端口发起TCP SYN的数据包,请求建立TCP连接;FTP服务器发送SYN/ACK(同步确认)包给客户端,源端口为21,目标端口为客户端上使用的暂时端口1149;客户端向FTP服务器发送一个ACK(确认)包,TCP三次握手成功建立;

B. FTP服务器需要对服务器的身份进行验证,要求输入用户名和密码,此处用户名和密码都是ftpuser;

C. 客户端使用SYST命令获取FTP服务器的操作系统,此处是Windows_NT version 5.0,即Windows 2000;

D. 客户端使用PWD命令获取当前目录,当前为“/”,即当前处于FTP服务器的根目录;

E. 客户端使用PORT命令向FTP服务器发送一个上传或下载文件的请求,这个命令包含自己的地址(这里是192.168.2.44)和一个暂时端口(这里是是4126,目标端口的计算方法是,4*256+126=1150),FTP服务器在收到请求后,以20作为源端口,1150作为目标端口与客户端建立TCP连接;

F. 客户端使用LIST命令获取FTP服务器当前目录下的文件列表;

G. 客户端再次使用PWD或CWD命令获取当前目录,当前为“/”;

H. 客户端再次使用PORT命令向FTP服务器发起上传或下载文件的请求,并同时给出暂时端口以用于建立TCP连接;

I. 客户端使用TYPE命令设置文件的传输类型,这里的传输类型为I。一般情况下传输类型有两种,默认为ASCII,简称A,另一种是二进制文件,简称I;

J. 客户端使用STOR命令上传文件到FTP服务器,这里上传的文件是t1.cap;

K. FTP服务器使用226应答码告诉客户端t1.cap文件的传输成功完成;

L. 客户端使用PWD或CWD命令再次获取当FTP服务器的当前目录,即刷新当前目录;

M. 客户端使用TYPE命令将FTP服务器的传输方式重新设置为默认的ASCII方式;

N. 客户端再次使用PORT命令向FTP服务器发起上传或下载文件的请求,并同时给出暂时端口以用于建立TCP连接;

O. 客户端使用RETR命令从FTP服务器下载文件到本地,这里下载的文件是Readme.txt;

P. FTP服务器使用226应答码告诉客户端Readme.txt的传输成功完成;

Q. 数据传输完成以后,客户端向FTP服务器发送一个TCP FIN的数据包通知FTP服务器结束连接。这个FIN数据包需要FTP服务器以TCP ACK数据包确认,同时FTP服务器发送一个TCP FIN的数据包给客户端,这个FIN数据包同样需要客户端以TCP ACK数据包确认,双方成功确认后,关闭FTP控制连接。

图1中共有七个连接,其中第一个是FTP控制连接,客户端使用暂时端口与FTP服务器的21端口通讯。其余六个是FTP数据连接,客户端使用暂时端口与FTP服务器的20端口通讯,其作用分别是:第二个LIST命令列目录、第三个PORT命令请求传输文件、第四个STOR上传文件t1.cap、第五个PORT命令请求传输文件、第六个RETR命令下载文件Readme.txt、第七个关闭连接。

(注意:客户端在FTP控制连接上发送的不同命令,将打开和关闭另外的FTP数据连接。上传下载的每一个文件,都分别打开一个FTP数据连接来完成,当所有数据连接完成并关闭后,控制连接才会按照上面的方法进行关闭。)

图2所示的是在进行主动模式的FTP数据传输后,科来网络分析系统5.0的日志视图记录下的FTP传输日志信息。从中可以知道,当前FTP数据传输操作的客户端、FTP服务器端、使用的账号、操作的类型(上传或下载)、传输的文件及路径、传输模式(主动或被动)等信息。要查看日志的所有信息,请在图2所示视图的列头(序号、客户端IP……)中,单击鼠标右键,在弹出的快捷菜单中,单击“More …”,在弹出的“列表选项”对话框中,选中所有的项,单击确定保存即可。

(图2FTP主动传输模式下的日志信息)

2) 被动传输模式

我们使用科来网络分析系统5.0捕获并分析一个被动模式下的FTP数据传输。客户端主机名为“wangym”,FTP服务器地址是192.168.2.100,客户端上使用的FTP客户端软件为SecureFX 2.1.4,传输模式采用被动(PASSIVE)模式。

在客户端主机上打开科来网络分析系统5.0。为避免数据干扰,设定一个过滤器,只捕获本机的数据通讯。在FTP客户端软件SecureFX 2.1.4上,建立一个FTP会话连接到FTP服务器192.168.2.100,并上传一个名为t1.cap的文件到服务器,从服务器上下载一个名为Readme.txt的文件到客户端。完成操作后停止科来网络分析系统5.0的捕获。

图3所示为科来网络分析系统5.0对上述操作进行捕获后的连接视图。

(图3FTP被动传输模式下的连接及数据流重组信息)

从图3中可知,上述的操作在客户端和服务器之间建立了七个连接,其中第一个为FTP控制连接,其余六个为TCP连接。详细查看FTP控制连接对应的数据流重组信息,我们可以知道,上述操作的原始操作步骤(即FTP被动模式下的操作步骤)如下:

A. 客户端(这里是wangym)使用暂时端口作为源端口(这里是1204)向FTP服务器(这里是192.168.2.100)的21端口发起TCP SYN的数据包,请求建立TCP连接;FTP服务器发送SYN ACK(同步确认)包给客户端,源端口为21,目标端口为客户端上使用的暂时端口1204;客户端向FTP服务器发送一个ACK(确认)包,TCP三次握手成功建立;

B. FTP服务器需要对服务器的身份进行验证,要求输入用户名和密码,此处用户名和密码都是ftpuser;

C. 客户端使用SYST命令获取FTP服务器的操作系统,此处是Windows_NT version 5.0,即Windows 2000;

D. 客户端使用PWD命令获取当前目录,当前为“/”,即当前处于FTP服务器的根目录;

E. 客户端使用PASV命令告诉FTP服务器,当前客户端使用的是被动传输模式;

F. FTP服务器对客户端的PASV命令进行响应,响应内容包括FTP服务器的地址和一个暂时端口,这里是192.168.2.100,437,用437计算出目标端口是4*256+37=1061;

G. 客户端使用LIST命令获取FTP服务器当前目录下的文件列表;

H. 客户端再次使用PWD或CWD命令获取当FTP服务器的当前目录,即刷新当前目录;

I. 客户端再次使用PASV命令向FTP服务器发起上传或下载文件的请求,FTP服务器接受请求,并返回地址和暂时端口以用于建立连接;

J. 客户端使用TYPE命令设置文件的传输类型,这里的传输类型为I;

K. 客户端使用STOR命令上传文件到FTP服务器,这里上传的文件是t1.cap;

L. FTP服务器使用226应答码告诉客户端t1.cap文件的传输成功完成;

M. 客户端使用PWD或CWD命令再次获取当FTP服务器的当前目录,即刷新当前目录;

N. 客户端使用TYPE命令将FTP服务器的传输方式重新设置为默认的ASCII方式;

O. 客户端再次使用PASV命令向FTP服务器发起上传或下载文件的请求,FTP服务器接受请求,并返回地址和暂时端口以用于建立连接,方法与第9步相同;

P. 客户端使用RETR命令从FTP服务器下载文件到本地,这里下载的文件是Readme.txt;

Q. FTP服务器使用226应答码告诉客户端Readme.txt文件的传输成功完成;

R. 数据传输完成以后,客户端向FTP服务器发送一个TCP FIN的数据包通知FTP服务器结束连接。这个FIN数据包需要FTP服务器以TCP ACK数据包确认,同时FTP服务器发送一个TCP FIN的数据包给客户端,这个FIN数据包同样需要客户端以TCP ACK数据包确认,双方成功确认后,关闭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数据传输后,科来网络分析系统5.0的日志视图记录下的FTP传输日志信息。从中可以知道,当前FTP数据传输操作的客户端、FTP服务器端、使用的账号、操作的类型(上传或下载)、传输的文件及路径、传输模式(主动或被动)等信息。要查看日志的所有信息,请在图2所示视图的列头(序号、客户端IP……)中,单击鼠标右键,在弹出的快捷菜单中,单击“More …”,在弹出的“列表选项”对话框中,选中所有的项,单击确定保存即可。

(图4FTP被动传输模式下的日志信息)

2. 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连接

(表1FTP常见命令)

3. 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服务器返回未实现的模式类型的消息给客户端

(表2FTP常见应答代码)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有