The File Transfer Service
utilizes the quic-go implementation of the quic Protocol, built on top of UDP
. Since quic
allows for multiplexing of streams on a single connection, the service takes advantage of this to attempt to speed up file transfers by processing and writing the file from the remote host (the server) to the destination (the client).
A client attempts to make a connection to a host running the server implementation. If the connection is successful, the client then opens a stream, or multiple streams, to the host, requesting a file, along with providing the current stream and the total number of streams opened. The server determines the number of chunks and size of each chunk to then stream back to the client. Each stream is made aware of its start offset and the size of the chunk it is processing.
0RTT has also been enabled, which reduces the number of handshakes needed to make a secure connection.
A server and client implementation are both provided. For usage and configuration, check CMD.