There are two connections made for an FTP session - control (port 21) and data (port 20). The normal behavior for FTP is for the client to connect to the server (again, port 21) and then the server opens the data connection back to the client. This breaks in a number of ways in environments using NAT, firewalls, etc. This traditional mode is known as active mode. Bear in mind that many commands that would seem like they'd be control traffic (i.e. listing a directory) actually require a working data connection.
Passive mode (PASV) is when the client specifies which port to use. This, in turn, allows NAT (in various forms) to open up a session and allow for data to pass. You need a client (and server) capable of supporting passive FTP.
It's all well explained here - http://slacksite.com/other/ftp.html