ftp是什么意思
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
文件传输协议的原始规范于1971年4月16日发布为RFC 114。直到1980年,FTP运行在TCP/ IP的前身NCP上。该协议后来被TCP / IP版本,RFC 765(1980年6月)和RFC 959(1985年10月)(当前规范)所取代。
RFC 959提出了若干标准修改,例如RFC 1579(1994年2月)启用防火墙FTP(被动模式),RFC 2228(1997年6月)提出安全扩展,RFC 2428(1998年9月)增加了对IPv6的支持,并定义了一种新型的被动模式。
扩展资料与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。
大多数最新的网页浏览器和文件管理器都能和FTP服务器创建连接。这使得在FTP上通过一个接口就可以操控远程文件,如同操控本地文件一样。
这个功能通过给定一个FTP的URL实现,形如ftp://<服务器地址>(例如,ftp://ftpgimporg )。是否提供密码是可选择的,如果有密码,则形如ftp://<login>:<password>@<ftpserveraddress>。大部分网页浏览器要求使用被动FTP模式,然而并不是所有的FTP服务器都支持被动模式。
参考资料:
FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP 工作方式的不同,数据端口并不总是20。这就是FTP主动与被动模式的最大不同之处。
(一)主动FTP
主动方式的FTP是这样的:客户端从一个任意的非特权端口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优缺点
主动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的高端端口
FTP是一种文件传输协议,主要用来在不同的主机之间实现文件的传送。通常情况下完成一个文件的传输需要有命令连接通道与数据连结通道两个通道。而建立这些通道的方法不同,又有主动模式与被动模式的区分。在Linux操作系统上,vsFTPd是最常用的一个FTP软件,其支持这两种模式。为此系统管理员需要了解这两种连接模式的不同点,并在实际工作中根据企业的应用情况来选择合适的模式。 一、主动模式的实现与特点。
无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连结。而主动模式与被动模式的差异主要体现在数据连结通道上。为了说明两者的差异,我将主要对这个数据连结进行比较详细的说明。
当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接。如在客户端向服务器发起连接请求的时候,客户端会随即的选择某个TCP端口来跟FTP服务器的21号端口进行连接,这主要是通过TCP三方握手来实现的。当三方握手完成之后,客户端与服务器之间便建立了命令连接通道。不过这个通道的用途是非常有限的,其主要用来传输FTP的相关指令。如查看文件列表、删除文件等等,而不能够用来在客户端与服务端进行文件传输。为此这个通道就被称之为命令通道。而跟数据传输相关的为数据通道。
到客户端与服务器建立了连接之后,可能客户端暂时不需要进行数据传输。如只是需要查看目录下的文件或则其他相关的动作。此时之需要命令连接通道就可以完成了。如果此时客户端需要往FTP服务器上上传或者下载文件的话,就需要在客户端与服务器端再建立一条额外的数据传输连接。当客户端发出数据传输的指令之后(如上传数据或者下载文件),客户端会启用另外一个端口监听等待连接,并利用先前建立的命令连接通道告诉FTP服务器其监听的端口号。然后FTP服务器会利用端口20和刚才的FTP客户端所告知的端口再次进行三方握手。三次握手成功后便建立了一条数据传输通道。注意此时数据连结通道建立的过程中,是FTP服务器的20号端口主动连接FTP客户端的,为此这种连接方式就叫做主动模式。
二、被动模式的实现与特点。
被动操作模式在建立命令连接通道的时候,跟主动操作模式是相同的。两者主要的差异就在于数据传输通道的建立上面。但是如果用户需要进行数据传输的时候,则FTP客户端会通过命令通道告诉FTP服务器,如会向服务器发出一个PASV指令。这个指令就是告诉服务期,要采用被动模式建立连接。如果采用被动操作模式,服务期会选择自身的一个端口来进行监听连接(而在主动操作模式下是利用客户端的一个端口来进行监听连接),并再次利用命令连接通道告诉客户端“我为你开启了哪个端口,你要建立数据连接的话就跟我的哪个端口联系”。客户端在接到这个信息后,就会在自己操作系统上选择一个数据连接的通信端口,与服务器提供的端口进行三方握手,并最终建立起可以进行数据传输的通道。
当企业的网络环境不同,两个操作模式的应用效果是不同的。这主要是主动操作模式与被动操作模式在数据的传输通道建立上有一定的差异。从以上的分析中我们可以看出,在主动操作模式下,FTP服务器的20号端口是主动同客户端联系,建立数据传输通道的。而在被动操作模式下,则FTP服务器是被动的等待,等待客户段与其的20号端口建立连接。不要小看这个细小的差异,这个差异却决定了两者应用环境的不同。
一般来说,如果这个FTP服务器只对企业的内部局域网客户提供文件传输的服务,那么基本上两者的应用效果没有很大的差异。但是如果企业网络外部的用户也需要通过互联网与FTP服务器进行文件传输的话,就会有很大的不同。这主要是因为,在数据通道建立的过程中,客户端会在另一个端口上监听等待连接,并利用命令连接通道告诉服务器其监听的端口好。然后企业的边界路由器会将FTP的IP地址转换为合法的公网IP地址(假设企业由于公网IP地址有限,在边界路由器上通过NAT服务向外部用户提供FTP连接)。如果此时采用的是自动操作模式的话,则在连接这个数据通道的过程中FTP服务器会主动跟边界路由器的端口进行通信(因为FTP服务器认为这台边界路由器,其实就是NAT服务器,就是FTP客户段)。但是实际上不是,而且也有可能没有启用这个端口。为此客户端与FTP服务器之间的连接最终没有建立起来。所以说,如果采用主动操作模式的话,当FTP服务器部署在NAT等服务器后面的时候,则FTP服务器与客户端之间只能够建立命令连接通道,而无法建立起数据传输通道。如果FTP服务器与客户端之间还有防火墙的话,在连接的过程中也会出现以上类似的情况。
而如果是采用被动操作模式的话,是客户端主动跟服务期的20号端口进行连接的。为此在数据传输通道建立的过程中,即使中间有NAT服务器或者防火墙,也会准确无误的连接到FTP服务器的数据传输接口。所以说,如果在客户端与FTP服务器之间存在防火墙或者NAT服务器等类似设备的话,那么在FTP服务器部署的时候,最好采用被动操作模式。否则的话,很可能只能够建立命令连接通道,而无法进行数据传输。
FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
很多人误认为利用WINDOWS组件IIS来构建的FTP服务器没有实用价值,只能做一些测试和学习。主要是FTP服务的PORT和PASV两种连接模式下防火墙难以设置。对于PORT模式,客户端无法在此环境下运行,因为 FTP 服务必须向 FTP 客户端发出新的连接请求,防火墙会将这些连接检测为未经请求的连接尝试,并因此而将它们断开。防火墙管理员可能也不希望使用PASV模式 FTP 服务器,因为该 FTP 服务可以打开任何短暂的端口号。如果防火墙配置允许未经请求的连接完全访问所有的短暂端口,则可能会是不安全的。
从实用的角度来看,建立一个默认短暂端口范围有限制的PASV模式 FTP 服务方案应该是较好的选择。下面通过一个实例,说明如何在Windows 2003 中利用IIS组件架设PASV模式FTP服务。
1建立一个PORT模式的FTP服务
11安装“文件传输协议(FTP)服务”组件
安装步骤:
控制面板--->添加删除程序--->添加删除windows组件--->应用程序服务器--->Internet信息服务(IIS)--->文件传输协议(FTP)服务
将“文件传输协议(FTP)服务”复选框钩上,插入windows 2003安装盘或选择windows 2003安装路径,直至安装结束。
12FTP主目录及用户权限的配置
主目录:D:/soft/ftpup
拥有读写权限而不允许其它用户访问的用户:
ww1用户拥有 ww1目录的读写权限,位置在:D:/soft/ftpup/LocalUser/ww1
XX1用户拥有 XX1目录的读写权限,位置在:D:/soft/ftpup/LocalUser/XX1
允许匿名用户只读访问:
Everyone 拥有 public目录的只读权限,位置在:D:/soft/ftpup/LocalUser/public
创建 ww1和xx1用户并设置密码。
建立相应的目录,并设置对应的权限。
13创建FTP站点
通过“控制面板 ---> 管理工具 ---> Internet信息服务(IIS)管理器 ---> Internet信息服务--->本地计算机---> FTP 站点”标签,右击“FTP 站点”--->新建--->FTP 站点,进入FTP站点建立向导:站点描述--->IP地址和端口设置--->隔离用户--->FTP站点主目录(D:/soft/ftpup ),直到向导结束。
右击刚建立的FTP站点,在“安全帐户”选项卡上选中“允许匿名用户连接”。至此,一个PORT模式的FTP站点架设完成。
可以关闭防火墙在客户端进行测试是否符合要求。
2将FTP站点设置成PASV模式
21启用直接编辑元数据库
打开 IIS Microsoft 管理控制台 (MMC):控制面板 ---> 管理工具---> Internet信息服务(IIS)管理器 ---> Internet信息服务--->本地计算机
右击本地计算机节点,选择属性,选择启用直接编辑元数据库复选框。
22 修改端口号 方法 1 通过 ADSUTIL 脚本配置 PassivePortRange
运行cmdexe程序进入命令行模式,并输入以下命令:
C:/Inetpub/AdminScripts/adsutilvbs set /MSFTPSVC/PassivePortRange "5500-5550"
这样就将FTP服务器上TCP 默认短暂端口范围限制在5500-5550范围内,如果同时连接数量较多,可适当进行调整。
用以下命令查看PassivePortRange:
C:/Inetpub/AdminScripts/adsutilvbs get /MSFTPSVC/PassivePortRange 方法 2 通过修改配置文件 打开下面这个文件 : 1 C:/WINDOWS/system32/inetsrv/MetaBasexml 搜索 MaxConnections 这个字段 在 MaxConnections 下面新加一行被动模式的配置信息,修改后的配置文件为 LogType="1" MSDOSDirOutput="TRUE" MaxClientsMessage=" " MaxConnections="100000" PassivePortRange="5500-5550"
3windows 2003 中防火墙的设置
31打开FTP控制端口TCP 21(如果更改端口号,这里要做相应的更改)
在命令行输入:
NETSH FIREWALL ADD PORTOPENING TCP 21 FTPPort21
32打开PassivePortRange 5500-5550的TCP端口
建立以下批处理文件并运行(例如:ftpportbat):
ECHO OPENING FIREWALL PORTS 5500-5550
FOR /L %%I IN (5500,1,5550) DO NETSH FIREWALL ADD PORTOPENING TCP %%I FTPPort%%I
iisreset /restart
ECHO FINISHED
Pause
至此,整个服务架设完成,可在启用防火墙的情况下进行测试。
FTP是一种上传和下载用的软件。
定义如下:FTP(File Transfer Protocal),是用于Internet上的控制文件的双向传输的协议。同时,它也是一个应用程序。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
传输文件的一般步骤如下:
1在本地电脑上登陆到国际互联网,
2搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径)
3当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登陆到该主机或对方的个人电脑
4在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的东东或者下载别人授权共享的东东(这里的东东是指能放到电脑里去又能在显示屏上看到的东东)
5完成工作后关闭FTP下载软件,切断连接
为了实现文件传输,用户还要运行专门的文件传输程序,比如网际快车就有这方面的功能,其它还有很多专门的FTP传输软件,各有各的特色
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端口发送连接请求,建立一条数据链路来传送数据。 从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
FTP服务器端的注意事项
一、FTP服务器是公网IP,用公网动态域名;或是内网IP,用内网专业版TrueHost
1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)。
2、所有FTP服务器软件都支持PORT方式。至于PASV方式,大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件,也可以设置为只工作在PORT方式上。
3、为了PASV方式能正常工作,需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外,还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。
二、FTP服务器是内网IP,用内网动态域名标准版cmxnatproxy
这种情况下,FTP服务器不需要做特殊设置,只要支持PASV方式就可以了。大部分FTP服务器软件都支持PASV方式。
FTP客户端的注意事项
请注意:选择用PASV方式还是PORT方式登录FTP服务器,选择权在FTP客户端,而不是在FTP服务器。
一、客户端只有内网IP,没有公网IP
从上面的FTP基础知识可知,如果用PORT方式,因为客户端没有公网IP,FTP将无法连接客户端建立数据链路。因此,在这种情况下,客户端必须要用PASV方式,才能连接FTP服务器。大部分FTP站长发现自己的服务器有人能登录上,有人登录不上,典型的错误原因就是因为客户端没有公网IP,但用了IE作为FTP客户端来登录(IE默认使用PORT方式)。
作为FTP站长,有必要掌握FTP的基础知识,然后指导您的朋友如何正确登录您的FTP。
二、客户端有公网IP,但安装了防火墙
如果用PASV方式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,没有问题。反过来,如果用PORT方式登录FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截。如果要用PORT方式登录FTP服务器,请在防火墙上打开1024以上的高端端口。
0条评论