ftp

ftp

档案传输协定

档案传输协定 FTP [ File Transfer Protocol ]使得主机间可以已分享档案。 FTP 使用TCP 生成一个虚拟连线用于控製信息,然后再生成一个单独的 TCP 连线用于资料传输。控製连线使用类似TELNET协定在主机间交换命令和讯息。档案传输协定是TCP/IP网路上两台电脑传送档案的协定,FTP是在TCP/IP网路和INTERNET上最早使用的协定之一,它属于网路协定组的套用层。FTP客户机可以给伺服器发出命令来下载档案,上载档案,建立或改变伺服器上的目录。

  • 中文名称
    档案传输协定
  • 外文名称
    File Transfer Protocol
  • 简称
    FTP
  • 类型
    档案传送协定
  • 使用连线埠
    20,21,990

由来

在网路中常常需要将档案从一台电脑复製到另外一台相距较远的电脑中。初看起来这是一件很简单的事情,其实这是一件非常困难的事情,这是因为众多的电脑套用厂商研製出来的档案系统多达数百种,并且差别很大。

为了解决这个矛盾,开发者们研发出了相关协定以解决这些问题。档案共享协定一共可以分为两大类:第一类称之为在线上访问,在线上访问意味着允许多个程式同时对一个档案进行存取,有兴趣的读者可以参考相关文献,这裏就不赘述了;第二类的核心是复製整个档案,TCP的FTP和UDP的TFTP都属于这类,它们的特点是若要存取一个档案就必须先获得一个在地档案的副本,如果要修改档案则只能对档案副本进行修改,然后再将修改后的档案副本传回到原节点。

详细介绍

FTP是TCP/IP网路上两台电脑传送档案的协定,FTP是在TCP/IP网路和INTERNET上最早使用的协定之一。尽管World Wide Web(WWW)已经替代了FTP的大多数功能,FTP仍然是通过Internet把档案从客户机复製到伺服器上的一种途径。FTP客户机可以给伺服器发出命令来下载档案,上载档案,建立或改变伺服器上的目录。原来的FTP软体多是命令行操作,有了像CUTEFTP这样的图形介面软体,使用FTP传输变得方便易学。主要使用它进行"上传"。即向伺服器传输档案。由于FTP协定的传输速度比较快,我们在製作诸如"软体下载"这类网站时喜欢用FTP来实现,同时我们这种服务面向大众,不需要身份识别,即"匿名FTP伺服器"。

FTP是套用层的协定,它基于传输层,为使用者服务,它们负责进行档案的传输。FTP是一个8位的客户端-伺服器协定,能操作任何类型的档案而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求资料之间的时间会非常长,并且不时的必需执行一些冗长的登录进程。

FTP服务一般运行在20和21两个连线埠。连线埠20用于在客户端和伺服器之间传输资料流,而连线埠21用于传输控製流,并且是命令通向ftp伺服器的进口。当资料通过资料流传输时,控製流处于空闲状态。而当控製流空闲很长时间后,客户端的防火墙会将其会话置为逾时,这样当大量资料通过防火墙时,会产生一些问题。此时,虽然档案可以成功的传输,但因为控製会话会被防火墙断开,传输会产生一些错误。

工作原理

档案传输协定FTP使用TCP可靠的传输服务来提供一些基本的档案传送服务。FTP的主要任务是减少或者消除在不同作业系统下处理档案的不兼容性。FTP使用客户伺服器的模式,一个FTP伺服器进程可以服务多个客户进程。FTP的伺服器进程由两部分组成:一个是主进程,负责接收新的请求;另外还有若干个从属进程,负责处理单个请求。

在进行档案传输时,FTP的客户和伺服器之间要建立两个并行的TCP连线:控製连线和资料连线。控製连线在整个会话期间一直保持开启状态,FTP客户所发出的传送请求通过控製连线传送给伺服器端的控製进程,但控製连线并不用来传送档案,实际用来传输档案的是资料连线。伺服器端在接收到FTP客户传送来的档案传输请求后就建立资料传送进程和资料连线,用来连线客户端和伺服器端的资料传送进程。资料传送进程实际完成档案的传送,在传送完毕后关闭资料传送连结并结束运行。

使用两个独立的连线的主要好处是使协定更加简单和更容易实现。当客户进程向伺服器进程发出建立连线请求时,要寻找连线伺服器进程的知名连线埠21,同时还要告诉伺服器进程自己的另一个连线埠号码,用于建立资料传送连线(此信息是在报文的套用层携带)。接着伺服器进程用自己传送资料的知名连线埠20与客户进程所提供的连线埠号码建立资料传送连线。由于FTP使用了两个不同的连线埠号,所以资料连线与控製连线不会混乱。

主要功能

提供档案的共享(电脑程式 / 资料); 支持间接使用远程电脑; 使使用者不因各类主机档案存储器系统的差异而受影响; 可靠且有效地传输资料。

FTP ,尽管可以直接被终端使用者使用,但其套用主要还是通过程式实现。

FTP 控製帧即指 TELNET 交换信息,包含 TELNET 命令和选项。然而,大多数 FTP 控製帧是简单的 ASCII 文本,可以分为 FTP 命令或 FTP 讯息。 FTP 讯息是对 FTP 命令的回响,它由带有解释文本的应答代码构成。

匿名FTP

匿名FTP是指登入FTP伺服器时,使用者採用"anonymous",口令为自己的Email地址就可以登入。可以看出,匿名Ftp对任何使用者都是敞开的,但登入后使用者的许可权很低,一般只能从伺服器下传档案,而不能上载或修改伺服器上的内容,它可以有效地帮助网站的拥有者提供档案或软体供Internet上的使用者下传。

注意:万网的虚拟主机都不支持匿名FTP。

FTP常用命令

Ftp命令的功能是在在地机和远程机之间传送档案。该命令的一般格式如下:

c:> ftp 主机名/IP

最常用的命令有:

ls 列出远程机的当前目录

cd 在远程机上改变工作目录

lcd 在在地机上改变工作目录

ascii 设定档案传输方式为ASCII模式

binary 设定档案传输方式为二进位模式

close 终止当前的ftp会话

hash 每次传输完资料缓沖区中的资料后就显示一个#号

get(mget) 从远程机传送指定档案到在地机

put(mput) 从在地机传送指定档案到远程机

open 连线远程ftp站点

quit 断开与远程机的连线并退出ftp

? 显示在地帮助信息

与PHP的关系

PHP FTP 简介

在 PHP 中,FTP 函式通过档案传输协定 (FTP) 提供对档案伺服器的客户端访问。

FTP 函式用于开启、登录以及关闭连线,同时用于上载、下载、重命名、移除及获取档案伺服器上的档案信息。不是所有的 FTP 函式对每个伺服器都起作用或返回相同的结果。自 PHP 3 起,FTP 函式可用。

这些函式用于对 FTP 伺服器进行细致的访问。如果您仅仅需要对 FTP 伺服器进行读写操作,建议使用 Filesystem 函式中的 ftp:// wrapper。

安装

PHP 的 Windows 版本内置了对 FTP 扩展的支持。无需载入任何附加扩展库即可使用 FTP 函式。

然而,如果您运行的是 PHP 的 Linux 版本,在编译 PHP 的时候请增加 --enable-ftp 选项(PHP4 或以上版本)或者 --with-ftp 选项(PHP3 版本)。

网页流览器

大多数最新的网页流览器和档案管理器都能和FTP伺服器建立连线。这使得在FTP上通过一个接口就可以操控远程档案,如同操控在地档案一样。这个功能通过给定一个FTP的URL实现,形如ftp://<伺服器地址>。是否提供密码是可选择的,如果有密码,则形如ftp://:@。大部分网页流览器要求使用被动FTP模式,然而并不是所有的FTP伺服器都支持被动模式。

网路协定

套用层DNS,FTP,ENRP,HTTP,IMAP,IIRC,NNTP,POP3,SIP,SMTP,SNMP,SSH,Telnet,BitTorrent,DHCP...

传输层DCCP,SCTP,TCP,RTP,UDP,IL,RUDP, ...

网路层IPv4,IPv6...

资料链路层乙太网,Wi-Fi,令牌环,MPLS,PPP...

物理层RS-232,EIA-422,RS-449,EIA-485,10BASE2,10BASE-T...

FTP和网站

我们都知道,当我们需要往网站空间上放网站档案的时候,我们可以採用WEB和FTP两种方法。在这裏,我们建议直接使用FTP进行资料交换,因为不管是安全性还是快捷性来说,ftp都是很不错的。

FlashFXP快速连结最新介面

那麽我们怎麽往空间上载送网站的资料档案呢,这时,我们就需要一个软体FlashFXP或者其他FTP客户端。这裏我们以FlashFXP为例,我们去网上下载这个软体包并解压出来,双击FlashFXP.exe这个档案,进入页面之后,有一个闪电符号的按钮,这是连线。单击或者直接按F8,这时会出来一个对话框,我们只需要输入网站的URL或者IP,然后再输入使用者名称和密码就行,这时,我们就可以进行网站资料档案的传输了。

FTP使用者授权

(1)使用者授权

要连上 FTP伺服器,必须要有该 FTP 伺服器授权的帐号,也就是说你只有在有了一个使用者标识和一个口令后才能登入FTP伺服器,享受FTP伺服器提供的服务。

(2)FTP地址格式

FTP地址如下: ftp://使用者名称:密码@FTP伺服器IP或域名:FTP命令连线埠/路径/档案名称

上面的参数除FTP伺服器IP或域名为必要项外,其他都不是必须的。

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的使用当中,使用者经常遇到两个概念:"下载"和"上传"。"下载"档案就是从远程主机拷贝档案至自己的电脑上;"上传"档案就是将档案从自己的电脑中拷贝至远程主机上。用Internet语言来说,使用者可通过客户机程式向(从)远程主机上传(下载)档案。

在ftp的使用过程中,必须首先登录,在远程主机上获得相应的许可权以后,方可上载或下载档案。也就是说,要想同哪一台电脑传送档案,就必须具有哪一台电脑的适当授权。换言之,除非有使用者ID和口令,否则便无法传送档案。这种情况违背了Internet的开放性,Internet上的FTP主机何止千 万,不可能要求每个使用者在每一台主机上都拥有帐号。因此就衍生出了匿名FTP。

开源软体

FileZilla是一个免费开源的FTP客户端软体,有客户端版本和伺服器版本。客户端版本可以运行在Linux,window,Mac OS系统上,伺服器版本可以运行在window系统中。

优缺点

优点:

1.促进档案的共享(电脑程式或资料)

2.鼓励间接或者隐式的使用远程电脑

3.向使用者禁止不同主机中各种档案存储系统的细节

4.可靠和高效的传输资料

缺点:

1.密码和档案内容都使用明文传输,可能产生不希望发生的窃听。

2.因为必须开放一个随机的连线埠以建立连线,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题通过使用被动模式的FTP得到了很大解决。

3.伺服器可能会被告知连线一个第三方电脑的保留连线埠。

FTP虽然可以被终端使用者直接使用,但是它是设计成被FTP客户端程式所控製。

运行FTP服务的许多站点都开放匿名服务,在这种设定下,使用者不需要帐号就可以登录伺服器,默认情况下,匿名使用者的使用者名称是:"anonymous"。这个帐号不需要密码,虽然通常要求输入使用者的邮件地址作为识别密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP伺服器的配置情况。

使用模式

FTP有两种使用模式:主动和被动。主动模式要求客户端和伺服器端同时开启并且监听一个连线埠以建立连线。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求伺服器端产生一个监听相应连线埠的进程,这样就可以绕过客户端安装了防火墙的问题。

一个主动模式的FTP连线建立要遵循以下步骤:

1.客户端开启一个随机的连线埠(连线埠号大于1024,在这裏,我们称它为x),同时一个FTP进程连线至伺服器的21号命令连线埠。此时,源连线埠为随机连线埠x,在客户端,远程连线埠为21,在伺服器。

2.客户端开始监听连线埠(x+1),同时向伺服器传送一个连线埠命令(通过伺服器的21号命令连线埠),此命令告诉伺服器客户端正在监听的连线埠号并且已準备好从此连线埠接收资料。这个连线埠就是我们所知的资料连线埠。

3.伺服器开启20号源连线埠并且建立和客户端资料连线埠的连线。此时,源连线埠为20,远程资料连线埠为(x+1)。

4.客户端通过在地的资料连线埠建立一个和伺服器20号连线埠的连线,然后向伺服器传送一个应答,告诉伺服器它已经建立好了一个连线。

被动模式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回响和资料到客户端的资料连线埠)

建立/移除

如果伺服器使用的是Windows Server 2003,那麽网路管理员可以利用Web接口管理,高效、安全地在远程建立/移除FTP服务。

1.激活Web管理接口

依次点击"开始→设定→控制台→增加/移除Windows程式→增加/移除Windows组件",在"Windows组件向导"视窗中逐层展开"应用程式伺服器→Internet信息服务(IIS)→全球资讯网服务",勾选"远程管理(HTML)"项,点击"确定"按钮安装Web管理接口组件。

安装完成后,就可以在远程输入"https://伺服器IP地址:8098"访问Windows Server 2003了。

2.远程建立FTP服务

在流览器中输入"https://伺服器IP地址:8098"连线远程伺服器,输入管理员使用者名称和密码登录。

首先点击"站点",然后点击页面右侧"任务"列表中的"建立"按钮,在"站点标识符"右侧的文本框中输入服务名(如"ftp"),按Tab键转换到下一项,"目录"右侧的文本框中会自动出现默认建立的目录,"网站管理员"项的文本框中也会自动出现该服务所对应的默认管理员名称(如"ftp_Admin"),接着在"管理员密码"和"确认密码"中输入密码。设定完后,不要急于点击"确定"按钮,因为此时建立的FTP服务连线埠并不是FTP服务默认的21连线埠,而是与默认网站相同的80连线埠。

正确的做法是:点击"站点标识"项,设定"TCP连线埠"为"21",接着在"IP地址"下拉选单中选择需指定的IP地址,如192.100.100.16(区域网路中使用)或202.102.9.142之类(远程使用),最后点击"确定"按钮,稍后在返回的"网站配置"管理页面中可以看到刚刚建立的名为"ftp"的服务。

当前服务已经建立成功了,但还没有被激活,点击"任务"列表中的"啓动"按钮即可激活。

小提示:点击"任务"列表中的"移除"按钮可以将建立的FTP服务移除。

3.登录FTP服务

可以使用CuteFTP这类的FTP客户端软体尝试登录刚刚建立的FTP服务了,而且系统在自动建立的目录中新增了一个"新资料夹"。登录成功后,就可以进行档案的上载、下载、更名、移除等操作了。

与HTTP的比较

从FTP伺服器上检索一个档案,包含繁复的交换握手步骤:

客户端建立到FTP伺服器端控製连线埠的TCP Socket连结,并等待TCP握手完成客户端等待伺服器端传送回执客户端向伺服器端传送使用者名称并等待回响客户端向伺服器端传送密码并等待回响客户端向伺服器端传送SYST命令并等待回响客户端向伺服器端传送TYPE I命令并等待回响如果使用者需要在伺服器端切换目录,客户端仍然传送命令并等待回响主动模式下,客户端需要传送PORT命令到伺服器端,然后等待回响(被动模式与主动模式相反)建立资料传输连结(需要经过三次握手,建立一条TCP Socket连线)通过连结传输资料客户端等待伺服器端从控製连线传送2xx指令,以确保资料传输成功客户端传送QUIT命令,并等待伺服器回响

同样的情形,我们来看看HTTP协定:

HTTP客户端向HTTP伺服器端建立一条TCP Socket连线HTTP客户端向HTTP伺服器端传送GET命令,包含URL、HTTP协定版本、虚拟主机名等等,并等待回响HTTP伺服器端的回响包含了所有想要的资料,完成!

传输一个档案,FTP需要往复10次,而HTTP只需要2次!如果传输多个档案,FTP可以省略传送使用者名称和密码的步骤,而HTTP则可以使用固定的套接字(Socket),在相同的TCP连线中传输档案。

综上所述,虽然档案传输协定(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

资料类型

USER

系统登录的使用者名称

标準 FTP 信息如下

回响代码

解释说明

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

档案名称不允许

相关词条

相关搜索

其它词条