O que é a verificação de redundância cíclica e como funciona em termos simples (estilo para dummies)?

StackOverflow https://stackoverflow.com//questions/9635561

  •  10-12-2019
  •  | 
  •  

Pergunta

Estou tendo problemas para entender o conceito e o funcionamento do termo feio sonoro " cheque de redundância cíclica ". Estou participando de um curso universitário em redes de computadores e já estou perdendo.

O problema é que minha compreensão da matemática é muito limitada (estudou matemática há muito tempo na escola e esqueci a maior parte) e eu não posso obter, por exemplo, o que é o inferno um polinômio gerador, que polinômios têm que fazer com CRC e para resumir - tudo isso parece totalmente incompreensível para mim.

Eu li a entrada do Wiki no CRC, mas não me ajudou desde que não sou bom em matemática e todos esses símbolos e termos de matemática são como chineses para mim.

Eu entendo que o CRC é usado para detecção de erros ao enviar dados na rede, mas a partir de então eu estou perdido.

Alguém pode me ajudar a explicar este conceito em termos simples e, possivelmente, dar um exemplo?

Durante a última palestra, o professor começou a desenhar todos esses e zeros, dividindo e eu não sei o que e eu estava apenas olhando e me sentindo estúpido.

Eu seria muito grato que alguém pode me ajudar a entender!

Foi útil?

Solução

Se você quiser que a resposta seja muito simples, você precisa aceitar alguma simplificação, se estiver disposto a viver com isso, aqui vai:

Os dados são transmitidos sobre links imperfeitos - podem ocorrer erros no caminho. Imagine que você quer garantir que a informação recebida seja a mesma que a transmissão sem desperdiçar muita largura de banda, como você faria isso?

Você pode transmitir todas as informações duas vezes e se estiver no final de recebimento você ver que o primeiro é diferente do segundo que você sabe que um erro ocorreu e você precisa solicitar os dados novamente - mas isso seria muito desperdiçoso , efetivamente cortaria sua largura de banda ao meio.

Agora, e se você pudesse calcular algum valor que seja muito menor do que o próprio dado ainda depende disso? Portanto, se os dados mudarem ao longo do caminho (devido a erro), o valor calculado não mais "corresponderia" aos dados e você saberia que ocorreu um erro. Existe tal cálculo?

E a divisão simples e levar um restante como esse valor?

Diga que eu quero transmitir uma informação / número 1.000. Eu divido por número escolhido - como 6 por exemplo ... que me dá 166 e um restante de 4. Eu pego o restante como meu valor de cheque que é muito menor do que a informação que eu realmente estou transmitindo, então eu não estou perdendo Muita largura de banda e eu transmiti 1.000 seguido de 4. Um receptor Obtém, leva o número 1.000 divide por 6 e se o restante é 4, ele assume que nenhum erro ocorreu.

Se ocorrer um erro e receberia 998 em vez de 1.000 devido a erros no link - ele iria dividido por 6, obter um restante de 2, que não corresponde a 4 e a viola sabe que ocorreu um erro. Esse é o princípio básico do CRC.

É claro que é um pouco mais complicado porque divide-se por um polinômio, mas o princípio de usar um restante como um "valor curto que representa os dados" para verificar se há erros da mesma maneira.

Espero que isso ajude você a recuperar o que está acontecendo;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top