[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