Um protocolo simplex para um canal com ruído

Os protocolos simples e stop-and-wait consideram uma linha livre de erros. Entretanto, a realidade mostra que as linhas sempre podem apresentar erros que causam alteração nos quadros transmitidos ou mesmo perda completa desses quadros. A primeira conseqüência desta realidade é a necessidade de sinalizar o nodo emissor que o quadro foi adequadamente recebido pelo nodo receptor. Esse mecanismo é normalmente denominado de confirmação (ACK  –  acknowledgement).

A primeira solução para esse problema é a utilização de um mecanismo de temporização no emissor associado com o mecanismo de confirmação. Se o emissor não receber, dentro de um tempo especificado, a confirmação da chegada correta de um quadro, este deve então ser reenviado. Essa solução, porém apresenta um problema: se o receptor recebe corretamente o quadro, ele envia sua confirmação. Caso esse quadro de confirmação se perca ou se danifique, o nodo emissor vai retransmitir o quadro já recebido e aceito. Isso leva a uma duplicação de quadros que deve ser detectada e convenientemente tratada de modo a não comprometer o serviço da camada

A segunda solução provê mecanismos para que o receptor seja capa de distinguir entre quadros novos e quadros retransmitidos: usa para tal um número de seqüência de quadros, além do mecanismo de temporização.  O número de seqüência, para este caso, necessita assumir apenas dois valores. Quando o emissor enviar um quadro N, significa que seu antecessor já foi confirmado. Se não chegar a confirmação desse quadro N, ele será retransmitido. Se chegar a confirmação, será transmitido o quadro N+1. Após receber um quadro N, o emissor estará sempre esperando um quadro N+1 ou o quadro N retransmitido. Desta forma, tanto no emissor quanto no receptor, bastam apenas dois valores para identificar quadros, podendo-se usar para isto apenas um bit (valores 0 e 1).