| 2019-05-20
ftp的全称是file transfer protocol,翻译成文件传输协议。当初ftp的提出主要是为了解决在恶劣网络环境下文件的传输,比如文件传输中断怎么办,文件传输错误怎么办,文件传输异常中断退出了怎么办,文件传输是否加密、安全?等等这些问题,ftp协议都能够处理的比较好。鉴于ftp协议的这些优点,我们在搭建文件传输服务器时一般会优先考虑搭建ftp服务器。那么,ftp服务器软件哪个好呢,在此之前,我们先简要介绍一下ftp协议。
首先关于FTP传输模式,众所周知,FTP传输有两种工作模式,Active Mode和Passive Mode(主动模式和被动模式),简单描述连接过程如下:
主动模式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 客户端在命令链路上用PORT命令告诉服务器:“我打开了...端口,你过来连接我”。于是服务器从20端口向客户端的...端口发送连接请求,建立一条数据链路来传送数据。
被动模式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 服务器在命令链路上用PASV命令告诉客户端:“我打开了...端口,你过来连接我”。于是客户端向服务器的...端口发送连接请求,建立一条数据链路来传送数据。
了解模式的目的,是为了了解端口。使用 FTP 传输时,至少会使用到两个 Port 来建立连接通道:
? 一个为指令通道(Command Channel),默认使用 Port 21 建立,用来传输 FTP 指令,例如:列出清单(LIST)、变更目录(CWD)、取得目前的目录(PWD)、......等。
? 另一个为数据通道(DATA Channel),默认(主动模式)使用 Port 20,但是会因 FTP Client 选择使用的模式不同而有所不同,如果是被动模式,则ftp服务器端会开临时数据端口(大于1023)让ftp client去连接。
ftp服务器软件众多,那么用ftp服务器软件哪个好呢,在此笔者推荐filezilla server。主要是filezilla server对于ftp的两种传输模式支持的比较好。考虑到内网穿透的需要,一般我们在使用ftp协议的时候,多数会优先使用被动模式的协议。这个主要是因为作为被动模式来说,第二步的数据连接也是客户端发起,作为部署在公网,或者即便是内网,也可以在服务器所在的路由器上设置端口映射来达到访问的目的。但是还有一个问题,就是ftp被动模式下,服务器开的数据端口是临时的,我们需要在filezilla server软件中预先设置这个临时端口的范围,参见截图,在此例中,我们将被动模式下,服务器端临时开的数据端口限定在65401~65404之间。
然后在服务器出/入口路由器上将这个范围内的端口都打开端口映射,具体参见以下截图:
经过这样操作,我们就可以在外网正常的访问我们处于内网的ftp服务器了。鉴于filezilla提供了比较完整、友好的对于ftp主动模式、被动模式的支持,所以要问ftp服务器软件哪个好,我们强烈推荐filezilla server。
但是还有一个问题,我们的ftp server对外的公网IP地址是变化的,我们不可能实时的记忆这个IP地址,所以这时我们需要为我们的ftp站点申请一个固定的域名,以方便外部访问。这时我们就想到了花生壳提供的动态域名解析服务。所以我们只需要申请一个花生壳账号,然后购买一个域名,这样我们的花生壳账号就和我们的域名绑定在一起,我们只需要将花生壳客户端登录在我们打算作为ftp server的机器上就可以了。
ftp服务器软件哪个好?推荐filezilla server。动态域名解析软件哪个好?推荐花生壳。