文件传输协议从Wikipedia,自由的百科全书文件传输协议(FTP)是一个标准的网络协议,用来在一个基于TCP的网络从一台主机到另一主机传输文件,如互联网。
它经常被用来上传到一个公共的Web 托管服务器的网页和其他文件,由私人发展机。
FTP是建立在客户端- 服务器架构,并在客户端和服务器之间使用单独的控制和数据连接。
[1]在协议中,FTP 用户可能使用明文自己的身份标志,通常以用户名和密码的形式,但如果服务器被配置为允许匿名也可以连接。
为了隐藏(加密)您的用户名和密码,以及加密内容的安全传输,您可以尝试以客户端使用SSH文件传输协议。
第一个FTP客户端应用程序是交互式的命令行工具,执行标准的命令和语法。
在今天使用的许多流行的桌面操作系统的图形用户界面的客户,至今已开发包括一般的网页设计方案,如Microsoft Expression Web中,如CuteFTP的专业FTP 客户端。
内容1协议概述▪1.1与HTTP的差异▪1.2通信和数据传输▪1.3登陆▪1.4 匿名FTP▪1.5穿越NAT和防火墙2 FTPmail3 Web浏览器支持▪3.1句法4 安全4.1 安全的FTP4.1.1 FTPS4.1.2 SFTP4.1.3 通过SSH到达FTP (不从SFTP)▪ 5 FTP命令的列表▪ 6 FTP 回应码▪7 参见▪8 参考文献▪9 进一步阅读▪10 外部链接协议概述与HTTP的区别FTP运行在OSI模型的应用层,用于使用TCP / IP传输文件。
要做到这一点,FTP服务器必须正在运行,并等待传入的请求。
然后客户端的计算机能够沟通服务器上的端口21。
就此,称为控制连接,在会议期间仍然开放。
第二个连接,称为数据连接,可以由服务器从20端口打开谈判的客户端端口(主动模式),或从任意端口到客户谈判的服务器端口(被动模式)传输文件数据。
控制连接用于会议管理,示例命令,识别和使用像一个telnet协议的客户端和服务器之间交换的密码。
例如“RETR命令名”从服务器到客户端传输指定的文件。
由于这两个端口结构,FTP被认为是一个彻头彻尾的带协议,而不是如HTTP协议波段。
通信和数据传输该协议在RFC959中指定,这里总结。
服务器响应超过三位数的状态代码的ASCII控制连接与可选的文本消息。
例如“200”(或“200 OK”)意味着最后一个命令是成功的。
数字代表的响应代码,而可选的文本代表一个人可读的解释或要求(如Need帐户的)。
通过控制连接发送中断消息,可以中止正在进行传输文件数据的数据连接。
使用端口21开始被动连接的插图FTP可以运行在主动或被动模式下,它决定了如何建立数据连接。
在主动模式下,客户端创建一个TCP控制连接到服务器,把客户端的IP地址和任意一个客户端的端口号发送给服务器,然后等待,直到服务器启动通过TCP数据连接到客户端的IP地址和客户端的端口号。
在客户端在防火墙后面,无法接受传入的TCP连接的情况下,可以使用被动模式。
在这种模式下,客户端使用控制连接发送PASV命令到服务器,然后接收服务器的IP地址和从服务器的服务器的端口号,然后客户端使用打开数据连接任意客户端端口收到的服务器的IP地址和服务器的端口号。
这两种模式在1998年9月进行了更新,以支持IPv6。
下面将介绍了当时的被动模式,更新扩展的被动模式。
在网络上传输数据,可用四个数据表示:▪ASCII mode: 用于文本。
数据转换,如果需要的话,在传输之前从发送主机的字符变成“8位ASCII”,(再次,如果有必要)到接收主机的字符表示。
因此,这种模式相比于纯文本数据文件包含不适当的数据。
▪图像模式(一般称二进制模式):发送机发送文件的字节,收件人一旦接受,存储接受的的字节流。
(图像模式已建议为实现所有的FTP).▪EBCDICmode:使用主机之间使用EBCDIC字符集的纯文本。
否则这种模式类似于ASCII模式。
▪本地模式:允许两台电脑使用相同的设置发送专有格式的数据,而无需将其转换为ASCII对于文本文件,可提供不同的格式控制和记录结构选项。
这些功能旨在协助包含Telnet或ASA的格式的文件。
数据传输,可以做到在任何三种模式:▪流模式:数据作为一个连续的数据流发送,减轻FTP做任何处理。
相反,所有的处理是留给到TCP。
无尾的文件指标是必要的,除非数据被划分成记录。
▪块模式:FTP分解成若干块(块头,字节数,数据字段)的数据,然后传送到TCP。
▪压缩模式:使用一个单一的算法(通常运行长度编码)对数据进行压缩。
登陆FTP登录使用正常的用户名和密码授权访问方案。
使用USER命令发送到服务器,用户名和密码发送PASS命令。
如果服务器接受由客户提供的信息,服务器将发送一个问候到客户端,会议将开始。
如果服务器支持的话,用户可能会在没有提供登录凭据的情况下登陆进,但服务器可能批准此类会议的机会有限。
匿名FTP提供FTP服务的主机提供匿名FTP访问。
在提示用户名时,用户通常以“无名氏”(在一些FTP服务器小写和大小写是敏感)帐户登录进入服务。
虽然用户通常被要求发送他们的电子邮件地址代替密码,但实际执行上所提供的数据没有验证。
许多以提供软件更新为目的的FTP主机将提供匿名登录。
穿越NAT和防火墙当FTP服务器连接到客户端,由客户端发送PORT命令后正常传输数据。
这是NAT和防火墙,不允许从Internet对内部主机的连接问题。
对于NAT,是一个额外的并发症,在PORT命令中的IP地址和端口号的代表性,是指内部主机的IP地址和端口,而不是公共的IP地址和端口的NAT。
对这个问题有两种方法。
一个是FTP客户端和FTP服务器使用PASV命令,这将构成从FTP客户端向服务器建立数据连接。
这被广泛用于现代的FTP客户端。
另一种方法是为NAT的PORT命令改变的价值观,为此目的而使用应用级网关。
FTPmailFTP访问受到限制时,一个ftpmail服务可以用来规避问题。
ftpmail服务器,解析传入的电子邮件发送到列印电子邮件包含要执行的FTP命令,执行请求的FTP命令,并传回任何下载的文件作为附件的电子邮件。
这个服务不如FTP客户端灵活,因为它不可能交互式的查看目录或发出任何修改命令。
此外,也有邮件服务器的大文件附件通过不了的问题。
在未来的日子,当一些用户的唯一的互联网接入是通过BBS或在线服务,如网关通过电子邮件服务。
这时,因为大多数互联网用户随时访问到FTP,此过程将不再广泛使用。
Web浏览器支持最常见的网页浏览器可以检索FTP服务器上的文件,虽然他们可能不支持FTPS 协议,如扩展。
当提供的FTP的URL而非HTTP的URL时,访问远程服务器上的内容的方式类似于访问其他Web内容。
一个全功能的FTP客户端可以以一种称作FireFTP的扩展形式运行在Firefox上。
句法FTP URL语法描述在RFC1738中,采取的形式:ftp://[<user>[:<password>]@]<host>[:<port>]/<url-path>[13](The bracketed parts are optional.) For example:ftp:///mydirectory/myfile.txtor:ftp://user001:secretpassword@/mydirectory/myfile.txt更多指定的用户名和密码的详细资料,可在浏览器的文档中找到,例如,Firefox和Internet Explorer。
默认情况下,大多数网页浏览器使用被动(PASV)模式,而最终用户更容易穿越防火墙。
安全FTP没有被设计成一个安全协议—特别是以今天的标准—而且有许多安全隐患。
1999年5月,RFC2577的作者列出一个以下漏洞问题:▪反弹攻击▪欺骗攻击▪蛮力攻击▪数据包捕获(嗅探)▪用户名保护▪端口偷窃FTP无法为流量加密;所有的传输都是明文,用户名,口令,命令和数据可以很容易地被任何在网络上进行数据包捕获的人捕获。
这个问题在许多互联网协议规范(如SMTP,TELNET,POP和IMAP)设计之前很常见,如TLS或SSL加密机制的建立。
这个问题的一个共同的解决方案是使用“安全”,TLS保护的不安全的协议(如FTPS的FTP,Telnet的通过Telnet等)或不同的版本,更安全的协议,可以处理的工作,如SFTP/ SCP的工具,包括最安全Shell协议的实现。
安全的FTP安全转移,在一个点或另一个被称为“安全FTP”的文件有几种方法。
FTPS明确的FTPS是对允许客户端请求,FTP会话进行加密的FTP标准的扩展。
这是通过发送“验证TLS”命令完成的。
服务器可以允许或拒绝连接不要求TLS的选项。
此协议的扩展定义在拟议的标准:RFC 4217. 隐含的FTPS的是过时的FTP标准,需要使用的SSL或TLS连接。
它被指定使用不同的端口,相比于普通FTP。
调用安全的方法两个独立的方法可以保证FTP客户端使用客户端的安全性:显式或隐式。
明确的方法,是使一个传统的兼容实现感知FTPS的客户端可以调用以不破坏整体FTP功能与非FTPS的支持ftps服务器的安全。
隐式方法需要FTPS的服务器的所有客户端知道,SSL是要在会议上使用,,因而是不符合非了解FTPS的客户。
Explicit(显式)EXPLICIT模式(也就是FTPES),FTPS的客户必须“明确要求”FTPS的服务器的安全和加强双方商定的加密方法。
如果客户端不要求安全,FTPS的服务器可以允许客户端继续在不安全的模式中,或拒绝/限制连接。
FTP验证和安全性谈判机制下的RFC2228,包括新的FTP命令的AUTH。
虽然这个RFC没有明确定义所需的任何安全机制,例如SSL或TLS,它需要FTPS 的客户端挑战与FTPS服务器相互已知的机制。
如果FTPS的客户挑战有着未知安全机制的FTPS服务器,FTPS的服务器将响应AUTH命令,错误代码为504(9不支持)。
客户可确定的机制是通过查询的壮举命令FTPS的服务器支持,即使服务器不一定需要诚实的披露他们支持什么样的安全级别。
调用FTP服务器安全性的常用方法包括验证TLS和AUTH SSL。
在后来的RFC4217,FTPS的规范要求,客户总是使用的AUTH TLS方法谈判。
RFC还建议FTPS的服务器来接受草案机制的AUTH TLS-C。
Implicit(隐式)谈判不允许在隐FTPS的配置下进行。
客户端会立即挑战具有SSL / TLS ClientHello消息的FTPS服务器。
如果FTPS的服务器没有收到这样一条消息,服务器应断开连接。
为了保持与现有non-TLS/SSL-aware FTP客户端的兼容性,隐式FTPS将会从众所周知的IANA端口990/TCP监听FTPS控制通道,向着989/TCP FTPS的数据通道。