REFERENCES
RFCs
This list of references comes from the README of the em-ftpd gem, which is licensed under the same MIT license as this gem, and is Copyright (c) 2008 James Healy
There are a range of RFCs that together specify the FTP protocol. In chronological order, the more useful ones are:
RFC-854 - Telnet Protocol Specification
RFC-959 - File Transfer Protocol
RFC-1123 - Requirements for Internet Hosts
RFC-1143 - The Q Method of Implementing TELNET Option Negotation
RFC-2228 - FTP Security Extensions
RFC-2389 - Feature negotiation mechanism for the File Transfer Protocol
RFC-2428 - FTP Extensions for IPv6 and NATs
RFC-2577 - FTP Security Considerations
RFC-2640 - Internationalization of the File Transfer Protocol
RFC-3659 - Extensions to FTP
RFC-4217 - Securing FTP with TLS
For an english summary that's somewhat more legible than the RFCs, and provides some commentary on what features are actually useful or relevant 24 years after RFC959 was published:
For a history lesson, check out Appendix III of RCF959. It lists the preceding (obsolete) RFC documents that relate to file transfers, including the ye old RFC114 from 1971, "A File Transfer Protocol"
There is a public test server which is very handy for checking out clients, and seeing how at least one server behaves.
How to reliably close a socket (and not lose data)
Why is my TCP not reliable by Bert Hubert