O protocolo RDT3.0 não lida inerentemente à reordenação de mensagens. Seu mecanismo central depende da numeração e reconhecimento da mensagem seqüencial para garantir uma entrega confiável, * assumindo que * as mensagens cheguem em ordem. Se as mensagens forem reordenadas pela rede, o RDT3.0 falhará.
O diagrama abaixo ilustra essa falha. Simplificaremos o diagrama, concentrando -se nos aspectos cruciais da reordenação de mensagens e na quebra do protocolo.
`` `
+--------+rede (reordenação)+--------+
| Remetente | ----------------------------> | Receptor |
+--------+<--------------------------+--------+
| |
| Pacote 2 (seqnum =1) |
V ^
+--------+-------> [Rede] <-------+--------+
| | | Pacote 1 (seqnum =0)
| Pacote 1 (seqnum =0) |
+--------+-------> [Rede] <-------+--------+
+-------------------++-----------------+
| Ações do remetente | | Ações do receptor |
+-------------------++-----------------+
| Envia o pacote 1 | | Recebe o pacote 2 (seqnum =1) - inesperado! |
| Envia o pacote 2 | | (O pacote 2 está fora de ordem, o RDT3.0 não lida com isso) |
| | | O receptor está aguardando a sequência número 0. |
+-------------------++-----------------+
^ |
| (O tempo limite eventualmente ocorre no remetente se nenhum ACK for recebido) |
| V
| Retransmites do remetente pacote 1 | O receptor finalmente recebe o pacote 1 (seqnum =0) - mas ainda assim potencialmente problemático devido a duplicações se o ACK foi perdido.
`` `
Explicação: 1.
remetente: Envia o pacote 1 (seqnum =0) e o pacote 2 (seqnum =1).
2.
Rede: A rede recordes os pacotes, fornecendo o pacote 2 antes do pacote 1 ao receptor.
3.
receptor: O receptor espera o pacote 1 (seqnum =0), mas recebe o pacote 2 (seqnum =1). O design do RDT3.0 determina que ele descartará o pacote 2 porque não é o número de sequência esperado. Não enviará um ACK para o pacote 2 porque está fora de ordem.
4.
Falha: Os tempos de remetente aguardam um ACK para o pacote 1 (ou possivelmente o pacote 2, dependendo da implementação do tempo limite). Ele retransmissão, levando a uma duplicação potencial no receptor. O receptor pode ter problemas de processamento dos pacotes duplicados e de sequenciamento corretamente, se um mecanismo para lidar com isso não foi implementado.
ponto crucial: O RDT3.0 conta com a rede subjacente para entregar pacotes na ordem em que foram enviados. Se os pacotes de reordenar a rede, o mecanismo de reconhecimento simples do protocolo quebrará, resultando em entrega de dados não confiáveis. Para lidar com a entrega fora da ordem, um protocolo mais sofisticado (como o mecanismo de janela deslizante do TCP ou um protocolo explicitamente projetado para lidar com reordenação) seria necessário.