Redes de Computadores - I



Documentos relacionados
Nível de Enlace. Nível de Enlace. Serviços. Serviços. Serviços. Serviços. Serviços oferecidos os nível de rede

Comunicação de Dados

Introdução. Algumas terminologias. Camada de Enlace de Dados. Prof. Leandro Pykosz

1 - Cite o nome dos principais campos de um quadro Ethernet, explicando qual a funcionalidade de cada campo.

Nível de Enlace. Nível de Enlace. Serviços. Serviços oferecidos os nível de rede

Redes de Computadores II. Módulo 1 Introdução e a camada de enlace

REDES DE COMPUTADORES. Detecção e Correção de Erros

Controle de Erro em Redes de Computadores

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

PROJETO DE REDES

Redes de Computadores

6 de Julho de Exercício 23 Para que servem portas na camada de transporte?

Márcio Leandro Moraes Rodrigues. Frame Relay

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Redes de Computadores

Redes de Computadores

Redes de Computadores

Quadro de consulta (solicitação do mestre)

Centro Tecnológico de Eletroeletrônica César Rodrigues. Atividade Avaliativa

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Redes de Computadores. Camada de Transporte

Prof. Marcelo Machado Cunha Parte 3

Camada de Transporte. Protocolos TCP e UDP

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

Redes de Computadores I. Gabarito da Lista de Exercícios

Capítulo 7 CAMADA DE TRANSPORTE

Redes de Computadores I Licenciatura em Eng. Informática e de Computadores 1 o Semestre, 26 de Outubro de o Teste A

Prof. Manuel A Rendón M

Camada Transporte Parte 2. Prof. Dr. S. Motoyama



16.36: Engenharia de Sistemas de Comunicação Aula 14: Códigos cíclicos e detecção de erros

Camada de Enlace. BCC361 Redes de Computadores Universidade Federal de Ouro Preto Departamento de Ciência da Computação

Camada de Ligação de Dados

Redes Locais. Prof. Luiz Carlos B. Caixeta Ferreira

Protocolos de Redes Revisão para AV I

Redes de Computadores II Prova 3 13/07/2012. Nome:

Redes WAN. Redes de Longa Distância Prof. Walter Cunha

Funções específicas de cada camada do modelo OSI da ISO.

3 Qualidade de serviço na Internet

Redes de Computadores. Camada de Transporte de Dados: protocolos TCP e UDP Prof. MSc Hugo Vieira L. Souza

Redes de Computadores

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

2 Controle de Congestionamento do TCP

Estrutura de um Rede de Comunicações. Redes e Sistemas Distribuídos. Tarefas realizadas pelo sistema de comunicação. Redes de comunicação de dados

Teleprocessamento e Redes

Redes de Computadores II

Camada de Enlace. Agenda. Tópicos. Objetivos. Objetivos INTRODUÇÃO

CAMADA DE REDE. UD 2 Aula 3 Professor João Carneiro Arquitetura de Redes 1º e 2º Semestres UNIPLAN

Vitor Amadeu Souza.

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Controle de Congestionamento

WATCHDOG ELITE NTC OPÇÃO DE COMUNICAÇÕES SERIAIS

1 Redes de comunicação de dados

Prefixo a ser comparado Interface Senão 3

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

Redes de Computadores

4. Protocolos Teóricos e Protocolos de Controlo de Ligação Protocolos ARQ; Especificação de Protocolos; Eficiência ARQ.

Figura 1 - Operação do "cabo" virtual entre emissor e receptor

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

REDE EM BARRENTO UTILIZANDO O MÉTODO DE ACESSO CSMA-CD ETHERNET

RCO2. Introdução à camada física

Controle de Congestionamento em TCP Parte 2. Prof. Dr. S. Motoyama

Aula 6 Modelo de Divisão em Camadas TCP/IP

Capítulo 7 CAMADA DE TRANSPORTE

Fundamentos de Redes de Computadores. Camadas física e de enlace do modelo OSI Prof. Ricardo J. Pinheiro

Protocolos Hierárquicos

Rede de Computadores II

UNIVERSIDADE. Sistemas Distribuídos

Redes de Dados. Aula 1. Introdução. Eytan Mediano

Qualidade em Servicos de Rede Prof. Eduardo Maronas Monks Roteiro de Laboratorio Camada de Transporte Parte II

Tratamento de erros. Escola Superior de Tecnologia e Gestão Instituto Politécnico de Bragança Abril de 2006

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Redes de computadores e a Internet. Capitulo 4. Capítulo. A camada de rede

Fabio Bento

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Aula 04. Código BCD, Códigos Alfa-numéricos e Sistemas de Detecção de Erros

Redes de Computadores Aula 3

Redes de Computadores

TCP - multiplexação/demultiplexação

Rede de Computadores. Carlos Eduardo Pereira GCAR GCAR. IMP= Interface Message Processor. hosts. IMPs. Referência: Tanenbaum - Redes de Computadores

Interconexão de redes locais. Repetidores. Pontes (Bridges) Hubs. Pontes (Bridges) Pontes (Bridges) Existência de diferentes padrões de rede

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Redes de Computadores. Trabalho de Laboratório Nº7

Jones Bunilha Radtke. Tarefas:

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Protocolo Ethernet e Dispositivos de Interconexão de LANs

Rede de Computadores

Redes de Computadores. Protocolos ARQ Continuação Profa. Priscila Solís Barreto

PROJETO DE REDES

Arquiteturas de Rede. Prof. Leonardo Barreto Campos

SISTEMAS DISTRIBUÍDOS

TRANSMISSÃO DE DADOS

Transcrição:

Camada de Enlace de Dados p. 1/4 Redes de Computadores - I A Camada de Enlace de Dados Esbel Tomás Valero Orellana evalero@uesc.br, esbel.valero@gmail.com Curso de Ciência da Computação - UESC

Camada de Enlace de Dados p. 2/4 Introdução Objetivo: Estudar diferentes algoritmos que permitam uma comunicação eficiente e confiável entre dois computadores adjacentes no nível da camada de enlace de dados Adjacentes fisicamente conectadas por um canal que funciona como um fio os bits são entregues na ordem Analissaremos aqui: 1. questões de projeto da camada 2. natureza dos erros, deteção e correção 3. alguns protocolos 4. exemplos de alguns protocolos desta camada

Questões de Projeto Camada de Enlace de Dados p. 3/4

Camada de Enlace de Dados p. 4/4 Questões de Projeto funções implementadas nesta camada: 1. interface de serviços à camada de rede 2. lidar com erros de transmissão 3. regular o fluxo de dados Recebe pacotes e encapsula em quadros. Serviços oferecidos à camada de rede 1. Serviço sem conexão e sem confirmação 2. Serviço sem conexão com confirmação 3. Serviço orientado a conexões com confirmação

Camada de Enlace de Dados p. 5/4 Questões de Projeto Serviço sem conexão e sem confirmação: envia quadros independentes sem esperar confirmação de recebimento. Apropriado para canais com taxa de erros muito baixa ou para trafego em tempo real (dados atrasados causam mais problemas que dados perdidos). Serviço sem conexão com confirmação: cada quadro é confirmado individualmente. Util em canais não confiáveis. (questão de otimização). Serviço orientado a conexões com confirmação: se estabelece uma conexão entre as partes antes de transferir os dados. Os quadros são enumerados e a camada garante que cada quadro será entregue

Questões de Projeto Enquadramento Pacote Pacote Cabeçalho Campo de carga util Final Cabeçalho Campo de carga util Final A camada de enlace de dados é responsável por detetar e corregir erros no fluxo de dados resevidos da camada física A divição do fluxo de bits em quadros é uma tarefa complicada. Camada de Enlace de Dados p. 6/4

Camada de Enlace de Dados p. 7/4 Questões de Projeto Inserir intervalos de tempo entre os quadros Dada a difuculdade de utilizar o tempo: 1. Contagem de caracteres 2. Bytes de flags, com isnserção de bytes 3. Flags iniciais e finais, com incerção de bits 4. Violação da codificação da camada física

Camada de Enlace de Dados p. 8/4 Questões de Projeto Contagem de caracteres: Qantidade de caracteres 3 7 2 3 3 3 7 6 4 5 3 2 7 4 9 2 8 1 Quadro 1 Quadro 2 Quadro 3 Quadro 4 4 7 2 3 3 3 7 6 4 5 3 2 7 4 9 2 8 1 Quadro 1 Quadro 2 Quadro 3 Quadro 4 Contagem errada

Camada de Enlace de Dados p. 9/4 Questões de Projeto Bytes de flags, com isnserção de bytes:

Camada de Enlace de Dados p. 10/4 Questões de Projeto Este esquema, com algumas modificações, é utilizado no protocolo PPP Este esquema está limitado pelo fato de utilizar caracteres de 8 bits o que deixa de forma sistemas de codificação como o UNICODE Se faz necessário um esquema que permita o uso de caracteres de tamanho arbitrário Flags iniciais e finais, com incerção de bits: Cada quadro começa e termina com um padrão de bits: 01111110

Camada de Enlace de Dados p. 11/4 Questões de Projeto Exemplo 011011111111111111110010 0111111001101111101111101111101001001111110 A inserção de bits permite delimitar corretamente os quadros Violação da codificação da camada física: utiliza as particularidades da codificação utilizada no meio físico Muitas vezes utiliza-se uma combinação do método de contagem de caracteres com um dos outros métodos

Camada de Enlace de Dados p. 12/4 Questões de Projeto Em serviços orientados a conexão confiável como ter certeza de que todos os quadros serão entregues na camada de rede de destino? feedback do receptor sobre o estado no final da linha: Envio de quadros de controle introdução de timers na camada de enlace de dados numeração seqüencial dos quadros Controle de fluxo de dados controle de fluxo baseado em feedback controle de fluxo baseado na velocidade (não utilizado na camada de enlace de dados)

Detecção e Correção de Erros Camada de Enlace de Dados p. 13/4

Camada de Enlace de Dados p. 14/4 Detecção e Correção de Erros As principais fontes de erros estão hoje nas comunicações em linhas de par trançado analógicas e na comunicação sem fio Os erros acontecem com mais freqüência em grandes volumes (rajadas) do que isoladamente: eles acontecem mais espaçadamente mas são mais difíceis de corrigir Utiliza-se então: 1. códigos de detecção de erros 2. códigos de correção de erros

Camada de Enlace de Dados p. 15/4 Detecção e Correção de Erros palavra de código: m bits de dados, r bits de verificação (ou redundantes), tamanho da palavra n = m + r. distância de Hamming: número de posições de bits em que duas palavras de código diferem entre si. Dada uma palavra de código e um algoritmo de verificação teremos 2 m mensagens diferentes nem todas as 2 n palavras são usadas na lista de palavras de código válida a menor distância de Hamming entre duas palavras caracteriza a distância da Hamming do código

Camada de Enlace de Dados p. 16/4 Detecção e Correção de Erros Para detectar d erros precisa-se de um código de distância d + 1 Para corregir d erros precisa-se de um código de distância 2d + 1 Exemplo de correção: código com um único bit de paridade permite detetar apenas erros isolados Um código com m bits de mensagem e r bits de verificação que permita a correção de todos os erros simples deve satisfazer que m + r + 1 < 2 r

Camada de Enlace de Dados p. 17/4 Detecção e Correção de Erros Método de correção de erros de Hamming: os bits da palavra de código sõ numerados consecutivamente de esquerda para direita os bits que são potencias de 2 são bits de verificação cada bit de verificação força a paridade de um determinado conjunto de bits Exemplo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1

Camada de Enlace de Dados p. 18/4 Método de Hamming 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 V 2 V 3 1+2 4 V 5 1+4 6 2+4 7 1+2+4 8 V 9 1+8 10 2+8 11 1+2+8 12 4+8 13 1+4+8 14 2+4+8 15 1+2+4+8

Camada de Enlace de Dados p. 19/4 Método de Hamming 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 2 1 4 1 8 0 3 1 3 1 5 0 9 0 5 0 6 1 6 1 10 0 7 1 7 1 7 1 11 1 9 0 10 0 12 1 12 1 11 1 11 1 13 1 13 1 13 1 14 0 14 0 14 0 15 1 15 1 15 1 15 1 O erro está no bit 8 + 2 = 10

Camada de Enlace de Dados p. 20/4 Método de Hamming Para permitir que o método de Hamming permita corregir erros em rajada uma sequência de k palabras é organizada em uma matriz, uma palavra por linha os dados são transmitidos uma coluna de cada vez no receptor a matris é reconstruida uma coluna de cada vez se ocorrer um erro em rajada de extensão menor ou igual a k no máximo um bit de cada palavra é afetado e o método de haming conseguira corregir o erro.

Método de Hamming Camada de Enlace de Dados p. 21/4

Camada de Enlace de Dados p. 22/4 Métodos de Detecção de Erros Nos meios com baixa taxa de erros as técnicas de detecção de erros são mais eficientes. Um bit de paridade pode ser suficiente para detectar erros issolados. No entanto quandoa acontecem erros em rajada este método tem 50% de chances de descubrir o fato Um método alternatiovo pode ser montar ema matriz de n bits de largura e k bits de altura de dados. Um bit de paridade é determinado para cada coluna e fixado à matriz como a última linha Este método permite detectar uma rajada de erros de até n bits.

Camada de Enlace de Dados p. 23/4 Métodos de Detecção de Erros Código polinomial ou código de redundância cíclica CRC.

Protocolos de Enlace de Dados Camada de Enlace de Dados p. 24/4

Camada de Enlace de Dados p. 25/4 Protocolos Elementares Analizaremos inicialmente três protocolos com diferentes graus de complexidade implementados dob as seguintes hipôtesis Os processos da camada física, da camada de enlace e da camada de rede são independentes. A máquina A quer mandar um fluxo grande de dados à máquina B utilizando um serviço confiável, orientado a conexão As máquinas estão livres de panes Cada pacote aceito pela camada de enlace é encapsulado em um quadro O receptor somente se ocupa de esperar quadros

Camada de Enlace de Dados p. 26/4 Protocolos Elementares Na máquina A: A camada de enlace pega um pacote da camada de rede void from_network_layer(packet *p); Monta o quadro com o pacote acrescido de informações de controle no cabeçalho. O quadro é entregue à camada física void to_physical_layer(frame *s); O harware de transmissão calcula a acrecenta o total de verificação ao final do quadro

Camada de Enlace de Dados p. 27/4 Protocolos Elementares Na máquina B: A camada de enlace de dados aguarda void wait_for_event(event_type *event); O harware calcula o total de verificação do quadro (evento cksum_err) A camada de enlace é informada (evento frame_arrival) e pega o quadro da camada física void from_physical_layer(frame *r); Extrai o pacote do quadro e entrega à camada de rede void to_network_layer(packet *p);

Camada de Enlace de Dados p. 28/4 Protocolos Elementares 1 /* determina tamanho máimo de pacotes em bytes */ 2 #define MAX_PKT 1024 3 /* tipo booleano */ 4 typedef enum {false, true} boolean; 5 /* númers de confirmação em sequência */ 6 typedef unsigned int seq_nr; 7 /* definição de pacote */ 8 typedef struct{ 9 unsigned char data[max_pkt]; 10 } packet; 11 /* definição do tipo de quadro */ 12 typedef enum {data, ack, nak} frame_kind; 13 /* quadros da camada */ 14 typedef struct { 15 frame_kind kind; //que tipo de quadro 16 seq_nr seq; //número de sequência 17 seq_nr ack; //número de confirmação 18 packet info; //pacote da camada de rede 19 };

Camada de Enlace de Dados p. 29/4 Protocolos Elementares Para ativar e desativar o timer (evento timeout) void start_timer(seq_nr k); void stop_timer(seq_nr k); Para ativar e desativar o time auxiliar void start_ack_timer(void); void stop_ack_timer(void); Para habilitar ou não a camada de rede void enable_network_layer(void); void disable_network_layer(void); Para incrementar o número de sequência #define inc(k) if (k<max_seq) k=k+1; else k=0

Camada de Enlace de Dados p. 30/4 Protocolos Elementares Protocolo sem restrições Dados apenas em um sentido As camadas de rede estão sempre prontas Ignoramos o tempo de processamento O espaço no buffer é infinito O canal de de comunicação não perde quadros nem é danificado Maquina A Canal de Comunicaçao Maquina B

Camada de Enlace de Dados p. 31/4 Protocolos Elementares 1 typedef enum {frame_arraival} event_type; 2 #include "protocol.h" 3 void sender1(void) 4 { 5 frame s; /*quadro enviado*/ 6 packet buffer; /*pacote enviado*/ 7 while(true){ 8 from_network_layer(&buffer); 9 s.info = buffer; 10 to_physical_layer(s); 11 } 12 } 13 void receiver1(void) 14 { 15 frame r; 16 event_type event; /*nã o usado*/ 17 while(true){ 18 wait_for_event(&event); 19 from_physical_layer(&r); 20 to_network_layer(&r.info); 21 } 22 }

Camada de Enlace de Dados p. 32/4 Protocolos Elementares Protocolo stop-and-wait Dados apenas em um sentido As camadas de rede estão sempre prontas Ignoramos o tempo de processamento O canal de de comunicação não perde quadros nem é danificado O buffer no receptor não é infinito e requer um t para receber quadro e transferir o pacote para a camada de rede.

Camada de Enlace de Dados p. 33/4 Protocolos Elementares 1 typedef enum {frame_arraival} event_type; 2 #include "protocol.h" 3 void sender2(void) 4 { 5 frame s; /*quadro enviado*/ 6 packet buffer; /*pacote enviado*/ 7 event_type event; 8 while(true){ 9 from_network_layer(&buffer); 10 s.info = buffer; 11 to_physical_layer(s); 12 wait_for_event(&event); 13 } 14 } 15 void receiver2(void) 16 { 17 frame r,s; 18 event_type event; /*nã o usado*/ 19 while(true){ 20 wait_for_event(&event); 21 from_physical_layer(&r); 22 to_network_layer(&r.info); 23 to_physical_layer(&s); 24 } 25 }

Camada de Enlace de Dados p. 34/4 Protocolos Elementares Um canal com ruido Dados apenas em um sentido As camadas de rede estão sempre prontas Ignoramos o tempo de processamento O buffer no receptor não é infinito e requer um t para receber quadro e transferir o pacote para a camada de rede. Os quadros podem ser danificados o perdidos no canal de comunicação.

Camada de Enlace de Dados p. 35/4 Protocolos Elementares Se faz necessário: inclusão de um timer que gere um evento timeout inclussão de um número de sequência no cabeçalho de cada quadro enviado. Para protocolos simples um número de sequência de um bit (o ou 1) é suficiente. 1 #define MAX_SEQ 1 2 typedef enum {frame_arraival, cksum_err, timeout} event_type; 3 #include "protocol.h" 4

Camada de Enlace de Dados p. 36/4 Protocolos Elementares 1 void sender3(void) 2 { 3 seq_nr next_frame_to_send; 4 frame s; /*quadro enviado*/ 5 packet buffer; /*pacote enviado*/ 6 event_type event; 7 8 next_frame_to_send = 0; 9 10 from_network_layer(&buffer); 11 while(true){ 12 s.info = buffer; 13 s.seq = next_frame_to_send; 14 to_physical_layer(s); 15 start_timer(s.seq); 16 wait_for_event(&event); 17 if(event == frame_arrival){ 18 from_physical_layer(&s); 19 if(s.ack == next_frame_to_send){ 20 stop_timer(s.ack); 21 from_network_layer(&buffer); 22 inc(next_frame_to_send); 23 } 24 } 25 } 26 }

Camada de Enlace de Dados p. 37/4 Protocolos Elementares 1 void receiver3(void) 2 { 3 seq_nr frame_expected; 4 frame r,s; 5 event_type event; 6 7 frame_expected = 0; 8 while(true){ 9 wait_for_event(&event); 10 if(event == frame_arrival){ 11 from_physical_layer(&r); 12 if (r.seq == frame_expected){ 13 to_network_layer(&r.info); 14 inc(frame_expected); 15 } 16 s.ack = 1 - frame_expected; 17 to_physical_layer(&s); 18 } 19 } 20 }

Camada de Enlace de Dados p. 38/4 Protocolos de Janela Deslizante Protocolos de janela deslizantes: Mantém um conjunto de números de sequência agrupados em: a janela de transmissão e a janela de recepção. Necessidade de transmitir dados em ambos sentidos Optimização dos circuitos utilizando apenas um para dados em ambos sentidos (fullduplex) Técnica de superposição (piggybacking) que retarda o envio da confirmação para anexar a mesma no próximo quadro de dados. O protocolo deve entregar os pacotes à camada de rede na mesma ordem em que foram entregues à camada de enlace.

Camada de Enlace de Dados p. 39/4 Protocolos de Janela Deslizante 1 #define MAX_SEQ 1 2 typedef enum {frame_arraival, cksum_err, timeout} event_type; 3 #include "protocol.h" 4 void protocolo4(void){ 5 seq_nr next_frame_to_send, frame_expected; 6 frame r, s; packet buffer; 7 event_type event; 8 next_frame_to_send = frame_expected = 0; 9 from_network_layer(&buffer); 10 s.info = buffer; s.seq = next_frame_to_send; 11 s.ack = 1 - frame_expected; 12 to_physical_layer(s); start_timer(s.seq); 13 while(true){ 14 wait_for_event(&event); 15 if(event == frame_arrival){ 16 from_physical_layer(&r); 17 if(r.ack == frame_expected){ 18 to_network_layer(r.info); 19 inc(frame_expected);} 20 if (r.ack == nest_frame_to_send) { 21 stop_timer(r.ack); 22 from_network_layer(&buffer); 23 inc(next_frame_to_send); } } 24 s.info = buffer; s.seq = next_frame_to_send; 25 s.ack = 1 - frame_expected; 26 to_physical_layer(s); start_timer(s.seq); } }

Protocolos de Janela Deslizante Camada de Enlace de Dados p. 40/4

Camada de Enlace de Dados p. 41/4 Protocolos de Janela Deslizante Até agora supomos que o tempo para o pacote ir e a confirmação chegar é insignificante Exemplo: Canal de satélite de 50 kbps com retarde de ida e volta de 500 ms enviando 1.000 bits....... t=0 t=20ms t=40ms t=240ms t=260ms t=280ms t=500ms t=520ms t=540ms O transmissor esteve bloqueado por mais de 90% do tempo

Camada de Enlace de Dados p. 42/4 Protocolos de Janela Deslizante Permitir que o transmissor envie uma determinada quantidade de quadros antes de bloquear (no exemplo anterior o transmissor poderia mandar até 26 quadros). Necessário quando o produto da largura de banda pelo retardo é grande. num canal de bbits/s que transmite quadros de l bits com um retardo de R sgundos: u = l/(l + br) Que acontece se um quadro for danificado ou perdido?

Camada de Enlace de Dados p. 43/4 Protocolos de Janela Deslizante Estratégia de go back n Janela de recepção de tamanho 1: o receptor descarta e não envia qualquer confirmação após um quadro danificado:

Camada de Enlace de Dados p. 44/4 Protocolos de Janela Deslizante Estratégia retransmissão seletiva Os quadros que chegam após o quadro danificado são armazenados no buffer Geralmente se envia uma confirmação negativa