FTP:为什么要使用PASV响应的IP?

时间:2018-04-22 17:28:08

标签: ftp protocols ipv4

当发送FTP命令" PASV"时,FTP服务器会响应有关可以建立数据连接的主机和端口的信息。

如果涉及NAT,则此主机信息可能会出现问题。有些客户通过比较建议的数据连接主机的IP与来自控制连接的IP来解决这个问题:如果在PASV之后建议的IP是本地的,而控制连接不使用本地的,则只有PASV给出的端口使用主机连接的IP时使用响应。

作为示例,请参阅Apache Commons实现:http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java?revision=1788985&view=markup#l3876

我现在的问题是:为什么要使用PASV答案的主持人?为什么不总是只使用PASV答案的端口但使用控制连接的主机?据我所知,这是它如何用IPv6完成的,但我从来没有用IPv4看到它。为什么呢?

1 个答案:

答案 0 :(得分:1)

在设计FTP时,有足够的IP地址,NAT不是一个需要考虑的事情。但FTP旨在支持客户端在两个不同系统之间启动传输的用例 - 请参阅RFC 959中的图2或了解详细信息File eXchange Protocol。对于这个用例,PORT或PASV命令中的IP地址必须与(单个)服务器不同。客户IP。

  

据我所知,这是用IPv6做的,但我从来没有用IPv4看到它。

您可能指的是EPRT和EPSV命令,它们只接受端口号而没有IP地址。虽然这些命令是由于原始PORT和PASV命令不支持IPv4而引入的,但这些命令可用于IPv6和IPv4,并且多个客户端也将这些命令用于IPv4,从而避免了PORT / PASV中错误IP地址的问题。 / p>