title: In protocol design, why would you ever use 2 ports?
body: <p>When a TCP Server does a socket accept on a port, it gets a new socket to work with that Client.<br>
  The accepting socket remains valid for that port and can accept further clients on that port. </p>
  
  <p>Why did the original FTP specification <a href="http://www.faqs.org/rfcs/rfc959.html" rel="noreferrer">RFC 959</a> decide to create both a control port and a data port?  </p>
  
  <p><strong>Would there be any reason to do this in a similar custom protocol?</strong></p>
  
  <p>It seems to me that this could have been easily specified on a single port.  </p>
  
  <p>Given all the problems with firewalls and NATS with FTP, it seems that a single port would have been much better. </p>
  
  <p>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. </p>