FTP协议连接模式的分析

网络 网络管理
FTP协议连接模式是我们本篇文章主要讲述的内容。首先我们来对这个协议的基本情况做了大致的介绍,在模式介绍中我们分为PORT模式和PASV模式两部分来分别讲述。

对于网络来说,现在它已经不是单独的一个事物了。在融合了多种应用的现下,它和其它协议的融合让其协议结构更为多样。现在我们就来简单学习一下FTP协议的链接模式。起初,FTP协议并不是应用于IP网络上的协议,而是ARPANEt网络中计算机间的文件传输协议, ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时,FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将 文件存贮在别的系统。例如,如果某用户运行Web服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远 程站点也需安装Web服务器)。当用户完成工作后,可使用FTP协议将文件传回到Web服务器。采用这种方法,用户无需使用Telnet登录到远程主机进行工 作,这样就使Web服务器的更新工作变得如此的轻松。

FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP 传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的"三次握手"的过程,它带来的意义在于客户与服务器之间的连接是可靠的, 而且是面向连接,为数据的传输提供了可靠的保证。

下面,让我们来看看,一个FTP客户在和服务器连接是怎么样的一个过程(以标准的FTP端口号为例)。

首先,FTP并不像HTTP协议那样,只需要一个端口作为连接(HTTP的默认端口是80,FTP的默认端口是 21),FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端 口号为20(仅PORT模式),是用来建立数据传输通道的,主要有3个作用:

从客户向服务器发送一个文件。

从服务器向客户发送一个文件。

从服务器向客户发送文件或目录列表。

FTP协议连接模式

其次,FTP的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,这里都是相对于服务器而言的。

PORT模式

当FTP客户以PORT模式连接服务器时,他动态的选择一个端口号(本次试验是6015)连接服务器的21端口, 注意这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的 资源服务。当经过TCP的三次握手后,连接(控制信道)被建立。现在用户要列出服务器上的目录结构(使用ls或dir命令),那么首先就 要建立一个数据通道,因为只有数据通道才能传输目录和文件列表,此时用户会发出PORT指令告诉服务器连接自己的什么端口来建立一条数据通道(这个命令由 控制信道发送给服务器),当服务器接到这一指令时,服务器会使用20端口连接用户在PORT指令中指定的端口号,用以发送目录的列表。当完成这 一操作时,FTP客户也许要下载一个文件,那么就会发出get指令,请注意,这时客户会再次发送PORT指令,告诉服务器连接他的哪个"新"端口,你可以 先用netstat -na这个命令验证,上一次使用的6044已经处于TIME_WAIT状态。当这个新的数据传输通道建立后(在微软的系统中,客户端通常会使用 连续的端口,也就是说这一次客户端会用6045这个端口),就开始了文件传输的工作。

PASV模式

然而,当FTP协议的客户以PASV模式连接服务器时,情况就有些不同了。在初始化连接这个过程即连接服务器这个过程和 PORT模式是一样的,不同的是,当FTP客户发送ls、dir、get等这些要求数据返回的命令时,他不向服务器发送PORT指令而是发送PASV指 令,在这个指令中,用户告诉服务器自己要连接服务器的某一个端口,如果这个服务器上的这个端口是空闲的可用的,那么服务器会返回ACK的确认信息,之后数 据传输通道被建立并返回用户所要的信息(根据用户发送的指令,如ls、dir、get等);如果服务器的这个端口被另一个资源所使用,那么服务器返回 UNACK的信息,那么这时,FTP客户会再次发送PASV命令,这也就是所谓的连接建立的协商过程。为了验证这个过程我们不得不借助CUTEFTP Pro这个大家经常使用的FTP客户端软件,因为微软自带的FTP命令客户端,不支持PASV模式。虽然你可以使用QUOTE PASV这个命令强制使用PASV模式,但是当你用ls命令列出服务器目录列表,你会发现它还是使用PORT方式来连接服务器的。

责任编辑:佟健 来源: it168
相关推荐

2010-06-09 15:40:01

FTP文件传输协议

2010-06-24 15:07:20

FTP协议

2010-06-24 15:02:43

FTP协议

2010-06-24 13:26:53

FTP协议

2014-06-05 17:02:41

FTP

2010-06-28 14:51:25

FTP协议命令

2010-06-28 14:38:12

FTP协议

2010-06-30 16:00:01

FTP协议

2010-07-01 12:22:40

ftp命令FTP协议

2011-03-07 13:12:58

FileZilla

2010-06-28 17:00:58

FTP传输模式

2010-08-06 09:17:37

RIP路由协议

2010-07-13 16:12:15

DHCP协议

2010-06-23 15:19:35

eMule协议

2010-07-08 12:42:34

UDP协议

2011-03-17 12:25:55

iptables ft

2010-09-06 09:26:07

PPP协议

2010-07-01 15:55:54

FTP文件传输协议

2011-04-18 10:54:19

FTP协议

2010-06-28 14:25:16

点赞
收藏

51CTO技术栈公众号