When performing an FTP transfer, a delay can be incurred between two
consecutive messages from the server to the client, perhaps due to Nagle or
slow start. For example:
1 RETR file --------------->
2 <------------ Transfer starting
3 (transfer occurs on another socket)
4 <------------ Transfer completed
The problem is that the server’s TCP stack doesn’t send message #4 until
some delay has elapsed, although it’s not clear whether it needs the ACK
from #2 due to slow start or is waiting for the Nagle delay.
If many small files (or directory listings) are transferred in succession,
the process runs many times slower than it could.
This same problem occurs on Microsoft IIS5, but it does NOT occur on a Linux
(RedHat 9) system that was tested. If it’s as simple as having the FTP
daemon set NODELAY on the socket, is such an option available, either
through ftpd or inetd? (And, if not, could it be added, please?)