Comunicação de Dados Protocolos de Janela Deslizante Sumário 1) Protocolo de Janela Deslizante de um bit. 2) Protocolo que utiliza go-back-n. 3) Protocolo que utiliza transmissão seletiva. Introdução • • • • O que são protocolos de Janela Deslizante. Questão dos canais. Pegar carona. Vantagens e desvantagens. Dois canais • Nos protocolos apresentados anterior mente, os quadros de dados eram transmitidos em apenas um sentido. • Em situações mais práticas, há necessidade de transmitir dados em ambos os sentidos. • Você pode obter uma transmissão de dados full-duplex definindo dois canais de comunicação distintos e usar cada um deles para um tráfego de dados simplex (em diferentes sentidos). • Se isso for feito, haverá dois circuitos físicos separados, cada um com um canal "direto" (para dados) e um canal "inverso" (para confirmações). • Em ambos os casos, a largura de banda do canal inverso é quase totalmente perdida. Na verdade, o usuário está pagando por dois circuitos, mas está usando apenas a capacidade de um deles. Uso do canal • Uma ideia melhor é usar o mesmo circuito para dados em ambos os sentidos. – Afinal de contas, nos protocolos 2 (Protocolo básico de enlace de dados) e 3 (Protocolo simplex sem restrições) ele já estava sendo usado para transmitir quadros em ambos os sentidos. • O canal inverso tem a mesma capacidade do canal direto. Tipo de quadro • Nesse modelo, os quadros de dados enviados de A para B são misturados com os quadros de confirmação enviados de A para B. • Ao verificar o campo kind do cabeçalho de um quadro recebido, o receptor pode identificar se o quadro é de dados ou de confirmação. Pegar carona • Apesar de o entrelaçamento de quadros de dados e de controle no mesmo circuito representar um avanço em relação ao uso de dois circuitos físicos separados, ainda é possível introduzir mais um aperfeiçoamento. • Quando um quadro de dados chega a seu destino, em vez de enviar imediatamente um quadro de controle separado, o receptor se contém e espera até a camada de rede enviar o próximo quadro. Piggybacking • Quando o quadro chega, o receptor ao invés de mandar imediatamente o reconhecimento, ele aguarda a sua Camada de Rede enviar o próximo pacote. • A confirmação é acrescentada ao quadro de dados por meio do campo ack. • Note que a confirmação está pegando carona no quadro de dados. A isto de dá o nome de piggybacking (pegar carona). Janelas de Transmissão e Recepção • Em qualquer instante o transmissor mantém um conjunto de números de sequência correspondentes a quadros que ele pode enviar. • O receptor mantém uma janela correspondente a quantidade de quadros que está apto a aceitar. – As janelas não precisam ter os mesmos limites superior e inferior ou o mesmo tamanho. Janela de Transmissão • Os números de sequência no transmissor representam os quadros que foram ou que podem ser enviados, mas ainda não confirmados. • Sempre que chega um novo pacote da Camada de Rede, ele recebe um novo número de sequência, mais alto e o limite superior da janela é aumentado em uma unidade. • Quando a confirmação é recebida, o limite inferior é incrementado em uma unidade. • Se a janela chegar ao seu limite máximo, a Camada de Enlace é obrigada a desativar a Camada de Rede até que outro buffer esteja disponível. Janela de Recepção • Corresponde aos quadros que ela está apta a aceitar. • Quadros fora da janela são descartados. • Ao receber um quadro, ela o repassa à Camada de Rede e envia a confirmação. • A Camada de Rede sempre recebe quadros na ordem em que foram enviados. Vantagens • O campo ack do cabeçalho de quadro precisa de apenas alguns bits, enquanto um quadro separado precisaria de um cabeçalho, da confirmação e de um total de verificação. • Além disso, um número menor de quadros enviados significa menor quantidade de interrupções de "chegada de quadro", e • Talvez menor quantidade de buffers no receptor. Desvantagens • Quanto tempo a camada de enlace de dados deve esperar por um pacote ao qual deverá ac • Se a camada de enlace de dados esperar durante um intervalo de tempo maior que o permitido pelo timeout do transmissor, o quadro será retransmitido, o que invalidará todo o processo de confirmação. – Esperar durante um número fixo de milissegundos. – Se nenhum pacote tiver chegado até o final desse intervalo de tempo, a camada de enlace de dados simplesmente enviará um quadro de confirmação separado. Sumário 1) Protocolo de Janela Deslizante de um bit. 2) Protocolo que utiliza go-back-n. 3) Protocolo que utiliza transmissão seletiva. Protocolos de Janela Deslizante de 1 bit • Nos protocolos mostrados anteriormente, a taxa de utilização do enlace é ineficiente. • Em outro modelo, os quadros de dados e de confirmação são misturados. – O campo kind mostra se o quadro é de dados ou de confirmação. • Canal bidirecional. • Vamos supor que neste protocolo de Janela Deslizante, o tamanho máximo da janela é igual a 1. Regra Stop-and-wait • Esse tipo de protocolo utiliza o stop-and-wait. – O transmissor envia um quadro e aguarda sua confirmação antes de enviar o quadro seguinte. Variáveis • Next_frame_to _send. – Informa qual quadro o transmissor está tentando enviar. • Frame_expected. – Informa que quadro o receptor está esperando. • Nos dois casos, 0 e 1 são as únicas possibilidades. Funcionamento • A máquina que inicia busca o primeiro pacote em sua camada de rede. • Constrói um quadro a partir dele e o envia. • Quando esse (ou qualquer) quadro chega ao destino, a camada de enlace de dados receptora verifica se ele é uma cópia. • Se o quadro for o esperado, ele será repassado à camada de rede e a janela do receptor será deslocada para cima. Funcionamento (2) • O campo de confirmação contém o número do último quadro recebido sem erro. • Se esse número estiver de acordo com o número de sequência do quadro que o transmissor está tentando enviar, o transmissor saberá que já cuidou do quadro armazenado em buffer e poderá buscar o pacote seguinte em sua camada de rede. • Se o número de sequência for discordante, o transmissor deve continuar tentando enviar o mesmo quadro. • Sempre que um quadro é recebido, um outro quadro também é enviado de volta. Exemplificação Sumário 1) Protocolo de Janela Deslizante de um bit. 2) Protocolo que utiliza go-back-n. 3) Protocolo que utiliza transmissão seletiva. Pipelining • Técnica de manter vários quadros pendentes. • Quando um quadro chega danificado no receptor ele é descartado. Porém, o que acontece com os demais quadros que o seguem. • Há duas estratégias: – Go-back-n. – Retransmissão seletiva. Go-back-n • O receptor descarta o quadro recebido com erro e todos os quadros subsequentes, recebidos sem erros, até receber a retransmissão do quadro errado. • Nenhuma confirmação desses quadros descartados sem erros é enviada. • Em outras palavras, a Camada de Enlace se recusa a aceitar qualquer quadro, exceto o próximo que ela tem de entregar à Camada de Rede. Sumário 1) Protocolo de Janela Deslizante de um bit. 2) Protocolo que utiliza go-back-n. 3) Protocolo que utiliza transmissão seletiva. Retransmissão seletiva • Um quadro incorreto recebido é descartado. • Porém, os quadros recebidos depois dele, sem defeitos, são aceitos e inseridos no buffer. • Quando o temporizador termina, somente o quadro com erro é retransmitido. Negative Acknowledgement • Com frequência, a retransmissão seletiva envia um pacote NAK ao detectar um erro. • Isso evita a necessidade de aguardar o timeout para retransmitir o quadro. Discussão em classe • Um campo de um único bit, neste modelo em especial, pode ser utilizado com eficiência? • Como isto funcionaria conceitualmente. Solicitação de Repetição Automática • Protocolos nos quais o transmissor espera por uma confirmação antes de continuar sua tarefa de transmissão. – Solicitação de repetição automática (ARQ). – Confirmação positiva com repetição (PAR).