.1 Reliable Data Transfer
Reliable Data Transfer
Objetivo: criar uma conexão totalmente confiável entre 2 processos.
O RDT funciona através de fazer a saída de dados de um processo de maneira confiável, em um canal não confiável de dados.
Suposição: o canal de comunicação é perfeitamente confiável.
- Sem erros de bits.
- Sem perda de pacotes.
Funcionamento:
- O remetente simplesmente envia os dados pelo canal.
- O receptor apenas recebe os dados e os entrega para a camada superior.
Eventos:
- rdt_send(): remetente envia um pacote.
- rdt_rcv(): receptor recebe o pacote.
- deliver_data(): receptor entrega o dado recebido à aplicação.
RDT 2.0
Bits dentro de um pacote podem ser corrompidos. Entretanto, vamos assumir que nao ha perda de pacotes, ainda que haja bits corrompidos.
[!question] Como recuperar-se dos erros?
Protocolo de feedback
- Confirmação (
ACK) -> receptor avisa que pacote chegou bem - Negativa de Confirmação (
NAK) -> receptor avisa explicitamente ao remetente que pacote tinha erros. Os protocolos de retransmissão são chamados de ProtocolosARQ(Automatic Repeat reQuest)
Emissor
![[1744205046_grim.png]]
Receptor
![[1744205195_grim.png]]
Erros do RDT 2.0
Emissor nao sabe oq aconteceu no receptor, portanto, nao pode so retransmitir, pois pode haver pacotes duplicados.
ACKS e NAKS podem ser corrompidos
RDT 2.1
Ha um novo numero de sequencia no pa, para evitar duplicacao (0 ou 1).
Emissor retransmite pacote atual se ACK/NAK for recebido cm erro.
Receptor descarta pacote duplicado
![[1744205865_grim.png]]
Receptor
![[1744206705_grim.png]]
RDT 3.0
Agora, nao mais assumiremos que o canal nao pode perder pacotes.
[!question] como lidar e como detectar perdas de pacotes
Solucao: Emissor aguarda o ACK que esta em transito por um determinado tempo. Exige o uso de timers.
- se ha um evento de timeout, o pacote eh retransmitido.
[!question] o que acontece se o ack estiver apenas atrasado?
A retransmissão, nesse caso, seria duplicado. Então, o numero de sequencia tem q ser enviado pelo receptor, junto ao ACK.
![[1744207316_grim.png]]

