FTP协议详解

发表于2015-03-23 20:25  |  次阅读  |  0条评论  |   作者:siru90

 FTP协议简介     
       FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上控制文件的双向传输。同时,它也是一个应用程序(Application)。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

FTP协议工作原理
     FTP有两个过程:一个是控制连接,一个是数据传输。  

     FTP协议不像HTTP协议一样需要一个端口作为连接(默认时HTTP端口是80,FTP端口是 21)。FTP协议需要两个端口,一个端口是作为控制连接端口,也就是FTP的21端口,用于发送指令给服务器以及等待服务器响应;另外一个端口用于数据传输端口,端口号为20(仅用PORT模式),是用建立数据传输通道的,主要作用是从客户向服务器发送一个文件,从服务器向客户发送一个文件,从服务器向客户发送文件或目录列表。

FTP协议作用FTP协议作用
  FTP协议的主要作用就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。  

      FTP协议可以实现以下目标:  

     1.可靠和高效的传输数据  

     2.鼓励间接或者隐式的使用远程计算机  

     3.促进文件的共享(计算机程序或数据)  

     4.向用户屏蔽不同主机中各种文件存储系统(Filesystem)的细节

FTP协议工作方式
    FTP支持两种工作方式:一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。  Standard模式FTP的客户端发送PORT命令到FTP服务器。

    Standard模式FTP客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。  

    Passive模式FTP的客户端发送PASV命令到FTPServer。Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。


FTPS
      FTP over SSL,常被称为 Secure FTP,它是构建在 SSL/TLS(RFC5246,Secure Socket Layer/Transport Layer Security)协议之上的,通过 SSL/TLS 对信道进行加密传输,它本身还需要 FTP 服务器的支持,又分为显示和隐式。
      显示 FTPS 又称为 FTPES,是对 FTP 标准的扩展,客户端必须显示请求(客户端发送"AUTH TLS"命令)对 FTP 会话加密。如果客户端不要求加密,服务器也允许非加密通讯。服务器可以选择允许或拒绝未请求 TLS 的连接。这个扩展协议在推荐标准 RFC4217 中定义。
    隐式 FTPS 是过期的 FTP 标准,需要所有客户端都使用 SSL 或 TLS 连接。为了保持兼容性,隐式 FTPS 控制连接使用 990 端口,数据连接使用 989 端口。注意,隐式 FTPS 未在 RFC4217 中定义。
FTPS 支持如下验证方式:
1、密码验证
2、SSL 证书验证
 
SFTP
      SFTP(SSH File Transfer Protocol)是 SSH 2.0 的一项扩展协议,提供安全的文件访问、文件传输和文件管理功能。SFTP 协议的目标是通过任何可靠的数据流提供安全的文件传输功能,本身不提供验证和安全,需要依赖底层协议。SFTP 协议虽然在 SSH2 协议中描述,但它是通用的,独立于 SSH2 套件中的其余协议。SFTP 常作为 SSH2.0 实现的一个子系统。
 
      SFTP 除了也有文件传输功能,有相似的命令集外,与 FTP 是无关的。与标准 FTP 不同,它加密命令和数据,以防止在网络上明文传输密码和敏感信息。功能上与 FTP 相似,但由于使用了不同的协议,不能使用标准的 FTP 客户端与 SFTP 服务器通讯,也不能使用SFTP 客户端与 FTP 服务器通讯。SFTP 是二进制协议,所有的命令(请求)都打包成二进制消息后发送到服务器,服务器回复二进制应答包。与早期的仅支持文件传输的 SCP 协议(SSH1.x 中的)相比,SFTP 协议支持更广泛的远程文件操作。SFTP 客户端增加的额外功能包括:恢复中断的传输、目录列表、远程文件删除。SFTP 服务器支持大多数平台。SSH 1 是过时的,不安全的,不推荐使用。FTPS 和 SFTP 相同点在于都组合使用了对称加密算法(DES/3DES,AES 等)、非对称加密算法(RSA,DSA)和密钥交换算法。不同之处在于他们的验证方式,FTPS 使用 X.509 证书验证,而 SFTP 使用 SSH 密钥。X.509 证书包含公钥和证书持有者信息,通过这些信息,另一方可以校验证书本身的完整性和验证证书持有者。SSH 密钥仅包含公钥。
SSH 服务器提供了如下 3 种验证方式:
1、密码验证
2、密钥验证
3、密码加密钥验证
关于验证方式的选择,推荐使用密钥验证,其安全性高于单纯的密码验证。
目前使用最广泛的 SFTP 服务器是 OpenSSH。
 
FTP over SSH
FTP over SSH refers to the practice of tunneling a normal FTP session over an SSH connection.
 

本站关键字:sunny90 web开发 数据库 移动开发 服务器 Nginx Mysql PHP
Copyright © sunny90版权所有 power by sunny90.com  
湘ICP备14012284号-1,粤公网安备 44030602000307号