[e2e] FTP data port

John Day day at world.std.com
Mon Feb 26 12:10:27 PST 2001


>
>   *>
>Yes.  It had to do with supporting ARPANET TIPs (Terminal Interface
>Processors, essentially a terminal multiplexor glued onto an ARPANET
>IMP.)
>
>I think you will find this history recorded in the early RFCs about
>FTP.  Try going to http://www.rfc-editor.org/rfcsearch.html and
>search for "FTP".  Of the 69 document hits,, you would probably find
>a discussion of the TIP problem and user/server issues around
>1973.

The preferred method of locating the data socket in FTP was a fixed 
offset from the Telnet connection.  Since in NCP sockets were half 
duplex, even numbered sockets were inbound and odd outboud, or vice 
versa.  I don't remember which without digging it out to look it up.

However, the TIPs were really very constrained on memory and 
processor cycles and didn't have a file system or any standard way of 
dealing with other I/O devices attached to it.  (The TIP ran as the 
low priority task on the IMP.)  The idea was that a printer or a card 
reader (really, they were still in use) could be "hard-wired" to a 
particular port and the SOCK command (now the PORT command) was used 
to tell the server which Socket  the data connection was connected 
to.  All the local user then had to do was cause the TIP to be 
listening on the printer port.  (I think there were some TIPs that 
might have had  some specialized devices like some graphics box of 
some sort that was connected to other ports.)

FTP commands are the format they are for the same reason.  The TIP 
was so constrained that there was no user interface, so the FTP 
commands had be generated by the user at a terminal.  That is why 
they are 4 characters followed by a single variable length parameter 
terminated by a CRLF; or 4 characters, one or two fixed length 
(usually single character) parameters, and possibly a variable length 
parameter.

Many considered this the tail wagging the dog.  Frankly, the SOCK 
command should have been deleted as soon as the TIPs were gone.  One 
more kludge that has taken on a life of its own.  The application 
layer should never pass around IP addresses, any more than a program 
should pass around absolute memory addresses between different 
programs.

Now we have people who would think it would be a major crime to not 
have such architectural travesties.

Take care,
John




More information about the end2end-interest mailing list