Transcrição do áudio
No começo das redes de computadores as redes eram projetadas e pensadas somente na questão de hardware. O software era algo marginal das redes de computadores. Isso lá no início. O volta de 1924, a AT&T percebe o erro e começa a investir na questão de software. Pelo menos não software como nós conhecemos, você tem que entender isso. Inclusive a AT&T vai ser uma das responsáveis pelo avanço do sistema operacional UNIX. Tanto que hoje todo projeto de rede naturalmente envolve o hardware e o software como uma solução. Bom, se você olhar o problema da comunicação, por exemplo, pegar um fluxo de bits, confiabilidade, manter um fluxo disso constante, criar rotas e chegar até aquela máquina destino, como uma porção de dados compreendível, que faça sentido afinal a mandar essas informações, cara isso é um problema muito complexo para se pensar como transmissão de dados. Então, os caras pensaram o seguinte, vamos quebrar a complexidade das comunicações, das transmissões de dados em camadas. Vamos quebrar essa complexidade em camadas. Vamos estudar, evoluir cada camada e cada camada, em cada camada nós vamos, naturalmente, fazer algo em cima desses dados, para que isso aconteça. Então, para reduzir essa complexidade, onde o seu projeto, a maioria das redes, é organizado em pilhas, por que pilhas de camadas? O sistema operacional também é organizado em camadas. Em camadas, posso dizer que é a organização mais simples de softwares, por exemplo, e, naturalmente, além de ser simples, ela é muito efetiva. Então, essas camadas são colocadas umas sobre as outras. Todas as redes, o objetivo de cada camada, é oferecer um serviço às camadas superiores. A camada inferior sempre presta serviço para a camada superior. Seja os dados, saindo da máquina ou chegando na máquina, não importa. Sempre a camada inferior presta serviço para a camada superior. Sempre. Isolando, então, a camada superior de todos os detalhes da implementação real daquela camada. Então, ou seja, quando eu ofereço um serviço para a camada superior, eu abstraio para a camada superior toda a minha complexidade. Ou seja, a camada superior não tem que saber da toda complexidade feita em mim. Isso é bacana, tá? Isso eu acho um ponto muito forte nessa questão do uso de camadas, né? Na ciência da computação, beleza? Então, sempre assim, a camada K oferece serviço para a camada K mais um. E sempre a camada K consome serviços da camada K menos um. Ou seja, da camada inferior. A camada K, tá ok? Não conhece toda a complexidade da camada K menos um. Vem como a camada K esconde toda a sua complexidade para que a camada K mais um não tenha que saber dessa complexidade. Ou seja, abstração. Repare que eu estou falando que as camadas abstraem a parte complexa do que ela faz. E isso é muito importante. Na computação, nós vamos ver muita questão de abstração, tá? Esses modelos em camada são ótimos para esconder abstrações. Esconder as complexidades em forma de abstração. Cara, a madrugada foi longa agora, praticamente não dormi. E esses serviços, eles estão implementados em interfaces, tá? De interfaces são um conjunto de primitivas que têm assinaturas dos métodos bem definidos, tá? Nós vamos chegar na questão de programação mais no futuro. E existe uma interface entre a camada 2.1, 3.2, 4.3, 5.4. Não importa se os dados estão indo ou vindo, tá? Sempre a camada superior consome serviços da camada inferior por meio dessas interfaces programadas. Então, você consegue interagir com linguagens não tão alto níveis como Java, como C-Chat, linguagens mais baixo nível, ok? Eu sei que a galera C, C mais torce o nariz quando fala mais baixo nível, é que com C eu consigo interagir mais com o sistema operacional do que essas linguagens que possuem um framework, uma máquina virtual e o escambal a quarto, tá? Vamos lá. Com a camada N, uma máquina, se comunica com a camada N de outra máquina, coletivamente as regras e convenções usadas nesse diálogo são conhecidas pelos elementos da camada N, tá? Vamos avançar aqui dois slides que eu vou mostrar com imagem. Tanto o host 1 como o host 2 possuem a camada 5. Pra que a camada 5 do host 2 entenda o que a camada 5 do host 1 quis dizer, existe parâmetros, existe protocolo entre elas e esse protocolo é o único entre elas. Ou seja, vamos trazer para um mundo mais simples. Se a camada 5 fala inglês, a camada no host 1, a camada 5 no host 2 tem que falar inglês também, tá? Você ficou bem claro isso pra você, né? Não adianta o host 1 na camada 5 falar inglês e o host 2, camada 5 falar português. Não vai entender, não vai entender o outro. Ah, então a mesma coisa, a relação minha e o pai? Porque meu pai fala as coisas que eu não entendo, bosta nenhuma. Não, pai, aí já é um pouco da sua revolta, meu garoto. Vocês são jovens, vocês vão entender. A camada 4 também possui um protocolo comum, né? Ali com a outra camada 4 da ultramacna, chamamos essas camadas de entidades pares, tá? Chamamos essas camadas de entidade par, ou seja, a entidade par da camada 4 do host 1 e a camada 4 do host 2, aquela é a entidade par, beleza? Tem que ter um diálogo entre elas, então tem que seguir um protocolo entre elas, tá? Então, basicamente, um protocolo é um acordo entre as partes que se comunicam e estabelece, então, uma comunicação que se possa, naturalmente, compreender. Mas o que acontece? A comunicação entre essas camadas, né? Elas não acontecem de forma direta, por exemplo, a camada 5, falamos que elas comuniquem com a camada 5 da ultramacna, mas, na verdade, essa comunicação é indireta, porque ela é só... A camada 5 passa para a camada 4, para a camada 3, para a camada 2, para a camada 1. Vai pelo meio físico, vamos colocar aqui um cabo metálico. Chega na camada 1, vai para a camada 2, vai para a camada 3, vai para a camada 4, aí vai para a camada 5. Aí essa camada aqui vai saber o que a outra quis dizer para ela. Ui, sério, tá? Esse é o esquema. Vou trazer um exemplo aqui para ficar bem claro. Vamos agora a um exemplo bem básico, tá? Bom, então aqui está separado as camadas, né? A camada de filosofio, o Tânimo adora os oafilosofos, tá? O Tânimo, ele é um cara que todo o livro dele conta piada de filosofo, né? Aqui nós temos a camada de tradução, tá? E aqui nós temos a camada de envio e recebimento, totalmente, tá? Bom, você já imaginou que um filósofo se casasse com uma pessoa que trabalha com tradução? Você pensou como seria o almoço dessa moça aqui, casada com esse filósofo aqui? Basicamente, ela ia não entender nada, ela ia terminar esse relacionamento, afinal, ela tá casada com um filósofo. Filosofo no almoço só filósofa. Hahahaha. Ou seja, eles não se dão muito bem. Eu acredito que essa tradutora tenha um caso com esse filósofo, ou com esse tradutor, e é casada com esse filósofo que babado e que trabalha para esse... Tradutor trabalha para esse filósofo, não, porém, eu não quis trazer vocês para esse exemplo para ficar falando desses babados no livro do Tânimo, né? Bom, o que eu quis dizer para vocês é o seguinte. Filósofos se entendem, tá? Filósofos se entendem, tá? Eu, graças a Deus, não sou casado com uma programadora, tá? E que imaginando como deve ser triste para um cara programador, casado com uma programadora, que programinjava, hahaha. Mano do céu. Deve ter muito triste no almoço ficar falando de... System.ot.printalien me passa a couve. Aí, System.ot.printalien toma aqui a couve, né? Praticamente acho que se você conversa no System.ot.printalien, né? Hahaha. Então o filósofo... entende, filósofo. Tradutor, entende, tradutor. Programador, é, programador. A secretária entende a secretária, né? Programador, casado com programadora, entende. Programador, não sei, não. Hahaha. Mas não é para vocês pegarem a jogada, né? Tá bom. Vamos lá. É que tem um alí, o trabalho tem um cara nerd, um professor nerd. Que ele é casado com uma esposa que programinjava, né cara? Nossa, tomara que essa piada chegue até ele, tá? Vamos lá. É, então eu queria dizer que o filósofo do local A, que fala português, tá? No livro original, ele fala... Eu acho que ele fala inglês para francês, tá? Aqui tem português. Aí, o que acontece? Naturalmente que o outro filósofo não entende português. Mas o objetivo do filósofo é filosofar. Então, tá dando coerência com ambos aqui, o que ambos fazem, tá? Então, como é que vai fazer? Esse filósofo, então, se utiliza de um serviço de uma empresa de tradução, tá? Vai chamar lá os tradutores, tá? Os tradutores vão traduzir, eu gosto de coelho, e vão tumbar aqui uma informação aqui. Tipo, essa informação que foi fumbada aqui, é para que o elemento da entidade par dele do outro lado saiba o que fazer, tá? Imagine que não fosse adicionado o holandês, que fosse apenas traduzido. O que que aconteceria do outro lado? Se esse outro tradutor teria que pegar e tentar reconhecer em que de acho de língua ou cultura, vamos colocar assim, o outro tradutor quis traduzir, cara, tá entendendo? Então, repare que essa informação adicionada no Rader, no Rader, é utilizada pela entidade par do outro lado. Isso é importante. Legal, logo em seguida, essa mensagem mais o Rader da camada 2 segue para a camada 3, aonde nós temos um especialista que vai conseguir pegar essa informação, portar em algum meio de comunicação para chegar lá do outro lado, bem longe, lá no local B. Só que, naturalmente, essa camada, especialista nesse envio, ela adiciona mais um pedacinho no Rader aqui, dizer, olha, meu fax é tal, seu fax é tal, e há os cuidados do filósofo aí do local B, e vai estar aqui no Rader. E nesse Rader, ele vai ser colocado aqui para que o outro elemento, a entidade para que saiba o que fazer, tá? Bom, olha que interessante. De quem é a necessidade do filósofo aqui de consumir o serviço de tradução? O serviço de tradução tem uma necessidade de consumir o serviço do pessoal, do envio. A informação chegou do outro lado, legal. Então aqui, o especialista em ler essa mensagem, leu o Rader, escrito pela sua entidade Pá, para saber o que fazer. E nesse Rader está lá, há os cuidados do tradutor e do filósofo aí do seu local, e ela sabe de quem veio porque tem também o endereço dela, o telefone. Então essa pessoa que pega, recorta, recorta a sua parte que interessa ao tradutor e ao filósofo e manda para cima. Mas se mandar para cima, presta atenção. Dá sempre a visão, e isso é um erro, é um erro das explicações do mundo, das redes de computadores, tá? Dá a impressão que a secretária que está consumindo o serviço do tradutor, não, do outro lado também, o filósofo contrata o tradutor, e o filósofo fica, tradutor tem alguma coisa para mim? Não, então fica quieto. Filósofo daqui a pouco, tradutor tem alguma coisa para mim? Não, então fica quieto. Filósofo tem alguma coisa para mim? Tem, aí pega e faz o que tem que ser feito. Pega o jogado, é sempre de cima para baixo, num laço de repetição infinito, ao aio aí. Ao aio tru aí para vocês. Eu vi um falando, quando vocês ficam foda em programação, em tecnologia, só de vocês entenderem como que é a explicação da mecânica desse negócio, e das coisas do mundo, você já começa a pensar nas estruturas, você sabe como é o código, como foi feito esse negócio, tá? E é um aio tru mesmo. Da mesma forma, o tradutor vai na camada aqui do fax, da secretária. Ou tem alguma coisa para mim? Não, então fica quieto. Tem alguma coisa para mim? Não, então fica quieto. Tem alguma coisa para mim? Tem, olha só, chegou o fax aqui, ok? Eu não sei dizer o que está escrito, mas é para você. Aí manda para cima. E a camada inferior nunca pode mexer nos dados da camada superior. Tá entendendo? Tá claro isso? Se você tiver que mexer, você tem que ter todas as camadas e mexer na camada adequada. Mas nunca na inferior para superior. E aí eu recebi essa informação. Aí o tradutor repara que está em holandês, isso aqui. E como o tradutor foi contratado pelo filósofo desse local, então ele naturalmente sabe que para cima vai ter que traduzir para francês. E aí ele vai ficar aqui, o filósofo. Ou tem alguma coisa para mim? Tem, chegou um texto para você, pera aí. Vai traduzir esse texto que está em holandês e vai subir somente o que é necessário para o filósofo. Então repare que nesse exemplo, embora muito humano, muito simples e trivial, pode se explicar todos os conceitos de pilha de protocolos e redes de computadores. Então é assim que funciona. Beleza, vamos voltar aqui. Então entre cada par de camadas adjacentes existe uma interface. E isso é bem definido. E são serviços definidos pela camada inferior. Então tem uma interface aqui. Não está aqui, mas deveria ter um desenho de uma pastinha, ou seja, alguma coisa assim, que são as interfaces aqui. Então são os serviços bem definidos. Um conjunto de camadas e protocolos é chamado de arquitetura de redes. Então eu quis dizer que isso aqui é uma arquitetura de uma rede. Isso aqui é uma arquitetura de uma rede. E que naturalmente deve punter informações suficientes para permitir o desenvolvimento de hardware e software. Então quando nós especificamos esses tipos de arquiteturas de rede, nós projetamos as funcionalidades, projetamos o que vai acontecer em cada camada, projetamos aqui o código, as assinaturas dos métodos, as funções do sistema personal para atender a camada superior. Os protocolos de comunicação. Qual o protocolo de comunicação do filósofo? Qual é o protocolo de comunicação que existe aqui? Filosofa. E aqui qual o protocolo de comunicação que existe aqui? Tradução. E aqui de envio e atendimento. Veja que existe um protocolo ali. Desculpa brincadeira do casar com o programador, mas eu não podia perder a piada do meu colega de trabalho. A mulher dele não pode nem me ver, eu acho. Vamos lá. É natural que esse hardware pode ser implementado, o software pode ser implementado pensando na pilha de protocolos. Uma lista de protocolos usados por um determinado sistema é chamada de pilha de protocolos. E aqui nós temos as pilhas de protocolo. Por exemplo, qual foi a pilha de protocolos utilizada aqui? Filosofia. Tradução. Envio e recebimento. Essa foi a pilha de protocolos utilizadas aqui. Então aqui vai ser definido cada camada, a pilha de protocolos aqui. E as camadas, as entidades pares vão seguir o protocolo. Bom, e aí naturalmente nós vamos adentrar nesses dois livros de rede de computadores, nós vamos adentrar muito nessa questão de protocolos e especificações técnicas. Existem as especificações técnicas. Bom, você não vai pegar seu DVD da Shakira de 4.7 GB lá no talo do DVD e vai transmitir esse DVD da Shakira pela rede mundial, o inteirinho bonitinho, né? Na verdade, como a Diva Shakira merece ser transmitida pela rede mundial. Não, seu DVD, Mega Ultra Master da Shakira, vai ser dividido em milhões de pedacinhos de mensagens e essas mensagens então serão enviadas para, na verdade, elas serão enviadas, né? Eu estou enviando para a camada superior para um serviço e aí esse serviço vai adicionar o Rader, fazer um trabalho sobre a mensagem e mandar para a camada inferior que vai fazer um trabalho em cima da mensagem, vai adicionar o Rader dela, ou seja, oitaprela, o Rader do 4 mais o Rader do 3 mais o Rader do 2 e o 1 não tem Rader porque eu já explico mais para frente, tá? Igual aqui, veja, eu tenho a filosofia, o texto filosófico que eu gosto de coelho, eu gosto de coelho cara, eu gosto de coelho, batatinha, tá? Eu gosto de taioba com coelho, taioba com talo, de taioba com coelho, coisinha é muito bom, se não tem taioba você pode usar talo de couve para cozinhar seu coelhinho, tá ok? E aí eu gosto de coelho, tá? E naturalmente, quando aquela filosofia desse, o filósofo escreveu um grande texto filosófico ali para a humanidade, eu gosto de coelhos, mandou para baixo e ali houve então o... Vai dissonar o Rader do tradutor, o que está aqui, do holandês, e quando desceu além do Rader holandês foi funcionado o trecho ali do envio do fax, né? E aos cuidados, escambado a 4, por outro lado, saber o que fazer com essa mensagem, tá? Então se você olhar bem mesmo, seu DVDzinho da Shakira de 4,7 giga, meu, vai ser muito maior quando passar realmente pelos bits da rede mundial de telecomunicação. Tá fazendo pirataria do DVD da nossa diva Shakira, rapaz. Você quer tomar uma trauletada aqui do cara verde, caraca, rapaz? Vai pagar, vai pagar por um DVD original da Shakira, cara. Shakira merece, ela é a diva, meu. Vamos lá. Então aqui eu tenho a mensagem e ela vai sendo quebrada, cara. Devido à necessidade, ela vai sendo quebrada, tá? Mas isso depende muito da tecnologia por trás disso, tá? Por exemplo, Ethernet, que é o que você tem na sua casa, esse cabinho azul, ele trabalha com pedaços de mensagem muito grande, 1.063 bytes, né? No máximo. Na rede de telecomunicação na operadora, isso é muito grande, então lá quebra para 512, tá? Então veja bem, chegando ali na rede de computadores lá na operadora, isso é quebrado baseado na necessidade deles, técnica deles, tá? Por que que aqui não tem rede, não tem nada? Aqui já é um fluxo de bits. Imagine, você não vai criar um rede de 500 bits para mandar um bit. Tá entendendo? Não tem lógica. Então não tem o que fazer, na camada mais baixa do modelo de comunicação, ali praticamente é um fluxo. Então não temos como fazer muita coisa, fluxo de uma unidade de medida muito pequena, que é o bit, cara. Eu não poderia tratar um bit, eu mandaria o que? Outro bit para corrigir um bit? Meu DVD da Shakira de 4.7 GB e virar quase 9 GB acetada. E se eu tivesse que colocar um rede, 512 bits para cada bit do DVD da Shakira, e vou multiplicar o DVD da Shakira por 520? Ou seja, lá quanto for? Não bate, não bate. Então por isso a camada mais baixa, ali, trata-se da transmissão de bits. Então, eu, camada, vamos pegar aqui uma imagem para vocês entenderem. Eu, camada 5, tá? Eu, camada 5, tá? Olha bem essa imagem, vou voltar nela. Eu tenho uma comunicação horizontal, por que? Eu, camada 5, do host 1, quero me comunicar com a camada 5, do host 2. É quem eu vejo, é quem eu ao mesmo me comunicar. Mas, naturalmente, esse enviar para o outro lado, o receber do outro lado, camada 5, camada 5, tá? Na verdade, ele ocorre na vertical e não na horizontal. Não sei se vocês já viram, Ronaldinho Gaucho jogar, mas tem hora que ele olha para o companheiro da direita e toca para o companheiro da esquerda, cara. É mais ou menos isso, né? Eu olho para a camada 5, faço que vou chutar a bola para a camada 5 do outro lado, mas na verdade eu chuto para a camada 4, que está aqui na minha máquina. Essa é a verdade, tá? O que é o azul, o que acontece real, tá? E isso, naturalmente, porque eu não tenho um fio entre as camadas, né? A ideia de camadas é apenas manter um protocolo entre elas, né? Eu fiz esse desenho aí. Bom, e dessas pilhas que nós vamos projetar, inclusive no próximo vídeo, calma, tem nome ainda não. No próximo vídeo, nós vamos falar de pilhas de protocolos reais, tá? Essas pilhas de protocolos que eu estou colocando aqui, tá? Elas foram projetadas com alguns pontos interessantes, tá? Por exemplo, em que ponto é feita a detecção de erro e até que ponto detecto esse erro, tá? Se eu posso ou não corris vir esse erro, é outro ponto interessante, tá? Nós vamos ler duas camadas no modelo, já vou até adiantar o modelo OSI, né? Nós vamos também falar sobre roteamento de mensagens, comutação de mensagens também, né? Ah, eu falei do detecção com esse erro, camada 2, camada 4, roteamento e comutação, camada 3, ali, roteamento, camada 2, comutação, tá? Os protocolos que podem ser transmitidos, endereçamento e nomeação, por exemplo, nomear uma máquina, endereção e máquina da rede, ou uma máquina no mundo, com uma numeração uniforme, né? Então, camada 2, camada 3, ali, também faz esse tipo de endereçamento, de máquinas, e tem endereçamento de processos no camada 4, né? Tudo isso nós vamos entrar nos mínimos detalhes. Vocês vão programar esse negócio, caramba. Vocês vão programar isso em ser mais mais, cara. Impacto em ser mais mais, vou ajudar vocês. Estão de interligação de redes, por exemplo. Muitos usuários já usam fibra da operadora, fibra direto, não é um cabo o Tp chegando até você. A fibra vem até o equipamento, né? É sua casa. Aquela fibra é um tipo de rede. É uma tecnologia. E já o cabinho azul que vem do lado do aparelho até seu computador é uma outra tecnologia. São redes diferentes. Então, existem equipamentos que interligam redes de tecnologias diferentes. Vamos falar sobre isso também, naturalmente. Falar sobre a escalabilidade das redes de computadores, principalmente na camada 3, a questão de múltiplas rotas, né? Multipliquização de camada 4 de transporte, a questão de controle de fluxo, de dados, né? Para você manter uma comunicação confiável. Ou seja, olha que interessante. Se enxerga metade da informação muito rápido e a outra metade da informação começa a demorar muito, isso é um indício que não tem qualidade. Sem que a informação tivesse qualidade, não estou dizendo que chegaria mais rápido tudo. Mas seria um uniforme as porções que ficam até mim, de tempo e tamanho, entendeu? E isso é confiabilidade, inclusive de aplicações em tempo real. Só para você ter a noção, uma linha de produção automobilística, né? O Brasil não tem mais. Vamos pegar aqui. Argentina ainda tem, eu acho. Eu não sei. Então eu estou pegando só país fudido em Brasil, Argentina, Venezuela. Vamos pegar aqui uma linha de produção da Ford americana lá na França. Existe uma comunicação em tempo real daqueles braços de operação. Então o fluxo tem que ser controlado, tem que chegar no tempo exato a informação do comando para os braços robóticos, das linhas de produção, tem que chegar num espaço de tempo bem homogêneo, os pedacinhos. Pegou a jogada, não é da importância disso? Congestionamento, naturalmente, o congestionamento mais em exições e mais dados do que realmente a rede aguenta. Nós temos algumas formas de se livrar disso. O que é o de tudo? Escolamento de carga, a gente vai discutir isso. E qualidade de serviço, né? Principalmente a camada 4 do modelo OZ. É uma camada que tenta trabalhar com essa ideia de qualidade. Beleza? Bom, as camadas, isso aqui é muito bacana. Desses serviços todos, nós oferecemos dois tipos de serviços. Fipos de serviços, tá? São serviços que são orientados à conexão, serviços orientados à conexão, são os serviços que dão controle legal e serviços não orientados à conexão, onde não há um controle legal da comunicação. Vamos colocar assim. Vamos entrar, naturalmente, muitos detalhes disso aí, tá? Bom, no serviço orientado à conexão, basicamente, vou explicar superficialmente, porque vamos entrar muito a fundo nisso, é necessário se estabelecer parâmetros iniciais, tá? Monitorar e ajustar a conexão, de acordo com o estado da rede naquele momento. Imagine duas máquinas se comunicando por meio de um router e estabelecendo lá uma comunicação um megabit por segundo. Do nada, esse router começa a se sobrecarregado por várias conexões de outras máquinas também. E aí, ele passa por um problema, vai cair em congestionamento. Então, o serviço orientado à conexão monitora esses acontecimentos e consegue fazer com que, naturalmente, eu caia 20, 30, 40% do que foi estabelecido inicialmente. Por isso, quer você ter parâmetros iniciais, monitorar esses parâmetros e manter um fluxo confiável de dados, tá? Isso ocorre nos serviços orientado à conexão. Para isso, cria um acordo entre todos os elementos para fazer esse tipo de conexão, ok? Ou seja, se é feito um serviço orientado à conexão de uma requisição sua, que é até o YouTube, na Califórnia, é fechado um acordo entre todos os equipamentos, é definido uns parâmetros e depois começa a receber o vídeo e aí é monitorado, tá, ok? Os já os serviços não orientado à conexão, a transmissão se dá sem necessidade de estabelecer nenhum circuito, nenhum parâmetro, nada. Simplesmente, eu pego uma porção de dados e mando. Então, porções de dados são roteadas pela rede mundial por diferentes rotas, não tem um. Não tem um circuito para seguir. Em diferentes lugares do mundo, tá, ok? Eu vou explicar para vocês também a questão de roteamento, tabelas de roteamento, mais para frente, tá? E inclusive esse momento em que se decide por qual caminho seguir, tá? Bom, é natural que eu posso também solicitar, ou... Eu te mandei aí um cabaite, pegou esse um cabaite aí, ah, chegou. Pode ser que o serviço seja não orientado à conexão, mas as duas partes de tempos em tempos perguntam. Ou, eu mandei um mega exato para você, chegou até aí, ah, chegou um mega exato. Ah, então, vamos continuar mandando. Ainda a possibilidade de se adicionar, adicionar, né, feedbacks. Nós vamos falar bastante disso também, tá? Bom, então aqui nós temos os serviços clássicos, serviços clássicos, né, clássicos. Fluxo de mensagens confiável, tá? Exemplo, sequências de páginas lhe entregue, então ele é dada a porção exata de uma página, tá? Uma página web, tá? Uma página de dados. Fluxo de bytes confiável, tipo, eu não perdei, não, tá? É minha mão que fez aqui, assim, fez um bando, não foi que não, foi minha mão aqui, não. É, um fluxo de bytes confiável, tá ok? Ah, o maldito. E, cara, isso é foda, fazer esse tipo de comunicação, tá, cara? Esses estruim de dados, tá? E eu gosto muito de mexer com comunicação de dados e eu gosto muito desse fluxo de bytes, né? Pra, inclusive, para mudar arquivos, baixar arquivos, né, não só download filmarias, são exemplos, né? São exemplos, tá? E a galera não gosta muito. A galera não gosta muito, não. A galera gosta de trabalhar com porçãozinha certinha, né? Mas, cara, tem que dominar essa parte, essa programação de fluxo de bytes, tá? Teve um tempo atrás aí eu consegui mandar um fluxo de bytes pro YouTube, dentro de um protocolo que vou estar no futuro pra vocês. E eu consegui fazer uma live com Python, entendeu? Então, gravando aqui a câmera, toquei gravando a minha tela com Python, me esclando as duas imagens e mandando, tá? Foi uma... como uma bosta no processador, mas funcionou, que legal. A conexão não confiável, tipo VoIP. Ah, cara, não confiável, cara, isso é uma palavra muito pórdica. Por exemplo, você participa de alguma reunião, tipo TIMS, Google Meeting, você utiliza esse tipo de conexão também, tá? Ou seja, não é feito um controle, porque imagina, se falta um pedaço da minha fala numa reunião, o que você faz? Não entendi, pode repetir? Ou a galera começa a falar, tá picotando, tá picotando, tá entendendo? Então, eu posso muito bem, né? Ter ações humanas trabalhando ali em serviços não confiáveis de entrega de dados, tá? É, datagrama não confiável, lixo... lixo de correio eletrônico? Correio eletrônico é um lixo. Ahahahahahah. Então, você pode ter datagramas ali não confiáveis, tá? Sem nenhum tipo de controle. Datagrama confirmado, mensagens de texto, mas que retornam um feedback, né? Solitação de resposta, né? Consulta de um banco de dados, afinal, ultima, dei uma query, você me dá uma resposta, eu recebi a resposta, porra. Deu certo, entendeu? Então, tem vários serviços, nós vamos adentrar ali, naturalmente, nos capítulos de segregar melhor isso aí, né? Inclusive, com exemplos, e quando eu for programar com vocês, nós vamos programar usando esses serviços aí, vai ficar bem mais claro, tá? Para que você programar. Tu quer ou quer, foi embora. É, eu moro aqui do lado de um pasto, eu moro no meio um rural, entendeu? E eu quero, eu quero, passou a noite e toda, me enchendo a paciência aqui no pasto aqui. E agora, ele foi embora. Agora! Meio dia, desgramado. Das 3 da manhã até agora, me enchendo a paciência, eu vou embora, quero, quero. Bom, um serviço é especificado formalmente por um conjunto de primitivas no sistema personal, operações, tá? Funções, vamos colocar assim. Disponíveis para que os processos dos usuários acessem essas primitivas, essas funções que estão no índol, dentro de bibliotecas ou no Linux, dentro de binários, como a pontos SO, né? Ah, binários em geral, ponto BIM também. Essas primitivas, em forma ao serviço, né? Que deve ser, deve fazer alguma funcionalidade ali dentro do seu personal, geralmente, uma manipulação dos dados para que a entidade par do outro lado consiga entender, naturalmente, a transmissão até a entidade par do outro lado. É isso? Bom, as primitivas para um serviço orientado à conexão são diferentes de primitivas de serviços não orientado à conexão, e isso eu vou lhes ensinar. Mas também, nós vamos programar, tá? Bom, como o exemplo mínimo das primitivas, o mínimo, o mínimo, vamos ver um Unix básico, tá? O Unix básico é o mesmo lá da sua raiz, tá? As primitivas do sistema personal que nós tínhamos, o ListNem, que é você escutar uma porta, vamos colocar assim, eu sei que você vai falar assim, porra, porta, que é porta? Imagine que porta é um ponto de entrada, tá? Da sua máquina, tá? Nós vamos falar muito disso no capítulo de camada de transporte. A Connect, no qual um cliente executa para se comunicar com a máquina servidora. Então, o ListNem é feito no servidor, Connect é feito no cliente. O Acept, que é para aceitar um par para comunicação, tá? Recebe send para receber e enviar e desconecte para encerrar uma sessão, tá? O Acept basicamente funciona assim. Então, o cliente, ok? Ele inicia uma conexão Connect, tá? Com a servidora. O servidor já está executando o ListNem muito antes. O servidor aqui, ó, está executando o ListNem, aqui não mostra, faz ele estar executando o ListNem. Aí ele estaria esperando a conexão. Vem, é feita a conexão, Connect, o Acept é recebido. Então, há uma resposta do Acept, isso é feita em três vias, tá? Então, há solicitação de dados, há resposta de dados. Nós vamos falar muito sobre todos esses passos, né? Mais para frente. Inclusive, nós vamos programar isso. E aí, repare que a desconexão ela ocorre do cliente para o servidor, tá? E o servidor dá apenas uma resposta dentro que aceita, tá? Então, é assim que acontece nas primitivas. Bom, repare. Socket, fechado, ListNem, fica aqui no Acept esperando. O Acept aqui, tá vendo? Servidor. E aí, é feito o Connect. E aí, é dado o SIN Acnoled e o Acnoled. Esse Handshake de três vias aqui, ele vai ter mais bem estudado o futuro, tá? Inclusive, essa imagem é muito futura. Eu trouxe aqui na base para você entender como funciona essas chamadas de funções. E aí, conexão estabilizada, transmissão de dados, send, receb, send, receb, send. E no final, eu peço Close, tá? Mandando um sinal de fim. Eu recebo um Acnoled. E aí, eu recebo um fim e retorno meu Acnoled. A conexão está fechada, tá? E isso aqui é uma comunicação orientada à conexão. E isso aqui é uma orientada à conexão. O que eu sei disso? Foi feito o Acept, foi feito o Handshake de três vias e foi feita a desconexão. É um serviço não orientado à conexão, pessoal, send e receb. Ou seja, se a máquina está lá recebe, se não está lá, não estou nem aí. Eu mandei. É meio revolutinha, né? O não orientado à conexão é um revoltado, vou mandar esses dados. Recebeu, recebeu, não recebeu, não recebe mais. Adoro lá. E aí, eu criei, naturalmente, um conteúdo para vocês. Tem um conteúdo para vocês. Lá no curso Hacker, tem vários pontos que eu falo muito sobre esse negócio de portas e tal. Mas calma, eu vou mostrar agora para vocês verem onde nós vamos chegar. Mas nós vamos chegar lá. Calma, deixa que o livro está carregando aqui. Quando ele está carregando, a gente vai... Cara, travo a máquina, cara. Pica, galera, me xinga e vai, esse negócio está muito grande. Então aqui eu mostro para vocês como a gente vai fazer com programação e tal, né? Como faz um... Aqui, como é que eu faço aqui um servidor, tal que, ó... Acept, list, né? Aqui, ó... Eu mostro tudo isso no futuro, né? Como se o tráque todo funciona. Repare que os desenhos são muito arcaicos, né? Eu mesmo desenho os próprios desenhos. É, aqui, ó. O show de bola, ó. Eu amo essas ferramentas de desenho. Dá uma característica aí de online para o material. Cara, a máquina entra na boca, cara. Garro, cara. Vamos lá. Aqui, é 32 GB de memória, cara. Serviços e protocolos são conceitos diferentes. Nós vamos explorar bastante essa questão dos serviços, né? E dos protocolos existentes. Inclusive, eu posso ter um serviço em que lá dentro desse serviço posso ter... Eu posso fazer uma escolha entre um ou outro protocolo. Tá ok? Tá bom? E um serviço é um conjunto de primitivas. Que, naturalmente, é acima dela, tá? Um par de protocolos relacionados. Que mantém os pacotes. Então, basicamente, camada. K mais 1 consome serviço da camada K. E a K consome serviço da K menos 1. Ela manda para K menos 1 Mas ela olha para o protocolo da camada par dela do outro lado, na K, do outro lado, tá? É basicamente isso que ele quer dizer. No próximo vídeo, já vamos começar a falar de exemplos de arquitetura, naturalmente. Vamos começar a falar de pilhas de protocolos do mundo real, tá? Nós temos duas. Firmado modelo OS, de estudo e referência. E o modelo TCP é aplicável no mundo real. Ok? Até o nosso próximo vídeo. Até mais. Tchau.