I find that helping people troubleshoot FTP connectivity issues is much easier if they have PowerShell installed. I can just have them run the NetCmdlets ftp cmdlets with the –debug switch, which displays a trail of information about the communication over the wire. In this way you can see every command send to the server and every response coming back from the server, including what ports a server is attempting to use for ftp data connections. Very often ftp transfer connectivity errors are the result of firewall/ftp server configuration error, and being able to see this raw communication without a network sniffer is quite handy.
In the example above, you can see that the get-ftp cmdlet sends the PASV command in order to transfer some data (a directory listing). The server response to the PASV command shows the ip and port that the client should connect to (10.0.1.1 is the ip address, and (225*256) + 79 is the port). That IP address (10.0.1.1) is obviously wrong since I am attempting to FTP to a server outside of my local network. This is one example of a misconfigured FTP server.
Right away, with one PowerShell command, I know the cause of the problem and where to go to fix it.