文件传输协议(FTP)
FTP工作在客户机/服务器(client/server)方式。文件传输是在客户程序的用户账号与服务器系统之间进行的。FTP中主要采用的是传输控制协议(TCP, Transmission Control Protocol)和Telnet协议。
FTP客服程序:
ⅰ.基于Web浏览器的FTP 缺点:不能上传一个文件,也不能一次下载多个文件。
ⅱ。基于桌面文件管理器的FTP
⒈Gnome 文件管理器,K Desktop的桌面文件管理器:缺点:不能上传一个文件,不能一次下载多个文件,而且不支持断点传输。
ⅲ。gFTP与Windows下的cuteFTP、leapFTP很相似,它具有一组便于使用接口的扩展性能。FTP操作可以按图形执行,用鼠标器及单击一个按钮,或者用特定的任务的菜单来选择文件。gFTP具有本地和远程文件系统用的图形目录浏览器,便于查找目录和文件。在本地系统上,可以使用树的显示来查找和打开要下载文件的那个目录。
ⅳ。lglooFTP客户功能和界面都与gFTP相差无几,lglooFTP下载性能包括循环下载、队列传送和防火墙支持。
ⅴ。基于ftp命令行的客户程序: ftp是UNIX和Linux系统上最早使用的FTP客户软件,它存放在子目录/usr/bin中。ftp使用命令行界面,ftp命令有超过70个不同的内建子命令,包括一个帮助功能。
ftp –v –d –i –n –g [主机名]
-v 显示远程服务器的所有相应信息。
-n 限制ftp的自动登录,即不使用:.n etrc 文件。
-d 使用调试方式
-g 取消全局文件名
但是,一般最常用使用的是在这个命令本身的后面直接跟一个---
也就是一个远端计算机的名称。
例如: ftp ftp.mcp.com, 然而也不是非要在命令行中指定一个主机
名,可以首先只输入ftp命令来启动ftp客户,例如: ftp
㈠登录:
首先输入ftp命令来启动一个ftp客户如下: $ftp ; 接着使用一下open
命令来连接至远程系统。 ftp > open .在提示符(to)后面输入远程系统
的名称,或者直接输入远程系统的IP地址如下: ftp.kde.org,在登录
远程系统并接着提示输入登录名,默认情况下,使用anonymous作为
用户名,而E-mail(电子邮件)的地址作为口令。在登录到远程系统后,就可以执行相应的命令。此时所输入的命令都是在远程系统上执行的。如果想在本地系统上执行ftp中的命令,就必须在命令行前面加上一个惊叹号“!“,这在浏览文件内容,删除已经下载的文件,或者查看硬盘上还有多少剩余空间的时候都非常有用,例如:
ftp>ls 列出远程系统中的文件;ftp>!dir列出本地系统中的文件。不过cd命令是个例外,lcd 是个专门的ftp命令,它是用来改变本地系统上的目录的。
㈡.文件传输:在成功登录到远程系统后就可以进行文件传输了。其中put和get命令用得比较多。例如,在成功登录到ftp.Kde.org 后,使用put命令可以从本地系统将文件发送到远程系统:例如
put mydocument. 使用get命令可以从远程系统接收文件至本地系统,但是从远程系统下载文件之前,必须首先明确下载文件的格式。大多数可用于Internet站点的软件包都可以归档和压缩文件的形式提供,它们都是二进制文件,而对于大多数FTP站点,二进制是默认的,单也有一些站点是以ASCII(文本)模式作为默认的,因此在下载之前,必须确保要在二进制模式下下载二进制文件。ascii命令设置以文本格式下载任何指定的文件,binary命令则以二进制格式下载任何指定的文件。如果下载中断,可以使用reget恢复下载。这对于大文件的传输时非常有用的。因为下载时从断开处恢复,所以不必将整个文件重新下载。
put和get命令每次只能完成单个文件的传输,如果要一次传送多个文件(这种情况经常发生),可以使用另外两个命令:mget和mput.同时可以采用通配符来指定这些文件名。每次传输一个文件时,mget都会用正要发送的文件的名字提示用户,可以输入y发送文件,输入n来撤销传输。mput命令可以将文件从本地发送到远程系统,工作方式类似。如果传输大量文件时,不希望或者不需要对每个文件提问进行回答(如系统升级),可以使用prompt命令来关闭这种交互式提示功能。
㈢.关闭/退出
在完成文件传输操作后,可以使用close命令关闭当前连接;使用bye命令来关闭任何已经打开的连接并退出ftp程序。
ftp客户常用指令 | |
Help | 列出FTP命令 |
Modtime filename | 显示远程主机文件的最后修改时间 |
Pwd | 显示远程主机的当前工作目录 |
ftp | 启动ftp程序 |
Open site-address | 打开至远程系统的连接 |
Close | B关闭至远程系统的连接 |
quite/bye | 结束ftp对话 |
ls | 列出一个目录的内容 |
dir | 以长格式列出一个目录的内容 |
get filename | 把文件从远程系统发送到本地系统 |
put filename | 把文件从本地系统发送到远程系统 |
mget regular-ecpression | 从远程系统一次下载多个文件 |
mput regular-ecpression | 一次吧多个文件从本地发送到远程系统 |
reget filename | 恢复一个中断了的下载 |
binary | 以二进制模式传送文件 |
ascii | 以ASCII码传送文件 |
cd directory | 改变远程系统上的目录 |
lcd directory | 改变远程系统上的目录 |
rmdir | 删除一个远程目录 |
deleter filename | 删除远程系统上的一个文件 |
mdelete file-list | 一次删除多个远程文件 |
rename | 重命名远程系统上的一个文件 |
status | 显示ftp当前的状态 |
prompt | 切换交互提示功能 |
hash | 每传输1024字节,显示一个hash符号 |
mkdir | 在远程系统上创建一个目录
|
FTP内部协议命令是4字符ASCII序列,以一个换行符作为结束,有些代码在其后需要带有参数。对命令使用ASCII字符的一个重要优点是,用户可以观察命令流,并且容易理解。同时,FTP还可能是使有见识的用户直接与FTP服务器组成部分直接通信,不必访问客户端口,FTP内部协议命令提供连接过程,口令检查和实际文件传输。
FTP服务程序:
任何一个Linux系统都可以作为一个FTP服务器来运行,它只需要运行FTP软件,即具有适当配置的FTP守护进程。
FTP服务器工作方式:
FTP服务器由FTP守护进程和配置文件组成。FTP服务程序由/etc/inetd.conf文件进行控制,并且当有人连接FTP端口时,它便被自动调用。当检测到某个连接时,FTP守护进程(/usr/sbin/in.ftpd)便被调用。FTP守护进程是一个程序,当收到请求时,它负责注册,建立起到发送请求的用户账号的连接,并执行任何一个远程用户发出的FTP命令。远程系统上的用户要注册到服务器上的一个账户才能访问该账户的目录中的文件,此时用于需要提供用户名和相应的口令。在大多数FTP服务器上,有一个特殊的用户账号:FTP账号,FTP守护进程允许任何用户通过匿名(anonymous)用户名注册到该账户上,这个账户有它自己的一套目录和文件,这些目录和文件时公开的。
在/home/ftp下创建的其他一些目录应该被设置成时可读的,大多数FTP站点都把这样的文件放在pub子目录中,在这个目录中每一个子目录下都有一个readme 文件和一个index文件,这是对FTP用户的一些惯例,readme 文件对目录中的文件进行简要说明。index文件含有一个文件的列表清单,并简要的说明每个文件的主要内容。
FTP服务器管理工具:有几个工具可以帮助用户管理FTP服务器,这些工具在安装wu-ftd或ProFTPD RPM 软件包时作为它们的一部分自动安装。它们有助于观察服务器的当前状态并控制服务器的关闭过程。这些命令如下:
★ftpshut ★ftpwho ★ftpcount
ftpshut命令:
ftpshut命令主要用于控制FTP服务器的关闭。ftpshut的命令行格式如下:
ftpshut –l<login-minute> -d<drop-minutes><time><warning message>
这里的<log-minute>是服务器拒绝新的FTP用户进入的时间,它指的是服务器关闭之前的分钟数:<drop-minutes>它指的是服务器开始断开现有连接的时间,它指的是服务器关闭之前的分钟数。<login-minute>的默认值是10,<drop-minutes>的默认值是5.
<time>是服务器被关闭的时间。now
ftpcount命令:
ftpcount是ftpwho的简化版本,它显示/etc/ftpaccess中的每个类中进入的用户总数。在显示用户数目的同时,还显示了允许连接的扩大用户数目。
ftpwho命令:用来显示通过FTP正在与系统连接的所有用户,命令输出格式<pid><tty><state><time><connection details>
FTP服务器配置:可以使用存放在/etc目录中的配置文件来进行FTP服务器的配置,使其满足用户的需要,这些配置文件都以ftp开头,包括如下:
★ /etc/ftpaccess ★/etc/ftpconersions ★/etc/ftphosts
★ /etc/ftpusers ★/etc/ftpgroups ★/var/log/xferlog
利用这些文件,可以控制那些人、在什么时间、从什么地点可以连接到服务器,并且可以建立一个审查跟踪文件,对他们连接后所做的工作进行检查。/etc/ftpaccess文件时这些文件中最重要的一个,因为它包括大部分的配置选项,然而,错误地配置其他文件中的任何一个,都可能导致服务被拒绝。
Serv-U是一种被广泛运用的FTP服务器端软件,支持9x/ME/NT/2,它设置简单,功能强大,性能稳定。FTP服务器用户通过它用FTP协议能在internet上共享文件。它并不是简单地提供文件的下载,还为用户的系统安全提供了相当全面的保护。例如:您可以为您的FTP设置密码,设置各种用户级的访问许可等等。Serv-U不仅100%遵从通用FTP标准,也包括众多的独特功能可为每个用户提供文件共享完美解决方案。它可以设定多个FTP服务器、限定登录用户的权限、登录主目录及空间大小等,功能非常完备,它具有非常完备的安全特性,支持SSl FTP传输,支持在多个Serv-U和FTP客户端通过SSL加密连接保护您的数据安全等。
1.流量控制 带宽限制,支持对上传、下载流量,磁盘空间,网络带宽设定限制,以确保带宽不会
2.被FTP用户独占。
3.断点续传能有效地降低重复下载。
4.远程管理方便用户从任何地方管理FTP Server,提供工作效率。
5.安全机制通过严格的权限控制,提供系统安全性和稳定性。
6.支持"多宿主"IP站点对需单个服务器支持多IP地址的站点尤为适用。
7.匿名用户接入
8.作为系统服务运行
FTP 主动模式与FTP被动模式端口
FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个是数据端口和一个命令端口(也可以叫做控制端口),通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20.这就是主动与被动的最大不同之处。
《一》主动FTP
主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到ftp服务器的命令端口,也就是21端口。然后客户端开始监听N+1,并发送FTP命令“port N+!”到FTP服务器,接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1).
针对FTP服务器前面得防火墙来说,必须允许以下通讯才能支持主动方式FTP:
⒈任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
⒉FTP服务器的21端口到大于1024的端口。(服务器响应客户端的控制端口)
⒊FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
⒋大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
《二》被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式,这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都是由客户端发起的,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+!)。第一个端口服务器的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的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
(三) 主动与被动FTP优缺点:
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有 限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危 险。
简而言之:
主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机
FTP主动模式与被动模式的解决与原理
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
概括:
--------------------------------------------------------------------------------
主动模式:服务器向客户端敲门,然后客户端开门
被动模式:客户端向服务器敲门,然后服务器开门
所以,如果你是如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门
而且有时候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口