文件传输协议(FTP:File Transfer Protocol)使得主机间可以共享文件。 FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。控制连接使用类似 TELNET 协议在主机间交换命令和消息。文件传输协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。
FTP服务器
FTP的全称是File Transfer Protocol(文件传输协议),顾名思义,就是专门用来传输文件的协议。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着 FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
其实 早期在Internet上传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC、工作站、MAC、服务器、大型机等等,而这些计算机可能运行不同的操作系统,有Unix、Dos、 Windows、MacOS等等,各种操作系统之间的文件交流,需要建立一个统一的文件传输协议,这就是所谓的FTP。虽然基于不同的操作系统有不同的 FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。
与大 多数Internet服务一样,FTP也是一个客户机/服务器系统(C/S)。用户通过一个支持FTP协议的客户机程序,连接到远程主机上的FTP服务器 程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户指定目录中。FTP客户程序 有字符界面和图形界面两种。字符界面的FTP的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。
在FTP的使用当 中,用户经常遇到两个概念:"下载"(Download)和"上载"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上载"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。
在ftp的使用过程中,必须首先登录,在远程主机上获得相应的权限以后,方可上传或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千 万,不可能要求每个用户在每一台主机上都拥有帐号。因此就衍生出了匿名FTP。
优缺点
优点:
1.促进文件的共享(计算机程序或数据)
2.鼓励间接或者隐式的使用远程计算机
3.向用户屏蔽不同主机中各种文件存储系统的细节
4.可靠和高效的传输数据
缺点:
1.密码和文件内容都使用明文传输,可能产生不希望发生的窃听。
2.因为必须开放一个随机的端口以建立连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题通过使用被动模式的FTP得到了很大解决。
3.服务器可能会被告知连接一个第三方计算机的保留端口。
FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。
运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。
命令
|
描述
|
ABOR
|
中断数据连接程序
|
ACCT
|
系统特权帐号
|
ALLO
|
为服务器上的文件存储器分配字节
|
APPE
|
添加文件到服务器同名文件
|
CDUP
|
改变服务器上的父目录
|
CWD
|
改变服务器上的工作目录
|
DELE
|
删除服务器上的指定文件
|
HELP
|
返回指定命令信息
|
LIST
|
如果是文件名列出文件信息,如果是目录则列出文件列表
|
MODE
|
传输模式(S=流模式,B=块模式,C=压缩模式)
|
MKD
|
在服务器上建立指定目录
|
NLST
|
列出指定目录内容
|
NOOP
|
无动作,除了来自服务器上的承认
|
PASS
|
系统登录密码
|
PASV
|
请求服务器等待数据连接
|
PORT
|
IP 地址和两字节的端口 ID
|
PWD
|
显示当前工作目录
|
QUIT
|
从 FTP 服务器上退出登录
|
REIN
|
重新初始化登录状态连接
|
REST
|
由特定偏移量重启文件传递
|
RETR
|
从服务器上找回(复制)文件
|
RMD
|
在服务器上删除指定目录
|
RNFR
|
对旧路径重命名
|
RNTO
|
对新路径重命名
|
SITE
|
由服务器提供的站点特殊参数
|
SMNT
|
挂载指定文件结构
|
STAT
|
在当前程序或目录上返回信息
|
STOR
|
储存(复制)文件到服务器上
|
STOU
|
储存文件到服务器名称上
|
STRU
|
数据结构(F=文件,R=记录,P=页面)
|
SYST
|
返回服务器使用的操作系统
|
TYPE
|
数据类型(A=ASCII,E=EBCDIC,I=binary)
|
USER>
|
系统登录的用户名
|
|
响应代码
|
解释说明
|
110
|
新文件指示器上的重启标记
|
120
|
服务器准备就绪的时间(分钟数)
|
125
|
打开数据连接,开始传输
|
150
|
打开连接
|
200
|
成功
|
202
|
命令没有执行
|
211
|
系统状态回复
|
212
|
目录状态回复
|
213
|
文件状态回复
|
214
|
帮助信息回复
|
215
|
系统类型回复
|
220
|
服务就绪
|
221
|
退出网络
|
225
|
打开数据连接
|
226
|
结束数据连接
|
227
|
进入被动模式(IP 地址、ID 端口)
|
230
|
登录因特网
|
250
|
文件行为完成
|
257
|
路径名建立
|
331
|
要求密码
|
332
|
要求帐号
|
350
|
文件行为暂停
|
421
|
服务关闭
|
425
|
无法打开数据连接
|
426
|
结束连接
|
450
|
文件不可用
|
451
|
遇到本地错误
|
452
|
磁盘空间不足
|
500
|
无效命令
|
501
|
错误参数
|
502
|
命令没有执行
|
503
|
错误指令序列
|
504
|
无效命令参数
|
530
|
未登录网络
|
532
|
存储文件需要帐号
|
550
|
文件不可用
|
551
|
不知道的页类型
|
552
|
超过存储分配
|
553
|
文件名不允许
|
|