Camada de Enlace, Enquadramento e Detecção de Erros

Enquadramento, Controle de Erros e Verificação de Integridade

Professor: Gabriel Soares Baptista

A Missão da Camada de Enlace

A Camada Física entrega apenas um fluxo bruto de bits (pulsos elétricos, luz, rádio). Ela não entende "mensagens".

Objetivos da Camada de Enlace:

  1. Enquadramento: Transformar o fluxo de bits em unidades discretas (quadros).
  2. Detecção de Erros: Identificar corrupções causadas pelo meio físico ruidoso.
  3. Controle de Fluxo: Impedir que um emissor rápido soterre um receptor lento.
  4. Coordenação: Gerenciar confirmações (ACKs), retransmissões e numeração.

Enquadramento: Do Fluxo ao Quadro

Enquadrar significa definir claramente onde uma unidade de informação começa e onde ela termina.

Métodos Principais:

  • Contagem de Caracteres: Campo no cabeçalho indica o tamanho.
  • Byte Stuffing: Uso de bytes de FLAG e ESC.
  • Bit Stuffing: Inserção de bits 0 para evitar flags falsas.

Enquadramento: Byte Stuffing

Escolhemos um byte especial (FLAG) para as bordas e um byte de ESC (escape) para transparência.

Regras:

  1. Se FLAG aparecer nos dados $\to$ Transmite ESC FLAG.
  2. Se ESC aparecer nos dados $\to$ Transmite ESC ESC.

Enquadramento: Bit Stuffing

Utilizado em nível de bits. A flag padrão é $01111110$.

Regra da Inserção:

  • Transmissor: Sempre que encontrar cinco bits 1 seguidos nos dados, insere um 0 automático.
  • Receptor: Ao detectar cinco 1s seguidos:
    • Se o próximo for 0: remove-o (bit de stuffing).
    • Se o próximo for 1: é a flag de encerramento.

Inspecionando Quadros no Linux (Passo 1)

Para ver um quadro real, você precisa identificar sua interface de rede primeiro.

Comando:

ip link show ou sudo tcpdump -D

O que observar:

Nomes como eth0, enp3s0 ou wlan0. Escolha uma que esteja com o estado UP.

Inspecionando Quadros no Linux (Passo 2)

Agora, capture um único quadro usando privilégios de superusuário (sudo).

Comando:

sudo tcpdump -c 1 -xx -i SUA_INTERFACE icmp

  • -c 1: Captura apenas 1 pacote.
  • -xx: Mostra o conteúdo em hexadecimal, incluindo o cabeçalho de enlace.
  • -i: Especifica a interface de rede.

Resultado do tcpdump

Cabeçalho Ethernet Real
0x0000:  001a 2b3c 4d5e 0011 2233 4455 0800 4500
  1. Destino (6 bytes): 00 1a 2b 3c 4d 5e
  2. Origem (6 bytes): 00 11 22 33 44 55
  3. Tipo/EtherType (2 bytes): 08 00 (IPv4)

A partir do 45 00..., começa o pacote da camada de rede.

Detecção vs. Correção de Erros

O meio físico é imperfeito (ruído, interferência).

Detecção (Detection)

Percebe que houve corrupção e descarta o quadro.

  • Exemplos: Paridade, Checksum, CRC.

Correção (Correction / FEC)

Usa redundância para reconstruir o valor original.

  • Exemplos: Código de Hamming, Reed-Solomon.

Código de Hamming (7,4): Layout

Utiliza 4 bits de dados e 3 bits de verificação. As posições de verificação são potências de 2 ($1, 2, 4$).

Estrutura do Quadro (7 bits):

Posição1234567
Tipop1p2d1p4d2d3d4
Exemplo (Dados 1011)p1p21p4011

Código de Hamming (7,4): Cobertura

As paridades verificam grupos baseados na representação binária da posição:

  • p1 (001): Verifica posições com o último bit 1 $\to$ (1, 3, 5, 7).
  • p2 (010): Verifica posições com o bit do meio 1 $\to$ (2, 3, 6, 7).
  • p4 (100): Verifica posições com o primeiro bit 1 $\to$ (4, 5, 6, 7).

Usamos paridade par.

Código de Hamming (7,4): Cálculo

Dados originais: 1011

Cálculo dos Bits de Verificação:

  1. p1 (1, 3, 5, 7): p1, 1, 0, 1 $\to$ p1 = 0.
  2. p2 (2, 3, 6, 7): p2, 1, 1, 1 $\to$ p2 = 1.
  3. p4 (4, 5, 6, 7): p4, 0, 1, 1 $\to$ p4 = 0.

Quadro Transmitido: 0 1 1 0 0 1 1

Código de Hamming (7,4): Detecção de Erro

Suponha erro na posição 5 ($0 \to 1$). Receptor recebe: 0 1 1 0 1 1 1

Verificação no Receptor:

  1. Grupo p1 (1, 3, 5, 7): 0, 1, 1, 1 $\to$ Falha (1).
  2. Grupo p2 (2, 3, 6, 7): 1, 1, 1, 1 $\to$ Ok (0).
  3. Grupo p4 (4, 5, 6, 7): 0, 1, 1, 1 $\to$ Falha (1).

Síndrome ($p4, p2, p1$):

$$1 \ 0 \ 1_2 = 5_{10}$$
O erro está na posição 5. Inverte-se o bit e recupera-se o dado.

Verificação por CRC

O Cyclic Redundancy Check é o padrão industrial (Ethernet).

  • Baseado em divisão polinomial.
  • Vantagem: Excelente para detectar erros em rajada (burst errors).
MecanismoPoder de DetecçãoCusto Computacional
ParidadeBaixoMínimo
ChecksumMédioBaixo (Soma)
CRCAltoMédio (Hardware)

Questão de Fixação - 1 / 3

1. Explique, com suas palavras, por que a camada física sozinha não é suficiente para entregar dados de forma organizada à camada de rede.

2. Diferencie claramente as unidades abaixo e diga a que camada cada uma pertence: bits, quadro e pacote.

3. No método de contagem de caracteres, qual é a principal fragilidade quando ocorre erro justamente no campo de comprimento do quadro?

Questão de Fixação - 2 / 3

4. Considere um protocolo com FLAG como delimitador de quadro e ESC como byte de escape.

  • a) Mostre como a sequência de dados [A][FLAG][B] deve ser transmitida com byte stuffing.
  • b) Mostre como a sequência [A][ESC][B] deve ser transmitida.

5. Explique a diferença conceitual entre byte stuffing e bit stuffing.

Questão de Fixação - 3 / 3

7. Diferencie detecção de erros de correção de erros.

8. Sobre os mecanismos de verificação, marque V ou F:

  • ( ) Um único bit de paridade consegue detectar com segurança qualquer quantidade de bits invertidos.
  • ( ) O CRC é usado amplamente porque oferece boa capacidade de detecção.
  • ( ) Checksums e CRC são formas de adicionar redundância para verificar integridade.
  • ( ) Se um erro for detectado, o receptor já sabe reconstruir o valor correto.

Próximos Passos

Na próxima aula avançaremos para os Protocolos de Janela Deslizante.

  • Veremos como melhorar a utilização do enlace permitindo que vários quadros fiquem em trânsito simultaneamente.
  • Otimização da largura de banda sem abandonar a confiabilidade.
  • Transição do Stop-and-wait para Go-Back-N e Repetição Seletiva.