wconrad/ftpd

View on GitHub
doc/references.md

Summary

Maintainability
Test Coverage
# 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](http://tools.ietf.org/rfc/rfc854.txt) - Telnet Protocol
  Specification

* [RFC-959](http://tools.ietf.org/rfc/rfc959.txt) - File Transfer
  Protocol

* [RFC-1123](http://tools.ietf.org/rfc/rfc1123.txt) - Requirements for
  Internet Hosts

* [RFC-1143](http://tools.ietf.org/rfc/rfc1143.txt) - The Q Method of
  Implementing TELNET Option Negotation

* [RFC-2228](http://tools.ietf.org/rfc/rfc2228.txt) - FTP Security
  Extensions

* [RFC-2389](http://tools.ietf.org/rfc/rfc2389.txt) - Feature
  negotiation mechanism for the File Transfer Protocol

* [RFC-2428](http://tools.ietf.org/rfc/rfc2428.txt) - FTP Extensions
  for IPv6 and NATs

* [RFC-2577](http://tools.ietf.org/rfc/rfc2577.txt) - FTP Security
  Considerations

* [RFC-2640](http://tools.ietf.org/rfc/rfc2640.txt) -
  Internationalization of the File Transfer Protocol

* [RFC-3659](http://tools.ietf.org/rfc/rfc3659.txt) - Extensions to
  FTP

* [RFC-4217](http://tools.ietf.org/rfc/rfc4217.txt) -
  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:

* <http://cr.yp.to/ftp.html>

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](http://secureftp-test.com) 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](http://ia600609.us.archive.org/22/items/TheUltimateSo_lingerPageOrWhyIsMyTcpNotReliable/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable.html) by Bert Hubert

## LIST output format

* [GNU docs for ls](http://www.gnu.org/software/coreutils/manual/html_node/What-information-is-listed.html#What-information-is-listed)
* [Easily Parsed LIST format (EPLF)](http://cr.yp.to/ftp/list/eplf.html)