Da quello che dici se ne deduce che stai lavorando al livello più "basso" e "crudo" possibile, ovvero direttamente a livello di socket. E questo porta al fatto che dovresti conoscere discretamente bene le specifiche del protocollo FTP.

Per la questione delle porte, FTP si avvale innanzitutto di una connessione di "controllo", che permane per tutta la sessione di comunicazione. Tipicamente è sulla porta 21, che è quella standard/tipica, ma nessuno vieterebbe di usarne un'altra purché server e client siano concordi nella scelta della porta. Su questa connessione viaggiano i comandi e le risposte ai comandi.

I dati veri e propri dei file trasferiti, invece dovranno viaggiare su una connessione di "dati", che viene aperta solo all'occorrenza del trasferimento. Poi comunque c'è la questione della modalità "attiva" o "passiva" (dipende chi dei due, client o server, inizia la connessione di dati).

Io direi che ti conviene partire da della documentazione che trovi a partire da:
http://en.wikipedia.org/wiki/Ftp

E comunque fare una gestione FTP a livello di socket è tutt'altro che "banale", sappilo.