Protocolo de Janela Deslisante Aula 027

Aula 28 · Redes Teórico

Transcrição do áudio

Legal, agora eu vou explicar para vocês um protocolo específico, porque nos protocolos anteriores nós tínhamos algo muito simples, agora eu vou falar um pouco sobre janela deslizante. A janela deslizante, isso é interessante, o que mais janela faz? Abre, ela fecha, assim, agora imagine uma janela brinda e fechando e deslizando sobre os dados na horizontal. E isso é então a teoria de janela deslizante, tá? Bom, eu sei que vocês são foda em estrutura de dados e eu sei que você vai falar assim, ah, de novo, tenebol, não, vai me encher o saco com tenebol, não, cara, não tá no livro do tenebol. Na verdade, tá, mas você vai poder usar outro livro. Você tem que ficar muito foda em estrutura de dados, tem que ficar muito pica da galáxia na estrutura de dados, tá? Todo o funcionamento de um sistema, como eu posso dizer assim, o comportamento de um sistema, o comportamento, como que é o comportamento de uma chamada de um método bloqueante, cara, sobre a questão de falta de espaço na memória, que algoritmo ele utiliza, que estrutura ele utiliza, tudo e tudo, tudo, a estrutura de dados, tá? E algoritmos, só pra você extrair uma noção, se eu preciso de uma estrutura de dados pra ficar em um registrador muito pequeno, mas pra armazenar uma quantidade de dados infinita, dá pra fazer isso, dá. Chama-se lista circular com ponteiro de escrita e com ponteiro de leitura. Se você monta esse tipo, esse tipo de estrutura de dados, você consegue naturalmente, em um registrador muito pequeno, ter ali uma capacidade de armazenamento ilimitado, tá? Lógico brincando de bloquear, desbloquear as threads e leitura escrita. E aí você vai controlando que é o problema do produtor e do consumidor que você encontra lá no livro do Turnbull. Ele vai falar lá o problema do produtor e do consumidor, né? Espero que você tenha lido tudo, que você tenha fiadinho aí com os livros teóricos, tá? Então, você pode obter uma transmissão de dados do tipo FUDU PLEX definido dois canais de comunicação naturalmente, cada um deles usando um enlace separado, tá? E cada enlace, naturalmente, é dito, então, como um canal direto, tá? E outro um canal reverso, tá? Então, imagino que eu tenho dois canais, certo? Um canal só de ida e um canal só de volta. Então, vamos lá. Aqui eu tenho o transmissor, repare que a janela está fechada e o receptor, a janela está aberta. Isso é uma lista circular, tá? Aqui a janela está fechada. Então, a janela abre porque tem o feedback do outro lado que a janela está aberta. Então ela abre também. Transmite os dados. Repare, os dados foram transmitidos, mas ele não fechou a janela a zero ainda, porque o outro lado vai receber e vai avançar a janela, vai escorregar a janela na horizontal. Vai mandar o feedback, o feedback vai chegar e aí eu vou fechar a janela. Vou repetir. Aí ele vai abrir a janela, vai transmitir pro outro lado. O outro lado vai, na verdade, deslizar a janela de recebimento. Vai mandar um feedback que tem janela aberta, que foi deslizado com sucesso e vai fechar. E isso vai, naturalmente, andando aqui e escrevendo no registrador, ele vai escrevendo. Se você olhar, isso aqui é uma lista circular. Isso aqui vai, naturalmente, recebendo dados e mandando, recebendo dados e mandando, recebendo dados e mandando. E aqui também vai recebendo e processando, recebendo e processando. E aí eu tenho que, naturalmente, evitar o seguinte caso apenas. Nesse momento, eu recebi dados daqui. Repare que ele está aqui. Ele está aqui e ele está aqui, os dados. E isso aqui vai andando. Eu tenho que processar os dados antes de chegar em zero de novo. Se eu estou recebendo mais dados do que eu estou processando, então essas tradições, essa tradição vai fechar a janela. Aqui vai fechar. Não está mostrando nenhum momento fechado. Ele vai fechar. Vai ficar tipo assim o desenho. E aí o outro lado vai receber o feedback de janela fechada e vai se fechar também. E não vai abrir. Os dois vão ficar com janela fechada. As duas tradições serão bloqueadas. Então eu controlando o produtor e o consumidor, assim, eu consigo ter uma capacidade de armazenamento ilimitado e um registrador limitado. Aqui é um registrador limitado em oito porções. Cada porção, por exemplo, sendo duas palavras de 16 bits, por exemplo. Então tem uma noção aí de como seria. Adoro esse código de sala de aula. Eu mudo esse cara programar, esse cara ficar louco. Não vou fazer isso não, não vou fazer isso não. Aí eu dou para trás, não, vocês não vão fazer isso não. Aqui eu tenho protocolo 4, frame, pacote, event type. O próximo frame, o frame esperado. Foi o network layer. Jogo o pacote no quadro, adiciona o número de sequência, cria um app knowledge, manto para a camada física e está todo tempo. O timer. E aqui eu fico num lasso infinito enquanto o evento não for um evento do tipo de chegada, o evento tipo assim, que no próximo frame foi enviado. Aí eu analiso o evento, faz o processamento do evento, incremento que tem que ser incrementado, pego o buffer, mando um novo número de sequência, camada física e o tempo de novo. E aí eu entro num lasso infinito, um lasso infinito, um ai outro aqui, mandando. Ele envia, recebe, do outro lado aqui, viu, recebe. E aí esse cara manda um feedback, eu recebo feedback e aí eu envio o próximo. Recebo feedback e repare que eu estou alterando aqui, 0,1, 1,0. 0,1, 1,0. Se tiver uma quebra nessa sequência, ela é percebida. E aí eu sei que houve uma falha. Além da estrutura de dados, em si, para os dados, nós temos o timer. O timer também está numa estrutura de dados, no caso que ele está em uma lista encadeada, isso é totalmente. Circular a de dados. E encadeada o timer. O sistema operacional vai armazenar esses timbres assim. Imagine então, por exemplo, que esse timer chega até o fim, dá um estouro. E é refeito o link, ele é refeito o link para o próximo. E ele vai trabalhando com essa estrutura de dados. Aqui nós estamos vendo que... Imagine que eu tenho um satélite, certo? Um satélite. Um satélite está fora da defesa do nosso planeta. Vamos assim, o nosso planeta se defende com dois campos eletromagnéticos, muito forte, cara. Inclusive a nossa atmosfera não foi raspada, ainda ou seja, o vento solar, ele empurra as partículas, ele faz uma varredura elétrica. Então imagina elétrons passando e ionizando e movimentando a matéria para mais longe do sol possível. O nosso satélite está nessa merda toda lá, o nosso satélite está lá, certo? E isso é muito caro, você manter uma memória no satélite. Então vamos imaginar primeiro um satélite sem memória. Eu mando o zero, o zero chega a quinoa de zero. Repare que quando a quinoa de zero chega na Terra, está invertida, ele chega, a Terra está mandando três, né? Porque tem um tempo para chegar até lá, né? Um quarto de segundo, tá? Um quarto de segundo. Então mando o primeiro, chegou a quinoa de zero, repare que mandou o segundo, a quinoa de zero. O terceiro, falha, falha. Repare que ele continua enviando até perceber a falha dos dados e o que foi enviado corretamente, que é o D, ele é ignorado, ele é descartado, porque não tem memória. Repare que estoura o time-out, foi mal, desculpa, estoura o time-out, ou seja, estoura o timer aqui e ele é enviado dois, estoura o timer do dois, que estaria na cabeça, que estoura, ele sai e aí ele envio dois e aí é quinoa de zero. Porque o satélite não tem, naturalmente, uma memória adequada. Lembrando que não é tão barato essas coisas, né? Você tem que lembrar que esse satélite está numa área que tem campo eletromagnético, vento solar, ondas de fundo do espaço, né? Você tem todo tipo de radiação lá, né? Tanto que nós estamos até hoje tentando chegar na Lua ainda de novo, né? Os americanos estão até hoje tentando chegar lá, né? Como é que eles chegaram? Não sei. Olha só, mandou o Akinolite, chegou, mandou, chegou, falha, chegou, repare que quando tem memória ele mantém no satélite, né? E repare que ele retornou na Akinolite dois, ou seja, não foi encontrado o Akinolite dois. E aí, então, repare que aquele está trabalhando sem time-out, tá? Está trabalhando só com feedback e com memória no satélite. E aí ele consegue, naturalmente, ser mais eficiente, tá? Então, o protocolo de janela deslizante, eu posso utilizar ele também dessa forma, tá? Tanto o transmissor quanto o receptor mantém uma janela de números de sequência, né? Pendentes assentáveis, naturalmente. A tamanho da janela do transmissor é medida a partir de zero e atinge um número máximo que é que aqui foi utilizado como janela o tamanho um. Poderia ser utilizado o tamanho dois. Como assim? Eu mando uma porção, eu mando uma porção. Chega sucesso de uma porção, eu avanço duas porções, tá? Eu avanço duas porções, eu mando duas porções de dados. E aí chega dois feedbacks de sucesso. Eu aumento a minha porção para três, banhando três porções. Chega um feedback de dois sucessos. Mas eu mandei três fudeu, eu fecho para duas porções e retransmito as duas porções. Aí eu exebo um feedback de dois sucessos, tá? Repare que eu posso também ter uma janela abrindo mais do que uma porção. Um número máximo predefinido que no livro ele coloca um. Então, eu posso ter uma retransmissão seletiva do qual eu busco aquele caso daquele frame que não chegou. Que ele seria seletivo a este ponto aqui do B. E ele seria naturalmente um satélite com memória, com mais processamento, menos burro. Ele é seletivo. Repare que ele tem que... se o Naq, ele retransmite o Akinolet mais um. E aí ele vai. Beleza? Bom, transmissor e receptor, eu posso naturalmente pegar uma situação aonde eu tenho um bloco com sucesso e uma falha. E aí, naturalmente, eu posso processar somente aquela falha. O próximo vídeo vou falar sobre os principais protocolos de camada de rede que você deveria saber aí. Para uma possível prova, um exame, um concurso público, sei lá, cara. Geralmente as empresas não fazem uma prova de conceito para um cara. A empresa privada chama e depois demite. No caso do setor público, como tem uma certa dificuldade para a demissão, ele é costumado fazer uma prova de conceito. Então, alguns protocolos seriam interessantes você fazer, talvez até para uma certificação sisco. Até mais, até o próximo vídeo. Tchau.
Voltar ao curso