FTP,SFTP,FTPS总结
FTP应用分FTP,SFTP,FTPS,其中最常见的是FTP,也是下面将重点讨论的情形;SFTP即Secure File Transfer Protocol,是SSH协议一个子协议,不区分控制和数据端口;FTPS即“FTP-over-SSL”, 是在安全套接层使用标准的FTP协议和指令的一种增强型协议(类似https),也没有控制和数据端口的区分;所以SFTP和FTPS完全不同于普通的FTP应用(控制和数据用不同的连接),可以SFTP和FTPS的访问需求等同于普通的TCP应用处理。
主动FTP
主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>;1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。 针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1.
2.
3.
4. 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C) FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口 S->C) FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口 S->C) 大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C)
连接过程大概是下图的样子(没有严格按TCP三次握手画):
在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"。
…… …… 余下全文