Apache-FTPServer的配置使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Apache FTPServer的配置使用
目录
1认识FTP (2)
1.1FTP介绍 (2)
1.2FTP的工作模式 (2)
1.3FTP服务器的种类 (5)
2Apache FtpServer入门 (5)
2.1介绍 (5)
2.2Apache FtpServer安装配置 (5)
2.2.1环境准备 (5)
2.2.2安装配置步骤 (6)
2.2.3开启FtpServer服务 (9)
2.2.4FTP常见问题分析 (12)
2.2.5FTP常见问题的解决 (12)
2.2.6FTP Client连接FtpServer (13)
2.2.7FtpServer配置Pasv模式 (16)
3Apache FtpServer与Spring的集成 (17)
4基于commons-net的文件上传下载 (17)
1认识FTP
在正式进入主题前,先对FTP做一个整体的了解。
1.1FTP介绍
FTP的全称是File Transfer Protocol(文件传输协议)。FTP使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。控制连接使用类似TELNET协议在主机间交换命令和消息。文件传输协议是TCP/IP 网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。
1.2FTP的工作模式
FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。
FTP主要有两种工作模式:
主动FTP
即Port模式,客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP 命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1) 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2) FTP服务器的21端口到大于1024的端口。(服务器响应客户端的控制端口)
3) FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4) 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1) 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)
2) 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3) 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
4) 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
★总结
主动FTP(PORT模式):
命令连接:客户端>1023端口――> 服务器21端口
数据连接:客户端>1023端口<――服务器20端口
在主动模式下:FTP服务器的控制端口是21,数据端口是20,所以在做静态映射的时候只需要开放21端口即可,它会用20端口和客户端主动的发起连接。 被动FTP(PASV模式):
命令连接:客户端>1023端口――> 服务器21端口
数据连接:客户端>1023端口――> 服务器>1023端口
在被动模式下:FTP服务器的控制端口是21,数据端口是随机的,且是客户端去连接对应的数据端口,所以在做静态的映射话只开放21端口是不可以的。此时需要做DMZ。
防火墙有很多种,其中有一些会禁止那些不是从内部网络IP发出的连接请求。而ftp协议是个很老的东东,没有考虑这个问题。可以这样简单描述一般ftp 的工作原理:client对server发出请求:“嗨,我的xx端口正等着你传送数据呢,sever听到这个请求,就会建立一个连接,指向这个端口,并且开始传送数据。这就回到了我们的问题,如果发出请求的client在防火墙的后面,而这个防火墙禁止外部IP建立连接,那么当然server(在外部)不能建立与client的连接。所以,过了几年,人们修改了ftp协议以应付这种情况。这就是passive mode,工作原理如下:client向server发出passive命令,server回答说:“数据在xx端口等你,自己来拿。”而这回则由client建立指向server的连接,从而取得数据。这就避免了防火墙的限制。
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉,例如:当客户端使用PORT登录方式时,FTP 服务器将无法连接客户端建立数据链路。因为客户端没有公网IP地址,这种情况下,客户端必须使用PASV登录方式。这就是很多内网用户不能登录FTP服务器的一个重要原因。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。幸运的是,我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。