FTP中的两种模式

版权声明:本文为博主原创文章,转载请附上原文地址。 https://blog.csdn.net/nzjdsds/article/details/88085931

FTP协议要用到两个TCP连接 :

1.一个是命令链路,用来在FTP客户端与服务器之间传递命令;

2.一个是数据链路,用来上传或下载数据。

两种工作方式:PORT方式和PASV方式。

两种工作模式:主动模式和被动模式


无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连接。而主动模式与被动模式的差异主要体现在数据连结通道上

命令连接

当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接

当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接。如在客户端向服务器发起连接请 求的时候,客户端会随即的选择某个TCP端口来跟FTP服务器的21号端口进行连接,这主要是通过TCP三方握手来实现的。当三方握手完成之后,客户端与 服务器之间便建立了命令连接通道。不过这个通道的用途是非常有限的,其主要用来传输FTP的相关指令。如查看文件列表、删除文件等等,而不能够用来在客户 端与服务端进行文件传输。为此这个通道就被称之为命令通道。到客户端与服务器建立了连接之后,可能客户端暂时不需要进行数据传输。如只是需要查看目录下的文件或则其他相关的动作。此时之需要命令连接通道就可以完 成了。

数据连接

 如果此时客户端需要往FTP服务器上上传或者下载文件的话,就需要在客户端与服务器端再建立一条额外的数据传输连接。

主动模式

主动模式

主动模式的FTP是指服务器主动连接客户端的数据端口

Standard、Active 
主动模式是指服务器主动连接客户端的数据端口 
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

PORT(主动)这个方式需要在接上TCP 21端口后,服务器通过自己的TCP 20来发出数据。并且需要建立一个新的连接来传送档案。而PORT的命令包含一些客户端没用的资料,所以有了PASv的出现。

当客户端发出数据传输的指令之后(如上传数据或者下载文件),客户端会启用另外一个端口监听等待连接,并利用先前建立的命令连接通道告诉FTP服务器其监 听的端口号。然后FTP服务器会利用端口20和刚才的FTP客户端所告知的端口再次进行三方握手。三次握手成功后便建立了一条数据传输通道。注意此时数据 连结通道建立的过程中,是FTP服务器的20号端口主动连接FTP客户端的,为此这种连接方式就叫做主动模式。 
在主动操作模式下,FTP服务器的20号端口是主动同客户端联系,建立数据传输通道的 
PASV运行方式就是当服务器接收到客户端连接请求时,就会自动从端口1024到5000中随机选择一个和客户端建立连接传递数据。由于被动且自动建立连接,容易受到攻击,所以安全性差。

工作过程:

  1. 客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接

  2. 客户端开始监听 N+1端口;

  3. 服务端会主动以20端口连接到客户端的N+1端口。

优点:

服务端配置简单,利于服务器安全管理,服务器只需要开放21端口

缺点:

如果客户端开启了防火墙,或客户端处于内网(NAT网关之后), 那么服务器对客户端端口发起的连接可能会失败

被动模式

被动模式

被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。

在被动操作模式下,则FTP服务器是被动的等待,等待 客户段与其的20号端口建立连接 
被动模式是指服务器被动地等待客户端连接自己的数据端口 
在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORTP命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。 
(在vsftpd.conf中指定被动端口范围为4000-4500)

被动模式通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

PASV运行方式就是当服务器接收到客户端连接请求时,就会自动从端口1024到5000中随机选择一个和客户端建立连接传递数据。由于被动且自动建立连接,容易受到攻击,所以安全性差。 
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

   被动操作模式在建立命令连接通道的时候,跟主动操作模式是相同的。

用户需要进行数据传输的时候, 则FTP客户端会通过命令通道告诉FTP服务器,如会向服务器发出一个PASV指令。

服务期会选择自身的一个端口来进行监听连接(而在主动操作模式下是利用客户端的一个端口来进行监听连接),并再次利用命令连接通道告诉客户端“我为 你开启了哪个端口,你要建立数据连接的话就跟我的哪个端口联系”

客户端在接到这个信息后,就会在自己操作系统上选择一个数据连接的通信端口,与服务器提供的端口进行三方握手,并最终建立起可以进行数据传输的通道。

工作过程:

  1. 客户端以随机非特权端口连接服务端的21端口

  2. 服务端开启一个非特权端口为被动端口,并返回给客户端

  3. 客户端以非特权端口+1的端口主动连接服务端的被动端口

缺点:

服务器配置管理稍显复杂,不利于安全,服务器需要开放随机高位端口以便客户端可以连接,因此大多数FTP服务软件都可以手动配置被动端口的范围

优点:

对客户端网络环境没有要求

参照:https://blog.csdn.net/u012700515/article/details/50300377

           https://blog.csdn.net/qq_16038125/article/details/72851142

猜你喜欢

转载自blog.csdn.net/nzjdsds/article/details/88085931