FTP(File Transfer Protocol)在 TCP/IP 协议族中属于应用层协议,是文件传输标准。

 

主要功能是向用户提供本地和远程主机之间的文件传输,尤其在进行版本升级、日志下载和配置保存等业务操作时,广泛地使用 FTP 功能。FTP 协议基于相应的文件系统实现。

FTP 采用 C/S(Client/Server)结构,如图 所示。

ftp获取远程目录路径 python ftp远程文件_服务器

 

 

  • FTP Server:运行于设备上的 FTP 服务。提供远程客户端访问和操作的功能,用户以通过 FTP 客户端程序登录到设备上,访问设备上的文件。
  • FTP Client:FTP 的客户端。提供本地设备对远程服务器的文件进行操作的命令。用在PC 上通过终端程序或 Telnet 程序与作为 FTP Client 的设备建立连接后,可以输入 FTP 命令建立与远程 FTP Server 的连接并访问远程主机上的文件,对远程主机上的文件进行操作。

 

二、FTP 连接的建立

FTP 采用 2 个 TCP 连接来传输文件:控制连接和数据连接

 

其中控制连接用于连接控端口,传输控制命令;数据连接用于连接数据端口。

 

在控制连接建立后,数据连接通过控制端口的命令建立起连接,进行数据的传输。

FTP 连接的建立分为主动模式和被动模式,两者的区别在于数据连接是由服务器发起还是由客户端发起。缺省情况下采用主动模式,用户可以通过命令切换。

 

主动模式下,当客户端存在防火墙时,由于数据连接是由服务器发起,数据连接可能会发问题。被动模式下,这个问题得到了解决。主动模式有利于对 FTP 服务器的管理,不利于对客端的管理;被动模则相反。

缺省情况下,服务器的端口 21 用于传输控制命令,端口 20

 

A、主动模式下 FTP 连接建立

 

FTP 连接主动模式建立过程如图所示。

ftp获取远程目录路径 python ftp远程文件_服务器_02

 

 

1. 服务器打开端口 21 启动监听,等待连接。
2. 客户端发起控制连接的建立请求,服务器响应连接,控制连接建立。
3. 客户端通过控制连接发送 PORT 命令,将客户端数据连接的临时端口号告诉服务器。
4. 服务器的 20 号端口与客户端建立起数据连接。

 

B、被动模式 FTP 连接建立

FTP 连接被动模式建立过程如图所示。

ftp获取远程目录路径 python ftp远程文件_ftp获取远程目录路径 python_03

 

 1.服务器打开端口 21 启动监听,等待连接。
2. 客户端发起控制连接的建立请求,服务器响应连接,控制连接建立。
3. 客户端通过控制连接发送命令字 PASV,告知服务器处于被动模式。
4. 服务器回应,将服务器数据连接的临时端口号告诉客户端。
5. 客户端与服务器的临时端口建立起数据连接。

说明:
临时端口为随机产生。