Comunicação de dados
Protocolos básicos de enlace de dados
Sumário
1) Protocolos básicos de enlace de dados.2) Um protocolo simplex sem restrições.3) Um protocolo Simples Stop-and-wait em um canal livre de erros.4) Um protocolo Simples Stop-and-wait em um canal com ruídos.
Introdução
• Processos independentes, em cada camada, que se comunicam enviando mensagens.
Localização e função da Camada de Enlace
• Parte da Camada de Enlace reside nas interfaces de rede.
• Outra parte no Sistema Operacional.– Geralmente o software para o processo da
Camada de Enlace toma a forma de um driver de dispositivo.
• Quando a Camada de Enlace recebe um pacote, ela o encapsula em um quadro acrescentando-lhe um cabeçalho e um final.
Funções da Camada de Enlace
• Existem funções de biblioteca denominadas:– to_physical_layer.– from_physical_layer.– to_network_layer.– from_network_layer.– Wait_for_events.
• Essas funções recebem e enviam quadros e calculam o checksum.– Geralmente implementadas em hardware.
Controle de erro
• Quando o quadro chega, o checksum é calculado.• Se houver erro a Camada de Enlace é informada.– Event = chSum_err.
• Se o quadro chegar intacto, a Camada de Enlace também é avisada para que ela possa recebê-lo usando from_physical_layer e repassar sua carga útil à Camada de Rede.– Event = frame_arrival.
Campos do cabeçalho de um quadro hipotético
• O quadro é composto por quatro campos:– Kind: Informações de controle.– Seq: Número de sequência.– Ack: Confirmação de recebimento.– Info: Pode conter dados (carga útil).
Relacionamento entre as camadas
• A Camada de Rede obtém a mensagem da Camada de Transporte, acrescenta a ele o cabeçalho e repassa-o à Camada de Enlace para inclusão no campo info de um quadro.
• No destino, a Camada de Enlace extrai o pacote do campo info e o entrega à Camada de Rede.
Sumário
1) Protocolos básicos de enlace de dados.2) Um protocolo simplex sem restrições.3) Um protocolo Simples Stop-and-wait em um canal livre de erros.4) Um protocolo Simples Stop-and-wait em um canal com ruídos.
Protocolo simplex sem restrições
• Protocolo o mais simples possível.– Não se preocupa com a possibilidade de algo sair
errado.– Dados transmitidos em apenas um sentido.– Camadas de rede do receptor e transmissor estão
sempre prontas.– Canal nunca perde quadros.• Apenas o campo info é utilizado.• Único evento possível é o frame_arrival.
– Chegada de um quadro não danificado.
Transmissor
• Loop while infinito que envia dados o mais rápido possível.– Busca um pacote na Camada de Rede.– Cria o quadro.– Transmite o quadro.
Receptor
• Espera que algo aconteça.– Único evento é a chegada de um quadro intacto.– Função wait_for_events retorna com evento frame_arrival.
• A chamada from_physical_layer remove o quadro do buffer do hardware e o coloca em uma variável onde o código receptor poderá buscá-lo quando necessário.
• Dados são repassados à Camada de Rede.• Camada de Enlace volta a esperar pelo próximo
quadro.
Sumário
1) Protocolos básicos de enlace de dados.2) Um protocolo simplex sem restrições.3) Um protocolo Simples Stop-and-wait em um canal livre de erros.4) Um protocolo Simples Stop-and-wait em um canal com ruídos.
Protocolo simplex stop-and-waitCanal livre de erros
• Impedir que o transmissor sobrecarregue o receptor com quadros mais rapidamente do que ele conseguirá processá-los.
• Continuamos a supor que:– O canal é livre de erros.– A comunicação é simples.
Situações possíveis
• Receptor poderoso o bastante para processar todo quadro que chega.
• Se isto não for possível, então a Camada de Enlace deve ser “lenta” o bastante para que o receptor possa acompanhar o fluxo de quadros.
Solução geral
• Exemplo simples de controle de fluxo:– Receptor oferece feedback ao tansmissor.• Depois de enviar o pacote a sua Camada de Rede, o
receptor envia um pequeno quadro de volta ao transmissor, permitindo a transmissão do próximo quadro.
– Transmissor envia o quadro e aguarda a chegada do pequeno quadro de confirmação.
Stop-and-wait
• Os protocolos onde o transmissor envia um quadro e aguarda uma confirmação são denominados de stop-and-wait (pare e espere).
Deduções
• O canal físico pode ser half-duplex.• O transmissor, ao contrário do exemplo anterior, deve
esperar pela chegada da confirmação antes de retornar ao loop e buscar o próximo pacote da rede.
• A Camada de Enlace do transmissor não precisa nunca inspecionar o quadro recebido pois a resposta é sempre uma confirmação.
• A Camada de Enlace do receptor, após repassar o pacote à Camada de Rede, deve enviar o quadro de reconhecimento antes de retornar ao loop de espera de um evento.
Sumário
1) Protocolos básicos de enlace de dados.2) Um protocolo simplex sem restrições.3) Um protocolo Simples Stop-and-wait em um canal livre de erros.4) Um protocolo Simples Stop-and-wait em um canal com ruídos.
Protocolo simplex stop-and-waitCanal com ruído
• Neste modelo vamos imaginar um canal onde ocorrem erros.
• Neste modelo, estamos supondo que um quadro pode se corromper ou não chegar, sendo função da Camada de Enlace receptora detectar essas ocorrências e avisar à Camada de Enlace transmissora.
• Este aviso pode ocorrer retornando um recibo (confirmação) confirmando a chegada do quadro integro.
• No receptor, o hardware calcula o checksum. Se um erro for detectado, ou se o quadro não chegar, a Camada de Enlace receptora não enviará a confirmação.
Timer
• O transmissor possui um timer cuidadosamente calculado. Assim que o quadro é enviado, o timer é acionado.
• O receptor somente envia o reconhecimento somente se o quadro chegar integro.
• O transmissor aguarda a chegada da confirmação por um período de tempo (o timer) se o timer do transmissor expirar (timeout), este retransmite o quadro inúmeras vezes até chegar a confirmação.
Quadros duplicados
• A Camada de Rede de A envia um pacote à Camada de Enlace de A. O quadro é transmitido e chega corretamente à Camada de Enlace de B. B repassa o pacote a sua própria Camada de Rede e envia a confirmação para A.
Quadros duplicados (2)
• A confirmação se perde.• O canal não faz distinções entre quadros de
dados e quadros de controle.
Quadros duplicados (3)
• O transmissor deduz (incorretamente) que o seu quadro se perdeu e retransmite o quadro.
Quadros duplicados (4)
• O quadro duplicado chega integro à Camada de Enlace e, como não contém erros, é passado imediatamente à Camada de Rede, que passa a ter um quadro duplicado.
Problema
• O receptor deve possui alguma forma de distinguir um quadro que ele está recebendo pela primeira vez, de um quadro duplicado.
Números de Sequência
• Uma solução é inserir um número de sequência no quadro.
• Desta forma, o receptor pode verificar o valor do número de sequência do quadro e determinar se esse é um novo quadro ou uma retransmissão que deve ser descartada.
Tamanho do campo número de sequência
• Eficiência.– Quadros do menor tamanho possível.– Qual é o tamanho do campo número de
sequência?• Qual é menor tamanho possível de um campo “número
de sequência”!?• Pode ser de apenas um bit?
Diferença entre este protocolo e os anteriores
• O protocolo Simples Stop-and-wait em um canal com ruídos difere dos anteriores por possuir uma variável cujo valor é memorizado quando a Camada de Enlace está em estado de espera.– Em next_frame_to_send o transmissor memoriza
o número do próximo quadro a ser enviado.– Em frame_expected o receptor memoriza o
número do próximo frame a ser recebido.
Temporizador
• Quanto deve durar o tempo do temporizador?– Curto demais – Pacotes retransmitidos
desnecessariamente.– Amplo demais – Retransmissões necessárias
demoram a ocorrer.