Bryan Olson wrote: > Steve Holden wrote: > >>Grant Edwards wrote: >> >>>>Well, one of ftpd implementations I have here (C code from RTEMS) does >>>>this: >>>> >>>> /* anchor socket to avoid multi-homing problems */ >>>> data_source = info->ctrl_addr; >>>> data_source.sin_port = htons(20); /* ftp-data port */ >>>> if(bind(s, (struct sockaddr *)&data_source, sizeof( [...] >>>> if(connect(s, [...] > > > [...] > >>I suspect that the reason for the comment is simply that the connection >>out from the server is being bound to the same interface (*IP address*) >>that the inbound request arrived on. That way it's less likely that the >>data stream will be routed differently from the control (port 21) stream. > > > That still doesn't explain why they pass 20 as the port number. > To specify an IP address, but let the system choose an arbitrary > open port, use: > > bind((specific_IP, 0)) > > As I mentioned if the posting you made a partial quote from, the original specification of port-mode FTP has the server making a data connection from its port 20 to the client port identified by the client's PORT command.
regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list