It is much more complicated than using two ports. There are two modes of ftp, active and passive.
In active mode the client connects to the server on port 21. It then issues a PORT command which tells the server which port on the client to connect to for data. The server connects to destination port on the client using port 20 as the source port.
In passive mode the client connects to the server on port 21 and issues the PASV command. The server chooses a random port for data and responds back to the client with a PORT command indicating this port. The client then connects to this destination port on the server using a random high port as the source port.
In active mode the client connects to the server on port 21. It then issues a PORT command which tells the server which port on the client to connect to for data. The server connects to destination port on the client using port 20 as the source port.
In passive mode the client connects to the server on port 21 and issues the PASV command. The server chooses a random port for data and responds back to the client with a PORT command indicating this port. The client then connects to this destination port on the server using a random high port as the source port.