When a TCP Server does a socket accept on a port, it gets a new socket to work with that Client.
The accepting socket remains valid for that port and can accept further clients on that port.
Why did the original FTP specification RFC 959 decide to create both a control port and a data port?
Would there be any reason to do this in a similar custom protocol?
It seems to me that this could have been easily specified on a single port.
Given all the problems with firewalls and NATS with FTP, it seems that a single port would have been much better.
For a general protocol implementation, the only reason I could think that you would want to do this is so that you can serve the files from a different host than the commands are going to.