Alguma transferência se inicia com um pedido de leitura ou escrita de um arquivo, o qual também serve para pedir uma conexão.
Se o servidor reconhece o pedido, a conexão é aberta e o arquivo é enviado num bloco de tamanho fixo de 512 bytes.
Cada pacote de dados contém um bloco de dados e deve ser reconhecido por um pacote de acknowledgment antes que o próximo pacote possa ser enviado.
Um pacote de dados menor que 512 bytes sinaliza a terminação de uma transferência.
Se um pacote consegue se perder na rede, o receptor indicará time out e poderá retransmitir seu último pacote ( o qual pode ser dados ou um reconhecimento). Isto motiva ao transmissor do pacote perdido a retransmitir o pacote perdido. O transmissor tem que guardar apenas um pacote para retransmissão, desde cada passo de reconhecimento garante que todos os pacotes mais anteriores tenham sido recebidos.
Notar que as duas máquinas envolvidas na transferência são consideradas transmissoras e receptoras. Uma envia dados e recebe reconhecimento, a outra envia reconhecimento e recebe dados.
Muitos erros são causados pela terminação da conexão. Um erro é sinalizado enviando um pacote de erro. Este pacote não é reconhecido nem retransmitido (i.e., um servidor TFTP ou usuário pode terminar depois enviando uma mensagem de erro) assim o outro terminal da conexão não deve recebê-lo. Portanto os timeout são usados para detectar tais terminais quando o pacote de erro foi perdido.
Os erros são causados por três tipos de eventos: