`

ftp协议(转)

阅读更多
ftp协议
FTP协议将使用两条单独的TCP连接,一条专用于发送FTP命令,称为控制连接,另一条则专用于传递数据, 称为数据连接。

1)控制连接

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



2)数据连接

FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。(这是大多数ftp客户端的传输模式)



PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

示例:

PORT模式:

图1暂缺


在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"。



PASV模式:

图2暂缺


在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。

----------------------------------------------------------------

主要用到的命令为:USER,PASS,TYPE,SIZE,REST,CWD,PWD,RETR,PASV,PORT,QUIT;

备注:对于主动与被动模式的差异,在于主动服务器管理比较方便,比较安全。能指定端口被外面连接,因此是常用的模式,而被动则是客户端比较好管理。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wqf363/archive/2007/02/10/1507150.aspx
分享到:
评论
1 楼 jake1036 2010-10-12  
我们现在的一个项目就是使用到了ftp协议传输文件,ftp服务器使用的是 开源服务器FileZilla,客户端使用的是apache的jar包。

相关推荐

Global site tag (gtag.js) - Google Analytics