Nível de Enlace Enlace: caminho lógico entre estações. Permite comunicação eficiente e confiável entre dois computadores. Funções: fornecer uma interface de serviço à camada de rede; determinar como os bits da camada física são agrupados em quadros; tratar os erros de transmissão e controle de fluxo de quadros; e, controlar o acesso ao meio físico. Nível de Enlace Nível Nível Protocolo nível 2 Nível 2 Nível 2 Protocolo nível 1 Nível 1 Nível 1 Meio físico oferecidos os nível de rede O principal serviço é transmitir dados da origem ao destino, e pode ser de formas: sem conexão e sem confirmação sem conexão com confirmação orientado à conexão Serviço sem conexão e sem confirmação serviço não confiável envio de quadros isolados quadro perdido: não há como recuperá-lo (nível2) recuperação de erros (níveis superiores) adequado se o nível físico tem baixa taxa de erros Serviço sem conexão e com confirmação se não ocorrer confirmação, retransmite o quadro possibilidade de duplicação de quadros usado quando um pequeno volume de dados deve ser transferido de forma confiável. Serviço com conexão ou orientado à conexão garante que os quadros transmitidos são entregues sem erros e não ordem correta. Possui fases: fase de conexão: estabelecimento da conexão lógica fase de transmissão: troca de quadros numerados e confirmados, com entrega ordenada e precaução para evitar duplicação desconexão: ligação lógica é desfeita 1
Nível de Enlace Comunicação entre as camadas de rede e enlace usam primitivas OSI: solicitação, indicação, resposta e confirmação SOLICITAÇÃO CONFIRMAÇÃO Camada de Enlace RESPOSTA INDICAÇÃO O nível de enlace utiliza os serviços fornecidos pelo nível físico. Então o nível de enlace deve detectar e, as vezes, corrigir erros. O fluxo de bits é dividido em quadros e um checksum é calculado para cada quadro.quando o quadro chega ao destino, o checksum é recalculado. Métodos utilizados para dividir o fluxo de bits em quadros: caracteres iniciais e finais com inserção de caracteres flags iniciais e finais, com inserção de bits Camada Física Byte stuffing utiliza-se de caracteres especiais para indicar o início e o fim do quadro cada quadro começa com a seqüência de caracteres ASCII DLE STX e termina com DLE ETX. DLE STX A DLE B DLE ETX Problema: caracteres delimitadores podem aparecer entre os dados transmitidos no quadro Solução: toda vez que um delimitador aparece nos dados é inserido antes dele um outro caracter especial (byte stuffing) DLE STX DLE DLE STX A DLE DLE B DLE DLE ETX DLE ETX Desvantagem: este método depende da utilização de caracteres de 8 bits em geral e dos caracteres ASCII em particular. Bit Stuffing surgiu para permitir o uso de caracteres com tamanhos arbitrários. delimita os quadros com flags (seqüências especiais de bits) usa o padrão 01111110 como delimitador sempre que o transmissor encontra cinco bits consecutivos iguais a 1 nos dados que vai transmitir ele insere um bit 0 na cadeia de bits o receptor quando vê cinco 1s seguindos de um 0, ele remove o bit 0. 000111101111111100011111000110 Controle de Fluxo e A forma mais confiável é dar ao transmissor algum tipo de retorno (feedback). Se uma confirmação negativa for recebida, o quadro é transmitido. Problemas de hardware podem fazer quadros desaparecerem. Solução: introdução de temporizadores. Deve haver a introdução de números de seqüência. Três técnicas são utilizadas para controlar erros: algoritmo de bit alternado (stop-and-wait) janela n com retransmissão integral (go-back-n) janela n com retransmissão seletiva (selective repeat) 011111100001111011111011100011111000011001111110 0001111011111011100011111000011001111110 2
Controle de Fluxo e Stop-and-Wait Bit Alternado (stop and wait) o transmissor só envia um quadro quando recebe o reconhecimento do quadro anterior. Números de seqüência: o primeiro quadro é numerado com o bit 0, o segundo com 1, o terceiro com zero, e assim por diante. técnica ineficiente: enquanto o transmissor espera por reconhecimentos o canal não é utilizado Controle de Fluxo e ARQ Contínuo aumento da eficiência na utilização dos canais de comunicação permite que o transmissor envie diversos quadros mesmo sem ter recebido reconhecimento de quadros anteriores enviados o número máximo de quadros que podem ser enviados sem que tenha chegado um reconhecimento define a largura da janela de transmissão. Procedimentos utilizados para recuperar os erros: retransmissão integral (go-back-n) retransmissão seletiva (selective-reject) Controle de Fluxo e Para aumentar ainda mais a eficiência, em ambos os casos o receptor não precisa enviar um reconhecimento de cada quadro. O transmissor, ao receber o quadro n, conclui que os anteriores chegaram corretamente. Controle de Fluxo e Janela Deslizante Controle de Fluxo Necessário quando um transmissor quer enviar quadros mais rapidamente do que o receptor é capaz de aceitá-los. No mecanismo de bit alternado, ele mesmo controla o fluxo. Os protocolos com janela n maior que 1 utilizam: quadros especiais. janelas de transmissão e recepção. Largura da janela: determina o número máximo de quadros que o transmissor pode enviar sem receber um reconhecimento. Receptor possui um valor (R) que especifica o número máximo de quadros que ele pode receber sem entregá-los ao nível de rede. Quadros especiais: receive-not-ready e receive-ready.
Exemplo de Janela Deslizante Dois tipos: Controle de Acesso duas máquinas ligadas ao mesmo meio várias máquinas compartilhando o mesmo meio. Deve haver mecanismos para disciplinar o acesso ao meio. Exemplo: estação primária controla o acesso. Ela pergunta (poll) se cada estação secundária tem dados para transmitir. Em rede locais, as estações tem o mesmo direito de acesso. Todas as estações são responsáveis pelo controle de erro, fluxo e do acesso ao meio físico. Controle de Acesso De acordo com a arquitetura IEEE, o nível de enlace foi dividido em duas sub-camadas: MAC (Medium Access Control) - controla o acesso ao meio das várias tecnologias de redes locais LLC (Logical Link Control) - implementa a interface do nível de enlace com o nível de rede e fornece serviços de multiplexação, controle de erro e fluxo. Como é impossível eliminar todos os erros que ocorrem, deve haver a possibilidade de se recuperar a informação perdida. Primeiro deve-se detectá-lo. Os métodos de detecção de erros são baseados na inserção de bits extra na informação transmitida. Algoritmos de detecção de erros: redundância de caracter (Paridade VRC) redundância de bloco (Paridade LRC) códigos polinomiais ou códigos cíclicos (CRC) Algoritmo de detecção e correção de erros: código de hamming Redundância de Caracter Forma mais simples. Inserção de um bit de paridade no final de cada caracter de um quadro: paridade par paridade ímpar 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 Paridade Par Redundância de Caracter Caso um número par de bits tenha sido invertido, o receptor não será capaz de perceber o erro, pois a paridade ainda estará correta. par ímpar 1100000 2 bits 1 11000000 1010100 bits 1 10101001 1100000 2 bits 1 11000001 1010100 bits 1 10101000 0 1 1 0 1 0 0 0 Paridade Ímpar 4
Redundância de Bloco Reduz as limitações do tipo anterior. A unidade básica de transmissão é uma mensagem inteira, ao invés de um caracter individual. Caracteres da mensagem são tratados como um array bidimensional. Um bit de paridade é adicionado a cada caracter e então um BCC (Block Check Character) de 7 bits é adicionado no final. pode ser usada isolada ou combinada com a paridade vertical Redundância de Bloco Bit b 1 0 0 1 1 0 1 1 b 2 1 1 0 0 0 0 0 b 1 1 1 0 1 1 1 b 4 0 0 1 0 0 0 1 b 5 1 1 0 0 1 0 1 b 6 0 b 7 0 0 1 1 1 1 0 paridade 1 1 0 0 1 1 0 1 2 4 6 6 BCC Códigos Polinomiais ou Cíclicos (CRC) detecção de erros em rajadas, erros simples. baseia-se em tratar os bits de uma mensagem como coeficientes binários de um polinômio variável X qualquer. um quadro de k bits é representado por um polinômio em X, de ordem k-1. mensagem polinômio gerador x 9 +x 7 +x +x 2 +x 0 Códigos Polinomiais ou Cíclicos (CRC) No transmissor o polinômio de ordem k - 1 é dividido, em aritmética módulo 2, por um polinômio gerador de ordem n, tendo como resultado um quociente e um resto de ordem n - 1. O transmissor gera em sua saída os k bits originais, seguidos dos n bits correspondentes ao polinômio obtido como resultado da divisão (chamado Frame Check Sequence - FCS). No receptor, um processo análogo é realizado. x 5 +x 4 +x 2 +x 0 mensagem 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 polinômio 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 0 resto mensagem a ser enviada 0 1 1 1 0 mensagem recebida 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 polinômio 0 0 0 0 0 resto mensagem recebida está OK Situação 1 5
mensagem recebida 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 polinômio 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 resto mensagem recebida está com ERRO Situação 2 Código de Hamming mensagem 1 1 0 0 0 0 1 Posições em 1 11 10 XOR 1 0 1 1 mensagem enviada 1 0 1 0 0 0 1 1 0 0 1 0 H4 H H2 H1 11 10 9 8 7 6 5 4 2 1 1 1 0 H4 0 0 0 H 1 H2 H1 1 1 0 H4 0 0 0 0 H 0 1 H2 1 H1 0 Código de Hamming Situação 1 Posições em 1 11 10 2 XOR 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 sem erro Situação 2 Posições em 1 11 1 0 1 1 10 1 0 1 0 4 0 1 0 0 0 0 1 1 2 0 0 1 0 XOR 0 1 0 0 erro no bit 4 6