美文网首页
FTP 两种连接模式

FTP 两种连接模式

作者: 木人呆呆 | 来源:发表于2021-07-07 09:53 被阅读0次

简介

FTP协议要用到两个TCP连接, 一个是命令连接,用来在FTP客户端与服务器之间传递命令;另一个是数据连接,用来上传或下载数据。通常21端口是命令端口,20端口是数据端口。当混入主动/被动模式的概念时,数据端口就有可能不是20了。
无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连接。而主动模式与被动模式的差异主要体现在数据连结通道上。

命令连接

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

数据连接

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

主动模式

主动模式下,FTP客户端从任意的非特殊的端口(N > 1024)连入到FTP服务器的命令端口--21端口。然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1 >= 1024)端口发送命令给FTP服务器。服务器会反过来连接用户本地指定的数据端口,比如20端口。

FTP服务器命令(21)端口接受客户端端口(N > 1024)(客户端初始连接)
FTP服务器命令(21)端口到客户端端口(>1024)(服务器响应客户端命令)
FTP服务器数据(20)端口到客户端端口(>1024)(服务器初始化数据连接到客户端数据端口)
FTP服务器数据(20)端口接受客户端端口(>1024)(客户端发送ACK包到服务器的数据端口)

被动模式

在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
在被动模式下,FTP库户端随机开启(N>1024)的端口向服务器的21号端口发起连接,同时会开启 N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。有效端口可以是1到65535,但是小于1024的端口是为其他协议保留的。对于被动模式FTP,最好选择端口> = 50000。 (在vsftpd.conf中指定被动端口范围为5000-5500)

FTP服务器命令(20)接收客户端任何大于1024的端口(客户端的初始化连接)
FTP服务器命令(21)到客户端(>1024)的端口 (服务器响应到客户端的控制端口的连接)
FTP服务器数据(>1024)接收客户端(>1024)的端口(客户端初始化数据连接到服务器指定的任意端口)
FTP服务器数据(>1024)到客户端(>1024)的端口(服务器发送ACK响应和数据到客户端的数据端口)

不同工作模式的网络设置

主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。

在实际项目中碰到的问题是,FTP的客户端和服务器分别在不同网络,两个网络之间有至少4层的防火墙,服务器端只开放了21端口, 客户端机器没开放任何端口。FTP客户端连接采用的被动模式,结果客户端能登录成功,但是无法LIST列表和读取数据。很明显,是因为服务器端没开放被动模式下的随机端口导致。

由于被动模式下,服务器端开放的端口随机,但是防火墙要不能全部开放,解决的方案是,在ftp服务器配置被动模式下开放随机端口在 50000-60000之间(范围在ftp服务器软件设置,可以设置任意1024上的端口段),然后在防火墙设置规则,开放服务器端50000-60000之间的端口端。

主动模式下,客户端的FTP软件设置主动模式开放的端口段,在客户端的防火墙开放对应的端口段。

相关文章

  • FTP文件上传下载

    本文FTP连接的相关操作均在 被动模式 下进行。 FTP的端口分两种:控制端口和 数据端口 。 连接FTP服务器时...

  • FTP 两种连接模式

    简介 FTP协议要用到两个TCP连接, 一个是命令连接,用来在FTP客户端与服务器之间传递命令;另一个是数据连接,...

  • xftp连接提示无法打开,无法显示远程文件夹

    1. 问题原因 由于ftp连接模式port模式和pasv模式。设置ftp 链接模式为port (主动模式) ,ft...

  • FTP 的主动和被动

    FTP协议有两种工作方式:PORT(主动)方式和PASV(被动)方式。连接是采用哪种模式是由客户端采用哪种方式连接...

  • ftp实现原理以及抓包分析-末尾有彩蛋

    本文将针对ftp系统共介绍6部分,分别是ftp协议(双重连接:控制和数据连接),ftp的主动和被动模式(区别/使用...

  • FTP无法登陆发送"AUTH TLS"命令后提示“无法连接到服务

    这是由于FTP服务器不支持FTP over TLS的连接方式(FileZilla默认为此模式)。FTP over ...

  • 第一篇文章

    1、连接FTP服务器 /// /// 连接FTP服务器 /// /// FTP连接地址 /// 指定FTP连接成功...

  • FTP服务器搭建

    FTP服务器 一、FTP工作模式 1、主动模式 客户端连接到服务器的21端口 当客户端请求数据时,客户端连接到服务...

  • ftp为啥卡了30秒

    问题 通过vpc环境的云主机,使用ftp client 主动模式连接ftp server,总会卡30秒,然后才能继...

  • vsftpd server的两种配置策略

    核心点:ftp server主动模式、被动模式的差别以及适用场景。 FTP协议有两种工作方式:PORT方式和PAS...

网友评论

      本文标题:FTP 两种连接模式

      本文链接:https://www.haomeiwen.com/subject/pekoultx.html