Vorrei ricreare ftp alla lettera.
Sai che c'è gia ftplib nella libraria standard?
http://docs.python.org/library/ftplib.html

Ho studiato il protocollo, ma non capisco come sapere quando il serever genera più di una risposta.
Se invia una sola risposta è ok.
Ma se ne invia un altra non la intercetto.
C'è un modo per sapere se ne sta inviando un altra???
C'è una logica tras un messaggio e l'altro???
In genere quando il client manda un comando segue una unica risposta del server.

E io come faccio a sapere quando il server ha finito di inviare??
Quando la "linea" che ti arriva termina con CRLF, ovvero "\r\n".
Come detto, se proprio hai intenzione di reinventare la ruota, tutto il codice te lo ritrovi gia pronto in ftplib.py, da cui puoi prendere spunto.
Se vuoi dare uno sguardo al codice di un server per vedere come funzionano le cose "dall'altro lato" puoi vedere la mia pyftpdlib (link in firma).

Saluti