ETNyx: Ani tak to není - u aktivního spojení je potřeba opravdu pouze jeden port - TCP 21 nad kterým se server-klient domluví na následném postupu pro odesílání dat. Celý vtip je ten, že v active módu klient MUSÍ mít veřejnou IP a otevřené UDP porty, které si právě nad TCP 21 domluví se serverem. Což je problém, protože většina klientů je většinou za NAT nepodporující průchod FTP protokolu (v linuxu a iptables se toto řeší pomocí modulů ip_conntrack, ip_conntrack_ftp, ip_nat_ftp, etc.), případně mají vlastní firewall, který uzavře vnější porty světu. Právě proto se využívá passive spojení, kdy server distribuuje do světa určitý počet volných portů vymezených právě pro FTP spojení, s klientem se nad TCP 21 domluví, který port je otevřený, klient se na něj připojí a server mu zde poskytne požadovaná data.
Celá problematika je ještě trochu složitější, ale zjednodušeně je to tak. Co se týče portu 20 (ftp-data) - je to archaické, nepoužívané a z 99% nefunkční.