4 ms·
FTP predates full-duplex. You simply could not receive and transfer on the same port, so two were opened for each task. FTP is a protocol from the 1970s before
by chungy 5y ago
FTP predates full-duplex. You simply could not receive and transfer on the same port, so two were opened for each task. FTP is a protocol from the 1970s before TCP/IP existed. It has a lot of warts and really shouldn't be used on the internet anymore. :)
- throw0101a 5y ago"Before TCP/IP" = NCP. > The original specification for the File Transfer Protocol was written by Abhay Bhushan and published as RFC 114 on 16 April 1971. Until 1980, FTP ran on NCP, the predecessor of TCP/IP.[2] The protocol was later replaced by a TCP/IP version, RFC 765 (June 1980) and RFC 959 (October 1985), the current specification. * https://en.wikipedia.org/wiki/File_Transfer_Protocol https://en.wikipedia.org/wiki/File_Transfer_Protocol Unlike TCP or UDP, NCP was not duplex: > NCP preceded the Transmission Control Protocol (TCP) as a transport layer protocol used during the early ARPANET. NCP was a simplex protocol that utilized two port addresses, establishing two connections, for two-way communications. An odd and an even port were reserved for each application layer application or protocol. The standardization of TCP and UDP reduced the need for the use of two simplex ports for each application down to one duplex port.[1] * https://en.wikipedia.org/wiki/Network_Control_Program https://en.wikipedia.org/wiki/Network_Control_Program So the original transport layer that FTP relied on necessitated two ports, and when the move to a newer transport layer occurred the use of two ports was carried over for simplicity's sake. And several decades later that design still exists. > FTP needs two ports (one for sending and one for receiving) because it was originally designed to operate on Network Control Program (NCP), which was a simplex protocol that utilized two port addresses, establishing two connections, for two-way communications. An odd and an even port were reserved for each application layer application or protocol. * https://en.wikipedia.org/wiki/File_Transfer_Protocol https://en.wikipedia.org/wiki/File_Transfer_Protocol Per RFC 114, responses from the server are considered a data type: when a user sends a command to the server, sometimes the response is a status update ('MKDIR successful'†) and sometimes the response is the requested file. The data structure of the response has fields to say what's coming back on the data channel for the requested transaction. † MKDIR was not a command, just using it as an modern example.
- Jweb_Guru 5y agoFunnily enough, the even/odd sendr/receiver reservation, and duplex optionality, have both made a comeback in QUIC :) Albeit with stream ids rather than ports.