Cursos / Redes de Computadores / Redes de Computadores I / Aula

arrow_back Aula 13 - Protocolo TCP

Controle de erros

Ainda devido ao fato dos pacotes TCP serem transmitidos dentro de pacotes IP, eles podem ser perdidos. Para resolver esse problema, um mecanismo de confirmação dos pacotes recebidos é acrescentado ao esquema de numeração dos pacotes TCP.

Para cada pacote transmitido o TCP inicia um temporizador. Cada pacote precisa ser confirmado pelo receptor antes que o temporizador expire. Se o temporizador expirar sem que a confirmação tenha chegado, o pacote é retransmitido pelo próprio TCP. Isso significa que o TCP guarda todos os pacotes ainda não confirmados em um buffer para que possa retransmiti-los caso seja necessário. Isso tudo ocorre sem que a aplicação que enviou o dado tome conhecimento. Ou seja, suponha que sua aplicação solicitou ao TCP que transmitisse uma mensagem e o TCP a colocou em um pacote que foi enviado para a máquina destino. Caso esse pacote fosse perdido, o próprio TCP detectaria e o retransmitiria, sem que seu programa precisasse ficar sabendo que o erro aconteceu! Isso simplifica bastante a escrita de programas.

Uma coisa importante é que quando se confirma um pacote de número X, isso significa que todos os pacotes com números menores que X são também confirmados. Portanto, se uma máquina recebeu os pacotes 1, 2 e 4, ela não pode confirmar o 4, pois isso estaria confirmando também os pacotes 1, 2 e 3. Nesse caso, ela confirmaria os pacotes 1 e 2, e esperaria o pacote 3 chegar para poder confirmar o pacote 4.

Os pacotes de confirmação contêm o número do pacote sendo confirmado e o flag ACK definido (valor 1). Entretanto, uma confirmação pode ser enviada em um pacote exclusivo para essa finalidade, ou seja, em um pacote que não contêm dados, ou pode ser enviada em um pacote contendo dados. Como todos os pacotes TCP contêm o campo de flag ACK e o campo para informar o número do pacote confirmado, normalmente, as confirmações são enviadas pegando carona nos pacotes de dados. Só se envia um pacote exclusivo para confirmação quando não há dados para transmitir no sentido da conexão que se necessita transmitir a confirmação.

Há alguns anos foi incorporado um novo mecanismo ao TCP que permite também o reconhecimento seletivo de pacotes, ou seja, sem que o reconhecimento implique no reconhecimento dos pacotes com números menores.

Veja aqui a explicação, em vídeo, sobre o controle de erros no TCP

Versão 5.3 - Todos os Direitos reservados