I have implemented a form of TFTP with client and server using TCP's Sliding Window scheme on top of UDP. Timeouts were calculated with a form of EWMA and the system is able to send both read and write requests. Images are encrypted using an XOR key that gets shifted every 64 bytes. Key exchange occurs in the handshake.
Measurements were made using two client-server pairs on the CS servers, one set was Altair client and Rho server, and Pi client with Gee server. Measurements were compared using simulated drops and no drops as windows of sizes 5, 25 and 50. An image of 1875419 bytes (around 1.9MB) called "pepper.jpg" was used for testing.
Throughput generally peaked in all cases with a window size 25, except in the case for Pi -> Gee with no drops, which peaked at window size 50. Throughput was lower in all cases when drops were introduced.