浅谈FTP协议的工作方式

4 人赞了文章

FTP概述:

FTP(File Transfer Protocol)文件传输协议,在TCP/IP协议族中属于应用层协议运行于TCP协议之上是一种可靠的传输协议,主要功能用于实现用户间文件分发共享,以及网路管理者在进行设备版本升级、日志下载和配置保存等业务操作时,均会使用到FTP功能。

搭建FTP站点:

FTP协议采用C/S结构,通常我们在实现FTP功能时需要在伺服器上配置IIS来实现FTP-Server端的配置,这种配置方式适合于比较了解操作系统的用户去操作;对于大部分非专业用户来说推荐使用相应的FTP软体来实现FTP-Server端的搭建。

常见的FTP-Server软体有Serv-U、FileZilla 、VsFTP 等。FTP-Server搭建完成之后,Client访问时可以通过ftp://x.x.x.x方式访问,也可以通过第三方软体访问。如:SmartFTP、FireFTP、8UFTP。

关于具体的FTP-Server搭建操作步骤不再详细赘述。

FTP的两个TCP连接:

控制连接(TCP 21埠)主要用于实现FTP协议控制信令传送,伺服器端打开TCP 21埠被动等待客户端发起连接命令;客户端则以主动方式打开随机埠,发起连接的建立请求。

数据连接(TCP 20埠)主要用于实现应用数据传送,伺服器的数据连接端使用埠20。伺服器执行主动打开数据连接,通常也执行主动关闭数据连接 。

FTP连接建立方式:

一、主动方式

主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:

FTP客户端通过向FTP伺服器发送PORT命令,告诉伺服器该客户端用于传输数据的临时埠号当需要传送数据时,伺服器通过TCP埠号20与客户端的临时埠建立数据传输通道,完成数据传输。在建立数据连接的过程中,由伺服器主动发起连接,因此被称为主动方式。

主动方式FTP建立交互过程

二、被动方式

被动方式也称为PASV方式,被动方式的主要特点是:

FTP客户端通过向FTP伺服器发送PASV命令,告诉伺服器进入被动方式。伺服器选择临时埠号并告知客户端当需要传送数据时,客户端主动与伺服器的临时埠号建立数据传输通道,完成数据传输。在整个过程中,由于伺服器总是被动接收客户端的数据连接,因此被称为被动方式。

被动方式FTP建立交互过程

FTP主动、被动方式的选择:

当FTP伺服器与FTP客户端均处于同一区域网内,即两者之间互访不存在防火墙或其他安全设备时,主动方式、被动方式均可实现FTP文件分发共享。

如果FTP伺服器处于路由器,防火墙或其他NAT设备之后,建议使用被动模式(passive mode)。因为在主动模式下传输数据时,由FTP发起的数据传输一般会被客户端网关的防火墙阻断。

关于主动与被动FTP优缺点的简要总结:

 主动FTP对FTP伺服器的管理有利,但对客户端的管理不利。因为FTP伺服器企图与客户端的高位随机埠建立连接,而这个埠很有可能被客户端的防火墙阻塞掉。

被动FTP对FTP客户端的管理有利,但对伺服器端的管理不利。因为客户端要与伺服器端建立两个连接,其中一个连到一个高位随机埠,而这个埠很有可能被伺服器端的防火墙阻塞掉。

针对上述防火墙带来的问题,有折衷的办法。既然FTP伺服器的管理员需要他们的伺服器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP伺服器指定一个有限的埠范围来减小伺服器高位埠的暴露。这样,不在这个范围的任何埠会被伺服器的防火墙阻塞。虽然这没有消除所有针对伺服器的危险,但它大大减少了危险。

下述内容通过实验详细介绍了两种方式的建立过程:

FTP被动模式

如图示192.168.1.1为FTP-Server,192.168.1.2为FTP-Client,使用被动方式建立过程如下:

首先FTP在进行控制连发起前,需要先进行基本用户登录认证以及文件列表获取等操作;

1.由客户端发起FTP连接请求,FTP协议基于TCP,于是先进行TCP三次握手连接,连接伺服器21埠;

2.TCP三次握手建立成功后,伺服器也知道了客户端需要请求FTP服务,于是要求客户端提供相应的用户名(客户端在进行FTP连接时需要发送用户名和密码信息);

3.客户端收到伺服器的验证需求后,立即发送用户名 user = 1;

4.伺服器收到后,确认用户名OK,此时需要客户端提供password;

5.客户端发送password=1;

6.伺服器端用户名密码验证成功允许用户登录;

7. 客户端登录到伺服器之后开始发送查询命令 「PWD」查询FTP文件路径;

8.伺服器回复客户端「PWD」查询,反馈文件路径信息;

9.客户端开始请求查询伺服器发送文件的方式 ASCII/二进位;

10.伺服器对客户端发送的文件类型查询进行响应,回复文件传输方式为ASCII;

上述1-10步完成了FTP在进行控制连接操作前,基本用户登录认证以及文件列表获取等内容;

11. FTP被动方式,由客户端发送「PASV」命令;

12.伺服器收到PASV命令后,知道自己此时为被动方式,则开始生成随机的数据埠,以提供给客户端进行数据连接的时候使用;

13.客户端开始发送LIST命令查询文件列表信息;

14.在文件数据传输之前,先建立数据传输时的TCP三次握手;

15.数据传输的三次握手成功后,伺服器开始向客户端通知自己已经准备就绪,马上开始文件传输;

16.文件开始传输,在传输过程中有TCP对文件传输进行确认;

17.客户端文件接收完毕 通过控制链路告知伺服器;

18.伺服器收到之后认为文件传输完成,此时关闭数据连接并告知客户端;

19.客户端收到伺服器发送来的关闭数据连接信息后,则向伺服器在进行确认FTP控制连接断开过程;

20.由客户端发起端开请求命令 QUIT;

21.伺服器收到请求后同意断开 向客户端发送goodbye;

22.TCP会话也断开;

FTP 主动模式

连接建立发起前,基本用户登录认证以及文件列表获取等内容与被动方式相同参考上述1-10步骤。

11.由客户端发送PORT命令,同时自己随机生成一个数据埠,并将该埠信息通过控制链路发送给伺服器;

12.伺服器收到PORT命令之后,此时就知道自己是处于主动模式,并开始与客户端进行TCP连接;

13.TCP连接成功后,伺服器主动通过控制链路告诉客户端自己已经准备就绪,可以发起数据连接;

14.客户端开始发送LIST命令查询文件列表信息;

15.伺服器回复了相应文件信息,并开始准备从数据连接发送文件;

16.伺服器开始发送文件过程,发送过程中均有TCP的确认产生;

17文件发送完成终止数据连接过程(详细参考被动连接17-19部分);

18 终止FTP回话与被动终止方式相同(详细参考被动连接20-22部分)。

qq:3063089331


推荐阅读:
相关文章