喜旎果 发表于 2015-5-26 10:32:55

在命令行下实验FTP的PASV传输模式


FTP的PASV传输模式也叫被动传输模式。
  
  众所周知,标准FTP传输需要两个TCP/IP连接,有一个命令连接,用于FTP客户端与FTP服务器端之间传递命令和执行结果的信息。还有一个是数据连接,在执行上传文件或下载文件的操作用于传输文件的数据。
  命令连接的端口是固定的,连接是持续的,一般是21号端口。而数据连接的端口是随机的,是临时产生的,而且连接是随连随断的。
  
  rfc959的标准协议文档里的一个简易的例图,展现了这个构架。
  
                                          -------------
                                          |/---------\|
                                          ||   User||    --------
                                          ||Interface|| User |
                                          |\----^----/|    --------
                  ----------                |   |   |
                  |/------\|FTP Commands|/----V----\|
                  ||Server||   User||
                  ||PI||   FTP Replies||    PI   ||
                  |\--^---/|                |\----^----/|
                  |   |    |                |   |   |
      --------    |/--V---\|      Data      |/----V----\|    --------
      | File ||Server||User   || File |
      |System|    || DTP||   Connection   ||   DTP   ||    |System|
      --------    |\------/|                |\---------/|    --------
                  ----------                -------------
                  Server-FTP                   USER-FTP
  基于客户端主动发起数据端口,还是服务器端主动发起数据端口的不同,定义了FTP的两种传输模式,PORT和PASV。
  
  PORT模式,是客户端通过PORT命令告诉服务器端要使用的数据端口号,然后在客户端主动建立起这个端口的TCP/IP监听。在进行文件传输的操作时,服务器来连接客户端的这个数据端口,进行数据传输。
  
  PASV模式,是客户端通过PASV命令来告诉服务器端,想使用PASV方式传输数据。服务器收到命令之后,主动在服务器端建立一个数据端口的TCP/IP监听,并把这个数据端口号返回客户端。在进行文件传输的操作时,客户端去连接服务器端的这个数据端口,进行数据传输。
  
  为了更进一步的了解PASV传输模式,我在命令行下模拟了FTP的TCP/IP连接。
  在实验中,我使用的是IIS里面自带的FTP服务器(任何一款FTP服务器软件都可以,只要是支持PASV模式)。
  模拟FTP连接时,我用的是 telnet loalhost 21这样的方法来进行模拟TCP/IP连接。
  
  1. 在ftp服务器根目录(一般是C:\Inetpub\ftproot),创建一个叫test.txt的文件,随便往里面写点东西。
  

  

  
  
  2. 在命令行(CMD)窗口中开启命令端口的连接,输入命令的步骤如下
  (1)telnet localhost 21
  (2)user XXXX
页: [1]
查看完整版本: 在命令行下实验FTP的PASV传输模式