Redes
O remetente, após estabelecer conexão, envia o pkt0 e inicia a temporização. O destinatário recebe o pkt0 e envia o ACK0. O ACK0 chega, porém foi corrompido. O remetente não faz nada com respeito a esse ACK e realiza o reenvio do pkt0 após o término do time-out. O destinatário recebe o pkt0, detecta a duplicação e envia outro ACK0. Desta vez o ACK0 não foi corrompido. O remetente recebe o ACK0 e envia o pkt1 e inicia a temporização. O remetente agora envia o pkt1 e inicia a temporização. O destinatário recebe o pkt1 e envia o ACK1. O ACK1 chega, porém foi corrompido. O remetente não faz nada com respeito a esse ACK e realiza o reenvio do pkt1, após o término do time-out. O destinatário recebe o pkt1, detecta a duplicação e envia outro ACK1. Desta vez o ACK1 não foi corrompido. O remetente recebe o ACK1 e encerra a conexão.
Exercício 2
Não há certeza de que nenhum erro de bit ocorreu na transmissão, mesmo que o resultado seja idêntico para o segmento UDP no remetente. Pois o UDP não implementa a detecção de erro, o calculo Checksum somente garante que o dado ira chegar, não a sua integridade.
Exercício 3
Analisando a partir do time-out, quando temos a perda de um pacote, temos duas possibilidades, se utilizarmos um time-out longo o reenvio do pacote pode sofrer um atraso maior, prejudicando a transmissão, se utilizarmos um time-out curto podem acontecer atrasos pelo fato de o destinatário ter que reenviar os ACK’s, mesmo que receba pacotes sem erros.
Com relação a ordem, todos os pacotes podem chegar corretamente ao destinatário, porém fora de ordem. Daí a seqüência ficaria, por exemplo: 92, 120, 100, 135, 141. O destinatário vai enviar os respectivos ACK’s, porém haverá uma lacuna entre a seqüência 92 e 120. Com isso o remetente reenvia o pacote de seqüência 100 novamente sendo que ele tinha sido recebido, porém fora da ordem. Se esse pacote 100 chegar muito tempo depois o remetente, mesmo armazenando os pacotes em um buffer, haverá a perda