RFC 478
FTP server-server interaction - II
FTP Server-Server Interaction-II β¨
Okay bestie, here's the header info π. This is RFC 478, "FTP Server-Server Interaction-II," from the Network Working Group. It was written by B. Bressler and B. Thomas at BBN (NIC 14947) and dated 26 March 1973. The title block doesn't list anything it obsoletes or updates, so it's a standalone doc π .
At the recent FTP meeting at BBN in Cambridge, server-server interaction came up as a topic π«Ά. The typical setup is a user (A) chatting with two servers (B, C) who wants to grab a file from one site (B) and send it to the other (C).
+------+
| USER |
| A |
/+------+\
control control
/ \
+------+ +------+
|SERVER| DATA |SERVER|
| B |----------->| C |
+------+ +------+
The meeting consensus was that B and C needed some way to be aware of each other π. They also needed to set up a data connection without making each other queue up RFCs for local sockets that don't exist yet. Totally fair, no cap π.
The solution everyone liked was a command called PASSIVE (PASV?) π¦. Here's what we figured it means and how it'd get used.
Third party connections would be set up with the SOCK command, which says "Be prepared to use socket S at Host H to establish your data connection." Then there's PASV, which says "open your data socket for listening, and upon receipt of a transfer command wait for an RFC rather than initiating one." π§
A positive acknowledgement (ACK) to PASV means the data socket is open for listening πΈ. When an RFC for that data socket shows up after the server has ACKed a PASV, the server should respond with a matching RFC to open the data connection. This assumes the incoming RFC matches any previous SOCK commands, if there were any. Main character energy, but make sure the details line up π.
+---------------+
| |
+-------| USER PROCESS |-------+
| | A | |
telnet +---------------+ telnet
| |
| |
+-----------+ +-------------+
| |--------> -------->| |
| SERVER |data sockets data socket| SERVER |
| B | Sb Sc | C |
| |<-------- <--------| |
+-----------+ +-------------+
USER A TO SERVER B USER A TO SERVER C
__________________ __________________
A->B SOCK HOST-C SKT- Sc A->C SOCK HOST-B SKT- Sb
B->A ACK C->A ACK
A->B PASV
B->A ACK
A->B STOR A->C RTRV
Here's the play-by-play π¬:
- Once PASV has been ACKed, the two data transfer commands can be sent in either order. The LISTENING action happens with the PASV command, so the order doesn't matter π₯.
- The user knows the socket numbers Sc and Sb as the data sockets, as the protocol specifies π.
- A SOCK command doesn't have to go to the same Host that gets the PASV. Still, sending it to him gives you security, since the incoming RFC can be checked π«Ά.
Heads up: sending the SOCK command to the same Host that gets the PASV is what lets the incoming RFC be checked. That's the security perk, so don't skip it if you care about that π.
RB/nlg π
[This RFC was put into machine readable form for entry] [into the online RFC archives by Helene Morin, Via Genie 12/1999]
π¦ where this page comes from
- ietf: rfc478 1973-03
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms