FTP协议详解
FTP协议概览
FTP(File Transfer Protocol)文件传输协议,在TCP/IP协议族中属于应用层协议,是运行于TCP协议之上是一种可靠的传输协议,主要功能用于实现用户间文件分发共享,以及网络管理者在进行设备版本升级、日志下载和配置保存等业务操作时,均会使用到FTP功能。FTP协议运行在TCP连接上,运行在UDP协议上的是TFTP协议)
FTP协议作用的端口
控制连接(TCP 21端口)主要用于实现FTP协议控制信令传送,服务器端打开TCP 21端口被动等待客户端发起连接命令;客户端则以主动方式打开随机端口,发起连接的建立请求。
数据连接(TCP 20端口)主要用于实现应用数据传送,服务器的数据连接端使用端口20。服务器执行主动打开数据连接,通常也执行主动关闭数据连接 。
默认情况下,FTP使用20和21这两个端口,其中20用于数据连接(传递数据),21用于控制连接(传递控制信息)。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
FTP协议的两种传输模式
主动模式(Port)
主动模式的核心是TFP客户端告诉服务端自己开发那个端口作为数据端口,然后让服务端来连接自己。 主动模式的连接建立一般是通过一些几个步骤:
- 客户端随机打开一个本地大于1024的端口P1
- 客户端通过端口P1向服务器控制端口(端口21)发起连接请求
- 服务器进行认证成功,请求建立
- 客户端对本地端口P2进行监听并向服务器发送“Port P1+1”告诉服务器,客户端的数据监听端口。
- 服务器收到端口后,从自己的数据端口(端口20)发起连接,连接到客户端指定的数据端口P1+1.
被动方式(Passive)
由于主动方式中,服务端需要主动连客户端,对于客户端的防火墙来说,属于外部连接内部,会出现被阻塞的情况。被动方式解决了这个问题。被动连接的核心是控制连接请求和数据连接请求都是由客户端发起。被动方式的步骤如下:
- 客户端任意打开大约1024的两个本地端口(P1和P1+1)
- P1端口发送请求连接服务器的21端口(控制连接端口)同时提交PASV命令。
- 服务器收到请求后,会开启任意一个大约1024的端口P2,然后返回如下格式内容:
227 entering passive mode(h1,h2,h3,h4,p1,p2) - 客户端收到服务端返回的内容后,计算出服务端开放的数据连接端口
- 客户端通过P1+1端口向服务端的发送连接请求。进行数据传输。
总结
- FTP是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。RFC 959定义了FTP协议规范。
- FTP需要两个TCP连接来完成文件的传输。其中一个称为控制连接,一个称为数据连接。
- 控制连接一直保持到客户端—服务器连接的全过程,但数据连接可以根据需要随时开、随时关。
- 数据连接可以分为主动模式和被动模式,主动模式有被客户端防火墙阻止的风险。
- 主动模式,FTP使用20和21这两个端口,其中20用于数据连接(传递数据),21用于控制连接(传递控制信息)。
- 如果采用被动模式,具体最终使用哪个端口做数据连接要服务器端和客户端协商决定。
- FTP报文是以ASCII码明文进行传递的。