As already said in many articles, blogs and forum messages, the Microsoft command-line FTP client does *not* support FTP passive mode. Therefore, as mentioned in my blog About the FTP Protocol Support in ISA Server, I use the free Standard Networks command-line FTP client MoveIt Freely to test out FTP passive mode.
Lately, I was contacted by some guys who claimed that by using the FTP commands ‘quote PASV’ or ‘literal PASV’ you could use FTP passive mode with the Microsoft command-line FTP client. As proof they supplied a logfile similar to the following one:
At first sight it looks they are right because we see in the FTP logging that the FTP server tells the client to contact 192.168.1.10 (the FTP server) on TCP port 1682 (6*256 + 146) for the data connection. Moreover, a subsequent data transfer seems to succeed. However, just before the start of the data transfer we see the line ‘200 PORT command successful’ which indicates that FTP active mode will be used. Taking a NetMon trace reveals the plain truth as shown in the figure below:
In frame #3 we see the FTP client (192.168.1.20) setting up the FTP control connection to the FTP server (192.168.1.10). In frame #14 we see the FTP client sending the PASV command to the server and in frame #15 the server responding correctly to this request. However, in frame #17 the FTP client request FTP active mode with the PORT command, followed by a request for a directory listing in frame #19. At last the actual data transfer starts at frame #21 with a connection request from the FTP server to the client. Clearly this is an FTP active mode data transfer.
As a conclusion we can say that the Microsoft command-line FTP client is capable of requesting FTP passive mode with the FTP commands ‘quote PASV’ or ‘literal PASV’ but does not act upon them. Nevertheless, those commands are useful in a server-to-server FTP transfer as explained in How to perform a server-to-server FTP transfer by using IIS.