FTP文件传输协议两种模式-主动模式和被动模式

TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另外一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操做系统无关。假设两台计算机经过ftp协议对话,而且能访问Internet, 你能够用ftp命令来传输文件。每种操做系统使用上有某一些细微差异,可是每种协议基本的命令结构是相同的。
 

  FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。数据库

 

  1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,若是在远程机器上运行的不是UNIX,当文件传输时ftp一般会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。服务器

 

  可是经常有这样的状况,用户正在传输的文件包含的不是文本文件,它们多是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件以前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。网络

 

  2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即便目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。数据结构

 

  若是你在ASCII方式下传输二进制文件,即便不须要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式通常假设每一字符的第一有效位无心义,由于ASCII字符组合不使用它。若是你传输二进制文件,全部的位都是重要的。)若是你知道这两台机器是一样的,则二进制方式对文本文件和数据文件都是有效的。并发

 

  5. FTP的工做方式工具

 

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

 

  下面介绍一个这两种方式的工做原理:操作系统

 

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

 

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

 

  不少防火墙在设置的时候都是不容许接受外部发起的链接的,因此许多位于防火墙后或内网的FTP服务器不支持PASV模式,由于客户端没法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登录FTP服务器,由于从服务器的TCP 20没法和内部网络的客户端创建一个新的链接,形成没法工做。

 

  FTP软件能够更好的帮助你管理FTP目录 提供更系统的工具

 

  FTP工具推荐使用 cuteftp

 

  主动和被动模式FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开而且监听一个端口以创建链接。在这种状况下,客户端因为安装了防火墙会产生一些问题。因此,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就能够绕过客户端安装了防火墙的问题。

 

  一个主动模式的FTP链接创建要遵循如下步骤:

 

  客户端打开一个随机的端口(端口号大于1024,在这里,咱们称它为x),同时一个FTP进程链接至服务器的21号命令端口。此时,源端口为随机端口x,在客户端,远程端口为21,在服务器。

 

  客户端开始监听端口(x+1),同时向服务器发送一个端口命令(经过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号而且已准备好今后端口接收数据。这个端口就是咱们所知的数据端口。

 

  服务器打开20号源端口而且创建和客户端数据端口的链接。此时,源端口为20,远程数据端口为(x+1)。

 

  客户端经过本地的数据端口创建一个和服务器20号端口的链接,而后向服务器发送一个应答,告诉服务器它已经创建好了一个链接。

FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开而且监听一个端口以创建链接。在这种状况下,客户端因为安装了防火墙会产生一些问题。因此,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就能够绕过客户端安装了防火墙的问题。[4]
一个主动模式的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响应和数据到客户端的数据端口)

编辑本段协议结构

命令
描述
ABOR
中断数据链接程序
ACCT <account>
系统特权账号
ALLO <bytes>
为服务器上的文件存储器分配字节
APPE <filename>
添加文件到服务器同名文件
CDUP <dir path>
改变服务器上的父目录
CWD <dir path>
改变服务器上的工做目录
DELE <filename>
删除服务器上的指定文件
HELP <command>
返回指定命令信息
LIST <name>
若是是文件名列出文件信息,若是是目录则列出文件列表
MODE <mode>
传输模式(S=流模式,B=块模式,C=压缩模式)
MKD <directory>
在服务器上创建指定目录
NLST <directory>
列出指定目录内容
NOOP
无动做,除了来自服务器上的认可
PASS <password>
系统登陆密码
PASV
请求服务器等待数据链接
PORT <address>
IP 地址和两字节的端口 ID
PWD
显示当前工做目录
QUIT
从 FTP 服务器上退出登陆
REIN
从新初始化登陆状态链接
REST <offset>
由特定偏移量重启文件传递
RETR <filename>
从服务器上找回(复制)文件
RMD <directory>
在服务器上删除指定目录
RNFR <old path>
对旧路径重命名
RNTO <new path>
对新路径重命名
SITE <params>
由服务器提供的站点特殊参数
SMNT <pathname>
挂载指定文件结构
STAT <directory>
在当前程序或目录上返回信息
STOR <filename>
储存(复制)文件到服务器上
STOU <filename>
储存文件到服务器名称上
STRU <type>
数据结构(F=文件,R=记录,P=页面)
SYST
返回服务器使用的操做系统
TYPE <data type>
数据类型(A=ASCII,E=EBCDIC,I=binary)
USER <username>>
系统登陆的用户名
标准 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
文件名不容许