Ligação de dados

Delimitação, CRC, controlo de fluxo e retransmissão com Stop-and-Wait, Go-Back-N e Selective Repeat.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Uma trama transporta um pacote entre equipamentos vizinhos. O recetor precisa de identificar onde começa e acaba e de verificar se deteta erros; delimitar, detetar e recuperar são operações diferentes. Ethernet descarta tramas com erros detetados, enquanto outros protocolos acrescentam confirmações, ACK, e recuperação por retransmissão, ARQ.

Delimitação e stuffing

Uma trama pode indicar comprimento, usar delimitadores especiais ou assinalar limites na codificação física. Com flag de início e fim, os dados nunca podem parecer flags.

No byte stuffing, precede bytes especiais com escape e transforma-os segundo a regra do protocolo. No bit stuffing de HDLC, o emissor insere um zero depois de cinco uns consecutivos entre flags, incluindo o CRC, e o recetor remove esse zero. O stuffing acontece depois de formar o conteúdo protegido e sai antes de o verificares.

Exemplo. Com flags 01111110, a sequência interior 01111110 nunca pode viajar como está, pois seria lida como limite. Se os dados contiverem cinco uns seguidos, por exemplo ...011111..., o emissor insere um zero: ...0111110.... O recetor, entre flags, remove o zero que se seguir a cinco uns. Cinco uns seguidos de zero no canal representam assim dados, não o fim da trama.

Não uses diretamente a dimensão do ficheiro para calcular o tempo de transmissão: inclui cabeçalhos, controlo de erros e escapes. Num byte stuffing, a sobrecarga depende dos bytes efetivamente presentes, não de uma percentagem universal.

Paridade, checksum e CRC

A paridade simples deteta qualquer número ímpar de alterações, mas falha com dois. Uma checksum soma unidades segundo um algoritmo. Um CRC interpreta bits como coeficientes de um polinómio binário e divide módulo 2, isto é, somar e subtrair são XOR sem transportes.

Para gerador GG de grau rr, acrescenta rr zeros à mensagem DD, divide D 2rD\,2^r por GG e coloca o resto de rr bits no fim. D 2rD\,2^r representa deslocar os bits da mensagem rr posições para a esquerda, não multiplicar números numa divisão decimal. A palavra transmitida fica divisível por GG.

Exemplo próprio. Mensagem 1101, gerador 1011 de grau 3. Acrescentamos três zeros e alinhamos o primeiro 1 do gerador com o primeiro 1 ainda por eliminar:

  1101000
⊕ 1011000
= 0110000
⊕ 0101100
= 0011100
⊕ 0010110
= 0001010
⊕ 0001011
= 0000001

O resto já tem menos de quatro bits significativos, por isso a divisão termina. Escrevemo-lo com três bits, 001, e transmitimos 1101001.

Calcular bit a bit com registos

Um circuito pode fazer a mesma divisão enquanto os bits chegam. Cada registo guarda um bit do resto; os bits entram à direita, em C0, e avançam para a esquerda a cada passo, enquanto o bit que sai de C2 volta às ligações XOR. Para 1011, isto é, x3+x+1x^3+x+1, há XOR à entrada de C1 e de C0; se o retorno for 0, o XOR mantém o bit, e se for 1, troca-o.

Na geração, entram a mensagem e três zeros, e no fim os registos contêm 001. Na verificação, entra a palavra recebida completa, mensagem seguida do CRC, sem acrescentar zeros; altera um bit da trama e acompanha o resto. O circuito começa sempre a zero; esta demo mostra a divisão dos slides, sem as convenções adicionais de CRC usadas por protocolos concretos.

CRC: 001Trama: 1101001

Mensagem + 3 zeros
1101000
Retorno: 0C20C100C001Entrada1

Passo 0/7. Os registos começam a zero.

Todos os passos

G(x) = x^3 + x + 1. Grau 3, 3 registos.

Estado antes e depois de cada bit
PassoEntradaAntesRetornoDepois
110000001
210010011
300110110
411101110
501101111
601111101
701011001

Até 32 bits de mensagem. Gerador de 2 a 9 bits, começando e terminando em 1.

Resto zero não prova ausência de erro. Um erro múltiplo do gerador passa despercebido. Uma rajada vai do primeiro ao último bit alterado, incluindo bits corretos intermédios. Um CRC de grau rr com termo constante 1 deteta rajadas até rr; outras garantias dependem do polinómio e do comprimento. A aproximação 2−r2^{-r} exige um modelo de erros adequado.

A distância mínima de um código é a menor distância de Hamming entre duas palavras válidas, isto é, o menor número de bits diferentes. Um código de distância d deteta até d−1 alterações e, com descodificação apropriada, pode corrigir até ⌊(d−1)/2⌋\lfloor(d-1)/2\rfloor alterações; isto não significa que qualquer verificador CRC faça essa correção.

Na paridade bidimensional, há verificações por linha e coluna. Um erro isolado pode ser localizado na interseção das verificações que falham, mas quatro erros nos cantos de um retângulo mantêm as paridades e podem passar despercebidos.

A deteção não corrige a trama. O recetor descarta-a ou pede uma retransmissão conforme o protocolo.

Stop-and-Wait e o bit alternado

O emissor envia uma trama e espera confirmação. Se o temporizador expirar, retransmite, porque um ACK ausente não distingue trama perdida de ACK perdido.

Números 0 e 1 impedem entregar duas vezes uma retransmissão. Se o recetor já entregou 0, volta a confirmá-lo sem entregar de novo e espera 1.

Define a convenção antes de seguir um traço. Aqui RR(n) significa «estou pronto para receber a trama n». Depois de receber 0 corretamente, o recetor envia RR(1). Outros enunciados podem confirmar explicitamente a última trama recebida, mudando a numeração do ACK.

O diagrama acompanha o emissor, com mais dados para enviar após cada confirmação. Um timeout mantém o bit da trama; só a confirmação esperada permite avançar. Cada envio reinicia o temporizador.

Eficiência sem perdas

Se a trama leva tf=L/Rt_f=L/R a transmitir, a propagação num sentido é tpt_p, e o ACK leva tat_a, o ciclo sem processamento é tf+2tp+tat_f+2t_p+t_a. A utilização para Stop-and-Wait é:

U=tftf+2tp+ta.U=\frac{t_f}{t_f+2t_p+t_a}.

Com L=8000L=8000 bits, R=1R=1 Mbit/s, tp=20t_p=20 ms e ACK desprezável, tf=8t_f=8 ms e U=8/48=1/6U=8/48=1/6. Se só 7600 bits forem dados úteis, o débito útil é 7600/0,048≈1583337600/0{,}048\approx158333 bit/s.

Uma janela de WW tramas permite várias em trânsito. Sob estas mesmas hipóteses, a fração ideal de tempo com transmissões úteis é U=min⁡(1,Wtf/(tf+2tp+ta))U=\min(1,Wt_f/(t_f+2t_p+t_a)). Com W=6W=6, a ligação pode ficar ocupada continuamente. Com perdas, retransmissões e temporizadores reais, esta expressão já não basta.

Go-Back-N e Selective Repeat

PropriedadeGo-Back-NSelective Repeat
Trama fora de ordemHabitualmente descartadaGuardada dentro da janela
ConfirmaçõesCumulativasIndividuais ou seletivas
RetransmissãoTrama em falta e posteriores pendentesSó tramas em falta
Memória no recetorMenorMaior, reordena antes de entregar
Limite usual com mm bitsW≤2m−1W\le2^m-1W≤2m−1W\le2^{m-1} para janelas iguais

Traço. O emissor envia 0, 1, 2 e 3. A trama 1 perde-se. Em Go-Back-N, o recetor entrega 0 e descarta 2 e 3. O emissor retransmite 1, 2 e 3 quando o protocolo o determinar. Em Selective Repeat, o recetor guarda 2 e 3 e, ao chegar 1, pode entregar 1, 2 e 3 por ordem.

Com dois bits, os números são 0, 1, 2 e 3. Considera Selective Repeat com janela três. O emissor envia 0, 1 e 2; o recetor entrega-os e avança, mas todas as confirmações se perdem.

PontaJanela após a perda dos ACKsEstado
Emissor0, 1, 2Ainda espera confirmação, pode repetir 0
Recetor3, 0, 1Já entregou 0, 1 e 2, aceita números da janela nova

Uma repetição de 0 pertence à janela atual do recetor e pode parecer dados novos. O emissor não avançou; foi o recetor que avançou antes de as confirmações chegarem. Com janela dois, depois de entregar 0 e 1, o recetor espera 2 e 3, que não se sobrepõem à janela antiga, e a condição 2W≤2m2W\le2^m separa as duas janelas. Pressupõe ainda que tramas antigas não sobrevivem indefinidamente a várias voltas da numeração.

Resolver traços

Regista após cada evento: base da janela, próximo a enviar, pendentes, próxima esperada e dados entregues. Distingue chegar, ser confirmado e ser entregue, porque um duplicado pode ser confirmado sem ser entregue.

Calcula o tempo de timeout a partir da transmissão e do caminho do ACK, com a margem definida no enunciado. Um temporizador demasiado curto cria retransmissões inúteis; um demasiado longo atrasa a recuperação. Quando o enunciado inclui perdas probabilísticas, usa as hipóteses dadas, em vez de multiplicar uma eficiência sem perdas por um fator arbitrário.

Terminar uma transferência finita

A eficiência anterior descreve um fluxo prolongado. Num bloco curto, o arranque, a última janela incompleta e o instante pedido fazem diferença: receber o último bit não é receber o último ACK.

Considera dez tramas iguais, janela de três, transmissão de 2 ms por trama e propagação de 4 ms por sentido. Não há perdas, processamento nem duração de ACK; cada trama recebe confirmação imediata, cumulativa. O primeiro ACK chega em 2+2×4=102+2\times4=10 ms, depois chegam os seguintes espaçados de 2 ms. Os timeouts não expiram.

Tramas, numeradas pela ordem de envioInícios no emissorFins no recetorACKs no emissor
1, 2, 30, 2, 4 ms6, 8, 10 ms10, 12, 14 ms
4, 5, 610, 12, 14 ms16, 18, 20 ms20, 22, 24 ms
7, 8, 920, 22, 24 ms26, 28, 30 ms30, 32, 34 ms
1030 ms36 ms40 ms

Entre 6 e 10 ms, o emissor espera porque já tem três tramas pendentes. À chegada de cada ACK, liberta uma posição e envia a próxima. A décima começa aos 30 ms, termina de sair aos 32, chega inteira aos 36 ms e fica confirmada aos 40 ms.

A utilização prolongada seria 3×2/10=0,63\times2/10=0,6. Dividir os vinte milissegundos de transmissão por 0,6 daria 33,33 ms, que não corresponde a nenhum dos dois instantes finais. Para um bloco finito, segue as transmissões e confirmações, incluindo a última janela.

A variante RR, REJ e SREJ

Nesta variante de Go-Back-N, a primeira trama fora de sequência desencadeia REJ(n), que pede a trama esperada n e a repetição das posteriores pendentes. As seguintes fora de ordem são descartadas sem repetir o mesmo REJ. Um timeout pode desencadear um pedido de RR para obter o estado do recetor. Num traço, segue a máquina de estados indicada no enunciado.

Em Selective Repeat, SREJ(n) pede apenas a trama n; RR(n) confirma o bloco contínuo até n−1. Isto permite confirmações cumulativas juntamente com rejeições seletivas. A tabela anterior descreve a família de protocolos; esta variante usa confirmação cumulativa com RR e rejeição seletiva com SREJ. Piggybacking inclui a confirmação em tramas de dados da direção contrária, reduzindo mensagens de controlo, mas exigindo gerir quando enviar uma confirmação sem dados para aproveitar.

Eficiência com erros

Define a=tp/tfa=t_p/t_f, erro de trama independente com probabilidade pep_e e ACK de duração desprezável. Uma tentativa de sucesso tem probabilidade 1−pe1-p_e. O número de tentativas A tem distribuição geométrica, P(A=k)=pek−1(1−pe)P(A=k)=p_e^{k-1}(1-p_e) e E[A]=1/(1−pe)E[A]=1/(1-p_e).

No Stop-and-Wait em que cada tentativa ocupa o mesmo ciclo:

USW=1−pe1+2a.U_{SW}=\frac{1-p_e}{1+2a}.

Em Selective Repeat, a expressão simplificada para a fração de entregas úteis é ESR=(1−pe)min⁡(1,W/(1+2a))E_{SR}=(1-p_e)\min(1,W/(1+2a)). Mede débito útil normalizado, não ocupação física do canal: com janela saturada, as retransmissões podem manter o canal ocupado a 100% enquanto as entregas descem. Para Go-Back-N, a repetição de tramas posteriores aumenta o desperdício:

UGBN={1−pe1+2ape,W≥1+2a,W(1−pe)(1+2a)(1−pe+Wpe),W<1+2a.U_{GBN}=\begin{cases} \frac{1-p_e}{1+2ap_e},&W\ge1+2a,\\ \frac{W(1-p_e)}{(1+2a)(1-p_e+Wp_e)},&W<1+2a. \end{cases}

Exemplo. a=2, W=5 e pe=0,1p_e=0{,}1. Stop-and-Wait: 0,9/5=0,18. Selective Repeat: 0,9. Go-Back-N: 0,9/(1+4×0,1)≈0,64290{,}9/(1+4\times0{,}1)\approx0{,}6429. Para obter débito de dados, multiplica ainda por R e pela fração útil da trama. Estes modelos não incluem todos os pormenores de timeout, perda de ACK ou correlação de erros.

Recuperação por salto e de extremo a extremo

ARQ por salto repete só onde houve perda, mas exige memória e controlo nesse salto. ARQ de extremo a extremo recupera nas pontas e pode repetir trabalho anterior. Podem coexistir, como Wi-Fi com TCP.

Num modelo ideal com K ligações iguais de capacidade C, perdas independentes p por ligação e retransmissão sem outras limitações, temos Csalto=C(1−p)C_{salto}=C(1-p) e Cextremos=C(1−p)KC_{extremos}=C(1-p)^K. Para K=5 e p=0,1, dão 0,9C e 0,59049C. A diferença cresce com o número de saltos e as perdas. Não aplica estes valores automaticamente a TCP real, que também depende de janela, RTT, congestionamento e temporizadores.

Combinar BER, janela e redundância

Um problema pode pedir várias decisões sobre a mesma ligação. Resolve primeiro tempo e janela, depois erro de trama e só no fim débito útil. O exemplo seguinte usa Selective Repeat ideal, com ACK desprezável e erros independentes.

Dados: R=4R=4 Mbit/s, L=4000L=4000 bits de dados por trama, propagação num sentido de 50 ms, BER pb=5×10−5p_b=5\times10^{-5} e seis bits de sequência. A janela máxima usual é W=26−1=32W=2^{6-1}=32.

  1. Tempo de transmissão: tf=L/R=1t_f=L/R=1 ms. A razão a=tp/tf=50a=t_p/t_f=50.
  2. Sem erros: U0=min⁡(1,32/(1+2×50))=32/101≈0,316832U_0=\min(1,32/(1+2\times50))=32/101\approx0{,}316832. O débito é 1,267327 Mbit/s, porque toda a trama contém dados neste exemplo.
  3. Erro de trama: pe=1−(1−pb)4000≈0,181273p_e=1-(1-p_b)^{4000}\approx0{,}181273. BER não é FER: basta um dos 4000 bits falhar.
  4. Com erros: U=(1−pe)U0≈0,259399U=(1-p_e)U_0\approx0{,}259399, logo o débito útil é RU≈1,037594RU\approx1{,}037594 Mbit/s.
  5. Janela para ocupar a ligação sem erros: W≥1+2a=101W\ge1+2a=101. Selective Repeat precisa de pelo menos oito bits, pois sete só permitem janela 64 e oito permitem 128. Aumentar a janela não elimina a perda de capacidade causada pelos erros.

Agora compara duas codificações corretoras FEC. Acrescentam redundância para corrigir certos erros sem pedir outra transmissão. Uma acrescenta 10% de bits e deixa FER 0,08. Outra acrescenta 30% e deixa FER 0,03. Estas FER são dados do problema depois da correção. Mantém a janela 32 e os 4000 bits úteis.

Débito útil com FEC

CodificaçãoBits transmitidostft_fUtilização UUFração útilDébito útil
Sem redundância40001 ms0,25939911,037594 Mbit/s
Mais 10%44001,1 ms0,3203174000/44004000/44001,164787 Mbit/s
Mais 30%52001,3 ms0,3983424000/52004000/52001,225666 Mbit/s

Em cada linha, recalcula aa com o novo tempo e usa Duˊtil=RU×Ldados/LtransmitidoD_{\text{útil}}=RU\times L_{dados}/L_{transmitido}. A redundância ocupa a ligação e aumenta cada trama. A segunda codificação ganha nestes dados; com outras FER residuais, a ordem pode mudar.

Se uma trama tem FER pep_e e são permitidas no máximo duas tentativas independentes, a probabilidade de entrega é 1−pe21-p_e^2. Isto mede sucesso até ao limite, não utilização nem débito. «Uma retransmissão» permite duas tentativas, a original e a repetição.

Do CRC da teoria ao BCC do laboratório

O CRC da teoria divide por XOR e deteta erros. O Lab 1 atual usa outro mecanismo, o BCC: BCC1 é A XOR C sobre endereço e controlo, BCC2 é o XOR de todos os bytes de dados, e o recetor confirma a igualdade.

O byte stuffing da porta série escapa 7E como 7D 5E e 7D como 7D 5D, calculado depois do BCC. O código-base abre a porta com O_NONBLOCK durante a configuração e depois retira essa flag; a leitura passa a bloqueante, com VMIN=1 e VTIME=0, por isso não existe um timeout de leitura de 0,1 s nessa configuração.

A API atual é llOpenTx, llOpenRx, llSend, llReceive, llCloseTx e llCloseRx; a API llopen, llwrite, llread e llclose aparece num documento complementar com outra interface, não no código-base de 2026/27. O relatório de eficiência arquivado indica 2025/2026 e também não descreve a edição atual.

Estado da receção no Lab 1

Para abrir a ligação, uma SET do emissor usa os bytes 7E 03 03 00 7E: flag, endereço, controlo, BCC1=03 XOR 03, flag. A UA correspondente usa 7E 03 07 04 7E. O recetor não deve procurar apenas os cinco bytes numa leitura: a biblioteca lê byte a byte e pode receber flags repetidas ou uma trama incompleta.

Byte aceiteEstado acumuladoPróximo campo esperado
7EInício reconhecidoEndereço
03Endereço guardadoControlo
03SET reconhecidaBCC1
00Cabeçalho verificadoFlag final
7ESET completaPode responder UA

Se o BCC1 estiver errado, ignora a trama sem agir sobre um controlo não verificado. O temporizador do emissor recupera a ausência de UA. Se a SET chegar de novo porque a UA se perdeu, o protocolo deve voltar a responder, permitindo que as duas pontas completem a abertura.

Durante a transferência, a ligação transporta tanto START e END como pacotes de dados da aplicação em tramas I, sem interpretar nomes, tamanhos ou campos da aplicação. Um duplicado pode voltar a receber RR, mas os seus dados não podem voltar a ser entregues.

Para testar, compara o ficheiro recebido com o original e depois introduz perdas em cada sentido. Cortar apenas Rx→Tx permite observar ACKs perdidos e duplicados, e o ficheiro final deve continuar igual. Sem recetor, o emissor deve terminar por falha ao esgotar o limite configurado, em vez de ficar a tentar indefinidamente. O guião atual também pede testes com ruído e interrupção temporária; a emulação ajuda a testar o protocolo, mas a demonstração docente usa portas série reais.

PassoCRC da liçãoBCC do Lab 1
EntradaMensagem mais r zerosEndereço, controlo e dados
ContaDivisão módulo 2XOR de bytes
VerificaçãoResto zeroBCC recalculado igual ao recebido

Simular uma perda na janela

Escolhe onde se perde uma das cinco tramas e compara a recuperação. O modelo usa janela de cinco e quatro bits de sequência, uma perda de dados e ACK sem perdas. Ignora propagação e temporizadores, porque mostra estado e retransmissões, não duração real.

  1. I(0)Entregue
  2. I(1)Entregue
  3. I(2)Perdida
  4. I(3)Descartada
  5. I(4)Descartada

Repetir I(2), I(3), I(4).

Após a recuperação, entregar os dados em falta pela ordem 2, 3, 4.

8 transmissões de dados para entregar as cinco tramas originais.

Com perda de I(2), Go-Back-N precisa de oito transmissões de dados no modelo: as cinco iniciais e as repetições 2, 3 e 4. Selective Repeat precisa de seis: repete apenas 2, aproveitando 3 e 4 guardadas. Se a perda for a última trama, ambos repetem apenas essa trama; a vantagem depende de onde ocorre a perda e de quanto já foi enviado.

Exercícios

Dividir por XOR

Mensagem 10101 e gerador 1011. Qual o resto do CRC, interpretado como número decimal?

Pista

Acrescenta três zeros antes de dividires.

Mais uma pista

Alinha o primeiro 1 do gerador com o primeiro 1 ainda presente no dividendo.

Solução

O gerador tem grau três, por isso começamos por 10101000. Em cada passo, alinhamos os primeiros uns:

  10101000
⊕ 10110000
= 00011000
⊕ 00010110
= 00001110
⊕ 00001011
= 00000101

O resto tem menos de quatro bits significativos, logo terminamos. Com três bits, é 101, que vale 5 em decimal. Substituímos os três zeros finais pelo resto e transmitimos 10101101; a divisão desta palavra completa por 1011 dá resto zero.

Voltar à explicação
Construir um erro que passa despercebido

A palavra válida 1101001 usa gerador 1011. Durante a transmissão, um padrão de erro 0001011 altera por XOR os bits correspondentes. Obtém a palavra recebida e o resto da divisão pelo gerador. Explica por que o CRC aceita dados alterados.

Pista
O erro também é um polinómio binário.
Mais uma pista
A soma módulo 2 de dois múltiplos do gerador continua a ser múltiplo.
Solução

O XOR dá 1100010. O padrão 0001011 é o próprio gerador alinhado aos quatro bits finais, logo é divisível por 1011. A palavra original e o erro têm resto zero, por isso a sua soma módulo 2 também tem resto zero. O recetor aceita a palavra, embora três bits tenham mudado. O CRC garante deteção de certos padrões, não integridade absoluta.

Confere a tua resposta:

  • Obtenho 1100010 por XOR.
  • Justifico resto zero pela divisibilidade do padrão de erro.
  • Distingo aceitação de ausência de erro.
Voltar à explicação
Dimensionar uma janela com perdas de RR

Adaptação do problema 1 da ficha docente. Uma ligação full-duplex de 2048 kbit/s tem distância de 300 km, propagação de 5 μs/km e tramas de 256 bytes. Dados só num sentido, RR imediatos e de duração desprezável, processamento desprezável e sem perdas de dados.

  1. Calcula utilização e débito de tramas em Stop-and-Wait.
  2. Calcula a janela mínima para transmissão contínua e o mínimo de bits de sequência em Go-Back-N.
  3. Com numeração módulo 8 e janela máxima, quantos RR consecutivos podem perder-se antes do primeiro RR recebido, sem haver uma pausa? Assume arranque com janela livre e ignora timeouts.

Pista
Desenha primeiro o ciclo da primeira trama e o regresso do RR.
Solução

A transmissão demora 256×8/(2048×103)=1256\times8/(2048\times10^3)=1 ms. A propagação num sentido é 300×5=1500300\times5=1500 μs, ou 1,5 ms. O primeiro RR chega em 1+2×1,5=41+2\times1,5=4 ms. Stop-and-Wait usa um quarto do ciclo, U=0,25U=0,25, e transmite 2048×0,25=5122048\times0,25=512 kbit/s de tramas. Não foi fornecida uma fração de payload para calcular o débito da aplicação.

A janela mínima é ⌈4/1⌉=4\lceil4/1\rceil=4. GBN exige 2m−1≥42^m-1\ge4: dois bits só permitem três tramas; três bits permitem sete.

Com W=7W=7, a origem esgota a janela em 7 ms. Se perder kk RR iniciais, o primeiro recebido chega em 4+k4+k ms. Para não parar, 4+k≤74+k\le7, logo podem perder-se três. O RR da quarta trama confirma cumulativamente as quatro primeiras. No caso limite, assume-se que uma confirmação disponível no instante 7 ms permite continuar nesse mesmo instante.

Confere a tua resposta:

  • Converto bytes e a propagação por km.
  • Distingo utilização de débito.
  • Aplico o limite GBN ao dimensionamento.
  • Comparo o instante do RR com o esgotamento da janela.

Erros frequentes

Contar só uma propagação ou tratar cada RR como confirmação exclusivamente individual.
Voltar à explicação
Projetar a janela e comparar correção de erros

Uma ligação usa 4 Mbit/s, propagação de 50 ms por sentido, tramas com 4000 bits de dados, BER 0,00005 e Selective Repeat com seis bits de sequência. ACK desprezável, erros independentes e nenhum cabeçalho adicional. Calcula janela máxima, FER, utilização e débito útil. Quantos bits de sequência permitem ocupar continuamente a ligação sem erros?

Compara ainda FEC com 10% de redundância e FER residual 0,08, e FEC com 30% e FER residual 0,03. Mantém os 4000 bits de dados e a janela original. Qual dá maior débito útil?

Pista

Separa três grandezas: comprimento transmitido, probabilidade de falha e fração de dados úteis.

Solução

W=32. FER=1−(1−0,00005)^4000≈0,181273. Sem erros, U=32/101≈0,316832. Com erros, U≈0,259399 e débito útil 1,037594 Mbit/s.

Para ocupar a ligação sem erros, W≥101. Sete bits permitem apenas W=64; oito permitem W=128. São precisos pelo menos oito bits.

FEC 10%: U≈0,320317 e débito útil 4×U/1,1≈1,164787 Mbit/s. FEC 30%: U≈0,398342 e débito útil 4×U/1,3≈1,225666 Mbit/s. A segunda é melhor nestes dados. A FER residual foi fornecida, não calculada da BER original.

Confere a tua resposta:

  • Converto o comprimento e a capacidade para obter o tempo de transmissão.
  • Uso metade do espaço de sequência para limitar Selective Repeat.
  • Calculo FER a partir da BER e do comprimento completo.
  • Recalculo o tempo da trama e a fração útil em cada codificação.
  • Distingo a janela crítica sem erros do débito sob erros.

Erros frequentes

Usar BER como FER, manter o tempo de trama após acrescentar redundância, comparar utilização sem descontar os bits de FEC, ou usar o limite de janela Go-Back-N.

Voltar à explicação
Dimensionar Selective Repeat com e sem erros

Uma ligação Selective Repeat usa 3 bits de sequência,ACKs imediatos de duração desprezável e tramas de Informação de 1024 bits. A capacidade é 512 kbit/s em cada sentido e a propagação é 10 ms por sentido, sem outras limitações. Calcula o débito máximo sem erros. Com BER de 10−410^{-4} e erros independentes, calcula a eficiência máxima. E se a janela passasse a 32?

Pista
Determina primeiro quantas tramas cabem no ciclo; só depois aplica os erros.
Solução

A trama demora 1024/512000=21024/512000=2 ms e a=10/2=5a=10/2=5. Com três bits, a janela máxima é W=23−1=4W=2^{3-1}=4. Sem erros, U=4/(1+2×5)=4/11U=4/(1+2\times5)=4/11, logo Rmax=512×4/11≈186,18R_{max}=512\times4/11\approx186{,}18 kbit/s.

Com BER 10−410^{-4}, pe=1−(1−10−4)1024≈0,09734p_e=1-(1-10^{-4})^{1024}\approx0{,}09734. A eficiência é (1−pe)×4/11≈0,32824(1-p_e)\times4/11\approx0{,}32824, cerca de 33%. Com janela 32, o ciclo deixa de limitar e a eficiência é 1−pe≈90,27%1-p_e\approx90{,}27\%, cerca de 90%. BER não é FER: um só bit errado estraga a trama.

Confere a tua resposta:

  • Calculo o tempo de trama e a razão a antes de limitar a janela.
  • Limito a janela a metade do espaço de sequência em Selective Repeat.
  • Converto BER em FER com o comprimento completo da trama.
  • Distingo débito máximo sem erros de eficiência com erros.

Erros frequentes

Usar a janela de Go-Back-N, confundir BER com FER ou manter a limitação do ciclo com janela saturada.
Voltar à explicação
Distinguir guardar, confirmar e entregar

Emissor e recetor começam na trama 0. O emissor envia 0, 1, 2 e 3, perdendo-se 1. Ambos os protocolos usam três bits de sequência e janela de transmissão quatro; Selective Repeat usa também janela de receção quatro. RR(n) confirma tudo até n−1. Go-Back-N descarta fora de ordem; Selective Repeat guarda dentro da janela. Não há outras perdas nem timeouts prematuros.

Indica quais tramas foram entregues e quais ficaram guardadas depois de chegarem 0, 2 e 3. Quando a retransmissão de 1 chegar, qual RR cumulativo pode cada recetor enviar? Que dados precisam ainda de repetição em cada protocolo?

Pista

Separa chegada e entrega.

Solução

Em ambos, 0 é entregue e permite RR(1). Depois, Go-Back-N descarta 2 e 3, por isso só entregou 0 e não guardou dados posteriores. Selective Repeat também só entregou 0, mas conserva 2 e 3 à espera da lacuna.

Quando chega 1, Go-Back-N entrega-a e envia RR(2): ainda precisa de receber novamente 2 e 3. Selective Repeat entrega 1, 2 e 3 por ordem e pode enviar RR(4), sem repetir 2 nem 3. Receção fora de ordem não é entrega fora de ordem; RR(4) é possível porque o intervalo 0 a 3 ficou completo.

Confere a tua resposta:

  • Go-Back-N descarta 2 e 3 e continua à espera de 1.
  • Selective Repeat guarda 2 e 3 sem as entregar antes de 1.
  • Depois da chegada de 1, distingo RR(2) em GBN de RR(4) em SR.
Voltar à explicação
Calcular o instante do último ACK

Adaptação da pergunta 12 do exame de recurso de 2023/24. Go-Back-N usa três bits de sequência, janela máxima, tramas de 200 bytes e uma ligação de 400 kbit/s. A propagação demora 50 ms por sentido. O bloco tem 20800 bits, sem cabeçalhos nem outra sobrecarga. Não há perdas, processamento ou duração de ACK; cada trama é confirmada imediatamente e os timeouts não expiram.

A primeira transmissão começa em t=0. Calcula quando chega ao recetor o último bit do bloco e quando o emissor recebe a sua confirmação. Mostra o calendário das transmissões; um débito médio não basta para esta transferência finita.

Pista
Determina a duração de uma trama e o regresso do primeiro ACK antes de distribuir as restantes.
Solução

São 20800/1600=1320800/1600=13 tramas. Cada uma demora 1600/400000=41600/400000=4 ms e a janela GBN é 23−1=72^3-1=7. O primeiro ACK chega em 4+2×50=1044+2\times50=104 ms.

As primeiras sete tramas começam em 0, 4, 8, 12, 16, 20 e 24 ms. Aos 28 ms, o emissor já ocupou a janela inteira e espera. Os ACKs chegam em 104, 108, 112, 116, 120, 124 e 128 ms, libertando posições sucessivas.

As seis tramas restantes começam em 104, 108, 112, 116, 120 e 124 ms. A última acaba de sair aos 128 ms, chega inteira aos 128+50=178128+50=178 ms e o seu ACK chega aos 178+50=228178+50=228 ms. A confirmação da sétima trama, recebida aos 128 ms, não é ainda a confirmação do bloco inteiro.

Confere a tua resposta:

  • Divido o bloco em treze tramas.
  • Respeito sete tramas pendentes e os instantes dos ACKs.
  • Distingo 178 ms de chegada de 228 ms de confirmação.
Voltar à explicação
Recuperar uma confirmação perdida

Em Stop-and-Wait, RR(n) indica a próxima trama esperada. I(0) chega correta e é entregue, mas RR(1) perde-se. Não há outras perdas nem tramas antigas de ciclos anteriores. Descreve o que acontece quando expira o temporizador do emissor e como o protocolo evita entregar os mesmos dados duas vezes.

Pista

O emissor não sabe se falhou a trama ou a confirmação.

Solução

O emissor repete I(0). O recetor recebe uma trama com o número que acabou de entregar, identifica o duplicado e volta a enviar RR(1), sem entregar os dados de novo. Ao receber essa confirmação, o emissor avança para I(1). A retransmissão recupera a confirmação; o número de sequência impede a segunda entrega.

Confere a tua resposta:

  • O recetor entrega I(0) uma vez e passa a esperar I(1).
  • O timeout faz o emissor repetir I(0), porque não recebeu RR(1).
  • O recetor reconhece o duplicado, não o entrega e volta a enviar RR(1).
  • Ao receber RR(1), o emissor pode enviar I(1).
Voltar à explicação
Calcular BCC antes de escapar bytes

No protocolo do Lab 1, os dados são os bytes hexadecimais 7E 01 7D. BCC2 é o XOR dos bytes originais. O stuffing substitui 7E por 7D 5E e 7D por 7D 5D; outros bytes não mudam. Calcula BCC2, escreve a sequência de dados e BCC2 após stuffing, sem flags nem cabeçalho, e descreve a ordem de operações no recetor. Quantos bytes ocupa esta sequência?

Pista
O BCC também pode precisar de escape, mas é calculado antes dessa transformação.
Solução

BCC2=7E XOR 01 XOR 7D = 02. Antes do stuffing temos 7E 01 7D 02. Depois temos 7D 5E 01 7D 5D 02, seis bytes. Dois bytes especiais ganharam um byte de escape cada; o BCC2 não precisa de escape neste exemplo.

O recetor faz destuffing e recupera 7E 01 7D 02. Recalcula o XOR sobre os três bytes de dados e compara com o BCC2 recebido. Calcular sobre os seis bytes do canal protegeria outra sequência e não aplicaria o algoritmo especificado.

Confere a tua resposta:

  • Calculo BCC2=02 sobre dados originais.
  • Obtenho seis bytes depois do stuffing.
  • Faço destuffing antes da verificação.
Voltar à explicação
Seguir as duas janelas de Selective Repeat

Selective Repeat usa dois bits de sequência e janela três em ambas as pontas. O emissor envia 0, 1 e 2; o recetor recebe e entrega todas, mas todas as confirmações se perdem. Indica a janela de cada ponta. Se o emissor repetir 0, explica a ambiguidade. Repete o raciocínio com janela dois e envio inicial de 0 e 1.

Pista
Uma ponta avança ao entregar; a outra precisa de receber confirmação.
Solução

O emissor mantém 0, 1 e 2 pendentes, pois não recebeu confirmações. O recetor já espera 3, 0 e 1. A repetição antiga de 0 pertence a essa janela e pode ser aceite como dados novos. É o recetor que avançou antes do emissor, não o contrário.

Com janela dois, o emissor mantém 0 e 1 pendentes e o recetor espera 2 e 3. As janelas não se sobrepõem, pelo que a repetição de 0 é identificada como antiga. A condição é 2W≤42W\le4, assumindo que duplicados não sobrevivem a várias voltas da numeração.

Confere a tua resposta:

  • Mantenho a janela do emissor após perder todos os ACKs.
  • Avanço a janela do recetor.
  • Identifico a sobreposição no caso W=3.
  • Mostro janelas disjuntas no caso W=2.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.