Prévia do material em texto
REDES & SISTEMAS DISTRIBUÍDOS UNIDADE 1 Redes de computadores & Seus protocolos Objetivos da Unidade Ao longo desta Unidade, você irá: · Definir o conceito de redes de computadores e seus protocolos; · Interpretar o padrão de organização das tecnologias de redes; · Analisar os tipos de protocolos de redes. Introdução da Unidade Boas-vindas à primeira unidade da disciplina de redes e sistemas distribuídos: Redes de computadores e seus protocolos. Esta é uma unidade de ensino que tem por objetivo posicionar o estudante junto aos conceitos de redes, modelos de referência e protocolos de redes de computadores. O adequado estudo desta unidade fará com que a construção do conhecimento em redes siga para abordagens técnicas e práticas embasadas em tecnologias de comunicação de dados e estruturas de redes de computadores, bem como levará o profissional de redes à construção de soluções computacionais distribuídas. A primeira aula, Introdução às redes de computadores, abordará uma introdução às redes, apresentando seus conceitos históricos, sua importância dentro do momento tecnológico e social fortemente suportado pelas redes de computadores e a arquitetura cliente-servidor como estrutura-chave para gestão de sistemas de redes. Em seguida, a segunda aula, O modelo de referência OSI e TCP/IP, apresentará o modelo de referência ISO/OSI (International Organization for Standardization / Open System Interconnection) e TCP/IP (Transmission Control Protocol / Internet Protocol) como modelos de referência que classificam e organizam os protocolos de rede em camadas virtuais que regem toda a comunicação em redes e garantem a interoperabilidade de sistemas computacionais distribuídos. Para finalizar, a terceira aula, Protocolos de redes, trará à baila a organização dos diversos protocolos de rede em suas respectivas camadas de aplicação, transporte, inter-rede e host de rede ou física dentro do modelo TPC/IP com exemplos e aplicações práticas. Com os conhecimentos assimilados desta unidade, você será capaz de se posicionar quanto à origem e ao histórico das redes de computadores, conhecer o padrão de organização das tecnologias de redes abarcadas pela operação dos protocolos de redes, que são responsáveis pela comunicação e pela padronização dos serviços de redes em diferentes estruturas computacionais. Desejamos a você um ótimo estudo. Aula 1: REDES DE COMPUTADORES E INTERNET Qual é o foco da aula? Esta aula traz, para você, conceitos históricos sobre redes de computadores e internet, informações de comunicação de dados, classificação e topologia de redes, além de dispositivos de hardware e de infraestrutura de rede. Assim, você irá conhecer as tecnologias da informação utilizadas para implantação e configuração de uma rede local de computadores, seja para utilização em ambiente doméstico ou profissional. Objetivos gerais de aprendizagem Ao longo desta aula, você irá: · Identificar o conceito de redes de computadores; · Examinar os tipos de meios de transmissão de sinais e códigos na comunicação de dados; · Analisar as particularidades do cabeamento estruturado. Introdução da aula Você já parou, em algum momento, para refletir a respeito do seu dia a dia e das tecnologias em rede? Pois bem. Aqui, tentaremos instigá-lo a entender a grande importância dos sistemas conectados via redes de computadores para o nosso cotidiano. Você, provavelmente, utiliza seu smartphone com um aplicativo de despertar que está interligado a um aplicativo de agenda, que coleta informações pessoais e profissionais e lhe posiciona em relação às suas atividades diárias. Depois do café da manhã, os exercícios são acompanhados por sistemas de monitoramento da saúde corporal; já a ida ao trabalho tem como trilha sonora as notícias de portais de informação, que lhe posicionam sobre acontecimentos do mundo todo. No trabalho, o e-mail, os sistemas integrados de gestão e os aplicativos de mensagens instantâneas lhe oferecem suporte para as atividades profissionais, no entanto, esses são apenas alguns exemplos que evidenciam o uso de redes e de sistemas distribuídos em nosso cotidiano. Não dá para imaginar como seria a nossa vida contemporânea sem dispositivos e aplicações conectadas em rede, não é? Vivemos em uma sociedade em rede altamente dinâmica e conectada, que faz uso de tecnologias de comunicação em, praticamente, todas as atividades do dia a dia, mesmo em situações mais isoladas e primárias de produção. As tecnologias e as redes suportam os negócios e as atividades pessoais de uma era pós-conhecimento, da qual ainda não identificamos o nome, mas que deverá ter a conectividade e a computação ubíqua como referências. Uma empresa de CoWorking está procurando uma consultoria de Tecnologia da Informação (TI) para implantação de novos espaços de trabalho. Esta empresa deverá operar com locação de espaços de trabalho para diferentes objetivos, oferecendo um ambiente com mesas e computadores do tipo desktop ligados ao cabeamento físico, em pontos de rede cabeada nas mesas, e rede wireless, disponível em espaços de reuniões e convivência. O ambiente deverá oferecer serviços de conectividade para comunicação via rede de computadores com cabeamento estruturado para troca de mensagens de texto, de voz e de vídeos, em conformidade com as necessidades dos clientes e das empresas que prestam serviços. A empresa terá estações de trabalho distribuídas em seus espaços (planta baixa), formando uma LAN (Local Area Network) interconectada à servidores de acesso e dados e equipamentos de distribuição e controle dos dados na rede. A LAN também será interconectada a um sistema terceirizado de conexão com a internet. O layout apresentado a seguir, na figura a seguir, mostra-nos a distribuição dos locais de trabalho, de convivência e de reuniões para guiar o profissional de TI a fazer uma primeira análise a respeito da disposição dos hosts de rede de computadores e sua topologia necessária. Para completar os requisitos da rede, adicionado ao layout apresentado pela planta baixa, temos o descritivo do local dos dispositivos conforme segue: · Sala 1: deverá haver estrutura para comportar notebooks por meio de um ponto de rede cabeada para ligação de um roteador wireless. · Sala 2: deverá haver um switch para comportar a ligação de 4 estações de trabalho via cabos. · Sala 3 e Sala 4: deverá haver um switch servindo as 6 estações de trabalho e 2 impressoras por meio de ligações por cabo. · Sala 5: deverá haver um switch para a ligação do servidor de rede, impressora e 7 estações de trabalho. · Ambiente compartilhado 6: deverá haver ligações via cabeamento para 6 estações de trabalho por meio de um hub ou switch e mais um roteador wireless para conexão sem fio de notebooks e smartphones. Sua equipe de consultoria foi contratada para fazer uma proposta inicial da topologia de rede e do levantamento de hardware de rede, necessários para implantação desse sistema, considerando a estrutura da rede de computadores cabeada para os desktops e notebooks, que se encontram nas mesas de trabalho e dispositivos de Access Points (switches e roteadores wireless). Para isso, a consultoria deverá apresentar as seguintes propostas: um estudo da topologia da rede, utilizando-se um software simulador de rede, e uma planilha com os equipamentos e cabeamento estruturado da rede de computadores, a fim de descrever o hardware necessário para implantar o projeto. ⭐Dicas · Para elaborar o estudo da infraestrutura de rede lógica, utilize o Packet Tracer. Esse software permite simular a estrutura de rede e sua topologia com os dispositivos: desktop; notebooks; servidores e nós de redes, também conhecido como nodos de rede (hubs, switches, routers); e serviços de rede. · Para elaborar a planilha de hardware, utilize uma planilha eletrônica. · Deverá ser gerado um relatório como documento final sobre a consultoria realizada, o Relatório do Projeto de redes: topologia e hardware de rede. ______ Neste cenário tecnológico atual, saber utilizar, analisar,projetar, programar e manter sistemas distribuídos em rede é essencial e abre um conjunto de oportunidades profissionais. Frente a isso, vamos, juntos, descobrir e construir um conhecimento fantástico sobre redes de computadores. Conceito de redes de computadores As redes de computadores tornaram-se uma estrutura fundamental para as atividades de pesquisa nas universidades, para as atividades profissionais, dentro e fora das empresas, e para o ser humano, em suas atividades sociais de forma geral. Para Tanenbaum (2011), o modelo de trabalho realizado por um grande número de computadores separados e interconectados é chamado de redes de computadores. O conceito de ligar dois ou mais computadores é originário da década de 1960, quando já havia um sistema de telefonia disponível e o desenvolvimento dos computadores tomava força com a construção de computadores de menor porte, chamados, na época, de minicomputadores. Conforme relata Forouzan (2010), a Advanced Research Projects Agency (Arpa), do Departamento de Defesa dos Estados Unidos (DoD), tinha interesse em descobrir uma maneira de conectar computadores para que pesquisadores pudessem compartilhar suas descobertas. Nesse cenário, pesquisadores do Massachusetts Institute of Technology (MIT) iniciaram estudos de interligação de computadores em uma rede, o que deu origem a Advanced Research Project Agency Network (ARPAnet), que, mais tarde, tornou-se a internet. A ARPAnet entrou em operação em 1969, quando foram ligados os primeiros 4 IMPs (Interface Message Processors), nome dado aos computadores ligados em rede, hoje, chamados de host ou de nós de rede. Essa rede foi instalada na universidade da Califórnia, mas, em 1970, outras redes começaram a ser interligadas devido às vantagens de se fazer pesquisas mediante a um sistema computacional interconectado. Houve um intenso investimento do governo americano, por meio do DoD, no desenvolvimento dessa rede, pois havia interesse em se criar uma infraestrutura de rede que trouxesse independência aos sistemas de rede mediante a um cenário de Guerra Fria. Rapidamente, em menos de 10 anos, havia, dentro de um novo modelo de comunicação por computadores, diversas interconexões de rede entre universidades americanas e agências governamentais do mesmo país e com acessos na Europa. Em 1980, havia mais de 100.000 computadores interligados em rede, conforme relata Siqueira (2007). As pesquisas sobre redes seguiram com grande interesse de universidades, principalmente nos EUA, que utilizam as recém-criadas estruturas em rede para compartilhar informações e ampliar os estudos do próprio conceito de rede, levando à sua rápida evolução. Conforme Laudon e Laudon (2014), a utilização de múltiplos computadores conectados por uma rede de comunicações para processamento é denominada processamento distribuído. Esse novo modelo de processamento de dados foi ampliado, no final dos anos 1980, com o uso da internet dentro das universidades e dos centros de pesquisas no Brasil. Já na segunda metade da década de 1990, os provedores de serviços de conexão oportunizaram o acesso à internet para empresas e residências, o que revolucionou a história da humanidade. Na atualidade, as redes convergentes representam um importante conceito, pois elas envolvem a interconexão e a convivência dos sistemas e dos protocolos das redes locais com as redes de telecomunicações, unindo aplicações, como VoIP (Voice over Internet Protocol ou voz sobre IP), sistemas de mensagens e comunicação instantânea, como o WhatsApp, e transmissão de streaming, como a Netflix — todos interconectados pelas redes de computadores e internet. A seguir, veremos uma linha do tempo de eventos importantes relacionados às redes de computadores e à internet. A seguir, acompanhe o detalhamento de cada evento: · 1961: Transmissão de dados por pacotes · 1969: Primeira mensagem via ARPANET · 1970: Termo INTERNET usado por Vinton Cerf · 1972: Conexão da ARPANET entre EUA e Europa · 1977: Criação do protocolo TCP/IP e utilização em uma rede chamada internet · 1983: O TCP/IP torna-se padrão para ARPANET · 1984: Criação do DNS (Domain Nome System) · 1986: Estabelecida a NSFNET · 1990: A ARPANET é substituída pela NSFNET · 1991: Tim Berners-Lee cria a WWW · 1995: Começam as operações dos ISPs. A NSFNET volta a ser uma rede de pesquisas · 1996: Início do projeto do IPv6 · 1999: Surge o e-commerce. Expansão das redes comerciais · 2000: Cloud computing. E-commerce · 2007: Apple lança o iPhone e expande conexão móvel · 2010: Internet das coisas · 2012: 4G no Brasil O início do novo milênio foi marcado pelo uso intenso das redes de computadores, potencializadas pela internet como base para a criação do e-business, que promoveram uma nova revolução nos modelos de negócio das empresas. Kurose e Ross (2013, p. 1) concebem a internet como “o maior sistema de engenharia já criado pela humanidade”. Elevando ainda mais a importância das redes e da internet, Siqueira (2007) a apresenta como a grande locomotiva tecnológica para o século XIX. Arquitetura cliente-servidor Considerando a visão de Forouzan (2010) de que uma rede é um conjunto de dispositivos (normalmente conhecido como nós) conectados por links de comunicação, um host pode ser um computador, uma impressora ou outro dispositivo de envio e/ou recepção de dados que estejam conectados a outros hosts das redes de computadores, que podem ser implementadas de diferentes formas, com arquiteturas que variam, e definidas conforme a natureza da aplicação que se deseja desenvolver. Laudon e Laudon (2014) sustentam que as redes de computadores e a internet baseiam-se em três tecnologias principais: · A computação na arquitetura cliente-servidor. · A comutação de pacotes, como modelo de transmissão de dados. · E os protocolos de rede, como padrões de comunicação. Na arquitetura cliente/servidor, existe um modelo de comunicação distribuída baseado em redes de computadores com servidores provendo acessos e controle aos sistemas e clientes, chamados de estações de trabalho ou workstations, que se conectam aos servidores para acessos aos recursos de rede e dados. Conforme relatam Loper, Silva e Lopes (2019) o papel bem definido do servidor é manter a aplicação com seus dados e aplicações à disposição dos clientes. Nessa arquitetura, podemos trazer, como exemplo, um usuário jogando um game em rede pelo seu computador, por meio de uma conexão com o servidor de jogos. -Utilizada por aplicações WEB- Comunicação De Dados (Tipos E Meios De Transmissão, Sinais, Códigos, Modo De Operação) A comunicação de dados é realizada por meio da transmissão de sinais analógicos e/ou digitais. Segundo Tanenbaum (2011), os sinais analógicos são ondas eletromagnéticas que assumem valores contínuos ao longo do tempo e são representados por uma onda senoidal com quantificação de amplitude, que representa a intensidade (altura) dos sinais elétricos (medida em volts), de frequência, que define o número de vezes que o sinal completa um ciclo dentro de um determinado período (medida em hertz), e de fase, que define o formato da onda senoidal (medida em graus ou radianos). A figura a seguir ilustra uma representação do sinal analógico. O sinal senoidal pode ser digitalizado e representado por uma sequência de dígitos binários (1s e 0s). Sua representação é dada ao longo do tempo e pela amplitude do sinal. Os sinais digitais possuem maior imunidade à degradação por interferência ou ruídos quando comparados aos sinais analógicos (Roberts, 2009). Além disso, os sinais digitais podem transmitir maior quantidade de informações, menor interferencia. A figura abaixo nos traz a representação de um sinal digital representado em dois dígitos, 0s e 1s, em uma sequência de 8 bits. Os sinais são transmitidos em um sistema de comunicação por meio de dois meios: guiados e não guiados. Guiados: - par trançado/ cabo coaxial / fibra óptica- transportam sinais elétricos através de cabos metálicos (coaxial ou de par trançado) ou luminosos através de cabosópticos (fibra óptica). Não guiados: -Rádio / Microondas / Satélites- transportam sinais via espectro eletromagnético sem fios, por meio de sistemas de rádio, micro-ondas e satélites, e sistemas de ondas no infravermelho. Quanto aos modos de transmissão de sinais, Kurose e Ross (2011) definem que a transmissão pode ocorrer de três maneiras distintas: · Simplex: a comunicação é realizada por meio de um único sentido, sendo um canal utilizado para emitir a mensagem e outro para receber a mensagem. Um exemplo de comunicação simplex ocorre na transmissão de sinais de TV ou rádio. · Half-duplex: a comunicação é realizada em um único canal, porém apenas em um sentido da comunicação por vez (hora transmite, hora recebe). Um exemplo de comunicação half-duplex ocorre em um hub de rede. · Full-duplex: a comunicação dá-se por meio de um único canal com capacidade de transmitir e receber as mensagens de forma simultânea, por meio de técnicas de multiplexação de sinais. Um exemplo de comunicação full-duplex ocorre em um switch de rede. A seguir, veremos uma representação da transmissão com sinais em simplex, half-duplex e full-duplex. Classificação e Topologia de Redes As redes de computadores podem ser classificadas por diferentes abordagens: pela tecnologia de transmissão, pela escala (abrangência geográfica), pela forma de compartilhamento dos dados, pela topologia e também pela forma de acesso ao conteúdo. Vamos conhecer algumas características dessas classificações? Tecnologia de Transmissão ou Tipo De Conexão Considerando a tecnologia de transmissão ou tipo de conexão, conforme definido por Forouzan (2010), a referência é a forma como a informação é distribuída e pode ser classificada em: · Broadcasting: ou links de difusão ou, ainda, multiponto. Uma conexão existe entre mais de dois hosts que compartilham um único link, compartilhando, assim, o canal de comunicação. Trata-se de um tipo de transmissão realizado por rádio ou TV. Em uma rede, um Access Point ou roteador que controla uma rede sem fio utilizará essa técnica para distribuição de sinal digital no meio eletromagnético, mas de forma controlada. Rede dinâmica e estática Mensagens enviadas (com o endereço de destino) são recebidas por todos os nós da rede e cada nó verifica se a mensagem é para si · Peert-to-peer: ou links ponto a ponto fornece um link dedicado entre dois dispositivos, e toda a capacidade do link é exclusiva para a comunicação. Um exemplo dessa transmissão ocorre na utilização de um sistema de torrent para compartilhamento direto de arquivo de música ou vídeo. Mensagem enviada (com endereço de destino) chega apenas ao seu destino e não a todos os nós Escala Considerando a escala, as redes podem ser classificadas pelo tamanho, ou seja, pela abrangência geográfica de hosts. O quadro a seguir apresenta, de forma sintética, informações sobre a classificação de redes de computadores por escala, conforme Tanenbaum (2011). · PAN (Personal Area Network) ou redes pessoais. São redes de pequena abrangência geográfica que permitem que dispositivos se comuniquem dentro de um raio de 10 metros. Um exemplo comum é uma rede sem fio que conecta um computador com seus periféricos (impressora, fone de ouvido, mouse) por meio do padrão IEEE 802.15 ou Bluetooth. · LAN (Local Area Network) ou redes locais. É uma rede particular que opera dentro de um espaço físico limitado, como uma residência, um escritório ou uma empresa conhecida, também, como SOHO (Small Office Home Office). As LANs são muito usadas para conectar computadores pessoais e aparelhos eletrônicos, a fim de permitir que compartilhem recursos (como impressoras) e troquem informações. Exemplos de padrões para esse tipo de rede são IEEE 802.3 ou Ethernet e IEEE 802.11 ou Wi-fi. · MAN (Metropolitan Area Network) ou redes metropolitanas. São redes de comunicação que abrangem uma área maior, como uma cidade. O exemplo mais conhecido de MAN é a rede de televisão a cabo disponível em muitas cidades. Esses sistemas cresceram a partir de antigos sistemas de antenas comunitárias usadas em áreas com fraca recepção do sinal de televisão. Essas redes podem utilizar links dedicados com fio ou sem fio ou, ainda, sistemas de telefonia com padrões Long Term Evolution (LTE) para 4G (Quarta Geração) ou o IEEE 802.16. · WAN (Wide Area Network) ou redes grade abrangência, continentais ou global. Essa rede abrange uma grande área geográfica; com frequência, um país ou continente. A WAN é semelhante a uma grande LAN cabeada, mas existem algumas diferenças importantes que vão além dos extensos cabos de interconexão. A GAN (Global Area Network) é uma classificação de WAN a nível global feita e aceita por parte dos autores de literaturas da área de redes de computadores. Essas redes utilizam padrões LTE (4G) para comunicação externa e outros. · SAN (Storage Área network) ou redes de armazenamento. São redes criadas mais recentemente e formadas por dispositivos computacionais para armazenamento de grandes volumes de dados, utilizadas em cloud computing, por exemplo. · A figura abaixo mostra a estrutura de uma Local Area Network (LAN) ou rede local com seus dispositivos e interconexões. Compartilhamento de informações e Topologia Considerando o compartilhamento de informações, a referência é a forma como os dados são distribuídos pela rede, que pode ser classificada como: Cliente/servidor: onde existem servidores provendo acessos, controle e dados a sistemas e clientes (estações de trabalho), que fazem uso de informações oferecidas pelos servidores. Ponto a ponto: onde existe o compartilhamento direto entre dois hosts. Além disso, há formas híbridas de compartilhamento de dados em uma rede, onde parte da comunicação é realizada ponto a ponto, porém controlada por servidores. Acesso Considerando a classificação por acesso a sistemas, as redes podem assumir abrangência interna, externa e global. · Intranet: é uma rede privada e interna em uma organização, com acessos restritos a usuários e dispositivos homologados. · Extranet: é uma rede que abrange sites corporativos com informações internas e acessos geograficamente externos. A internet como rede global de computadores é uma estrutura de extranet com acesso abrangente. Topologia Considerando a topologia, a classificação das redes refere-se à forma física em que os hosts de rede são interconectados, e a informação pode fluir de acordo com essa estrutura topológica, podendo ser: barramento, malha, estrela, anel, árvore e híbrida. A arquitetura híbrida faz a mescla de diferentes formas de topologias padrão. 1. Topologia em malha: apresenta uma ligação com links redundantes, em que cada host possui um link dedicado com os outros hosts. Trata-se de uma rede interessante, pois oferece melhores performances e segurança, mas quanto à implementação, é muito complexa e pouco utilizada. Nessa topologia, a vantagem é ter um link direto entre cada host, já a sua principal desvantagem é a complexidade das conexões. Exemplos podem ser vistos em interligações entre switches de rede, que são menos utilizados na atualidade. Cada dispositivo está conectado a todos os demais, mais complexa e mais cara A figura a seguir apresenta um modelo ilustrativo de topologia de rede em malha. 2. Topologia em barramento: trata-se de um modelo de ligação física de hosts em uma rede de computadores cujos dispositivos são ligados em um sistema multiponto, por meio de um cabo de rede que atua como link principal, chamado de backbone. Nessa topologia para redes locais, a vantagem econômica é a utilização de um único cabo para ligação dos hosts(fácil instalação), porém essa ligação também é vista como desvantagem, uma vez que a interrupção desse cabo único representa a paralização total da rede. Esse modelo de conexão foi comum nos primeiros sistemas de redes de computadores, porém deixou de ser utilizado para redes locais. Um exemplo em uso atual é a ligação de acesso para internet cabeada em residências, oferecida pela operadora de serviços de internet. A figura aseguir apresenta um modelo ilustrativo de topologia de rede em barramento. 3. Topologia em anel: é um modelo em que cada dispositivo tem uma conexão direta e dedicada (ponto a ponto) com outros dois hosts, de forma que o conjunto de hosts forme um anel físico de hosts interconectados por enlaces de comunicação. Quando um host recebe um sinal destinado a outro, seu repetidor regenera os dados e encaminha-os para o destino. Essa topologia foi implantada em redes conhecidas como Token Ring. Sua principal vantagem é a facilidade de instalação (pois só há dois pontos de conexão), já a desvantagem é que os dados são transmitidos em uma única direção. A figura abaixo apresenta um modelo ilustrativo de topologia de rede em anel. 4. Topologia em árvore: é uma topologia em hierarquia em que hosts estão organizados abaixo de dispositivos de rede, conforme ramificações de elementos, e utilizada, por exemplo, para ligação de dispositivos repetidores/gerenciadores de rede. A vantagem desse tipo de topologia é a organização da estrutura de dispositivos, o controle de hosts e o gerenciamento da rede. Como desvantagem, existe a necessidade de se prover sistemas redundantes para que a rede não seja prejudicada quanto a falhas em dispositivos. A figura a seguir apresenta um modelo ilustrativo de topologia de rede em árvore. 5. Topologia em estrela: é uma topologia em que cada host tem um link direto (ponto a ponto) dedicado apenas com o concentrador/controlador de rede, que pode ser um hub, switch ou roteador. Os hosts são controlados pelos dispositivos concentradores, o que representa um modelo mais seguro de conexão e gestão de dados em rede. Essa topologia é amplamente utilizada em redes locais e sua vantagem principal é a centralização de conexões (menor custo) em um dispositivo de controle, que pode gerenciar todas as conexões. A desvantagem é dada quando há problema no dispositivo central, o que é tratado com redundância, juntamente a outros dispositivos, para que a rede não seja paralisada. A figura abaixo apresenta um modelo ilustrativo de topologia de rede em estrela. Hardware, infraestrutura de rede e cabeamento estruturado As redes de computadores são formadas por hardwares e softwares específicos que operacionalizam a transmissão e o controle das informações transmitidas em uma rede. Entre os principais dispositivos, podemos citar as placas de rede ou NIC (Network Interface Card), os cabos, switches, roteadores, patch panels, racks, servidores e estações de trabalho. A seguir, apresentamos alguns desses dispositivos de hardware com mais detalhes. Placa de rede Nomeada como NIC (Network Interface Card), representa o elemento de comunicação de entrada e saída de dados para um dispositivo computacional, que o caracterizará como host, conforme define Tanenbaum (2011). A figura abaixo apresenta três tipos de interfaces de rede, a primeira para rede cabeada e as duas seguintes para redes wireless. 🔁Assimile NIC ou Network Interface Card é o nome dado à placa de rede ou interface de rede responsável pela interface de entrada e saída de dados de rede em um dispositivo computacional. Ela acomoda um endereço físico de rede chamado MAC (Media Access Control), atribuído de forma única pelo seu fabricante com um conjunto de seis números hexadecimais (00:3B:47:12:8A:C7), e será configurada com um endereço de rede IP (Internet Protocol). Cabeamento estruturado Conjunto de equipamentos e cabos para suporte e interligação de dispositivos de rede de computadores. Nesse contexto, estão associados os racks de servidores e de passagem de cabos, os dispositivos de concentração e gestão de comunicação como repetidores, hubs, switches, roteadores e dispositivos complementares, como caixas de passagens, condutores, patch panels, conectores e cabos em geral. A seguir, apresentaremos alguns dos principais cabos para redes de computadores. · Cabo coaxial: cabo com condutor interno (mina) circundado por um condutor externo (malha). Possui maior largura de banda, utilizado para backbone, CATV, link em serviços de telecomunicações e internet; apresenta melhor imunidade a ruído que o par trançado sem blindagem; é mais barato que o par trançado blindado e mais caro que o par trançado sem blindagem. Para redes locais, utiliza-se um cabo de 50 Ω, já para CATV, um cabo de 75Ω . · Cabo de par trançado: cabo com dois ou quatro pares de fios enrolados em espiral dois a dois, de forma a reduzir o ruído e manter as propriedades elétricas do meio ao longo de todo o seu comprimento. Ele possui certa imunidade a ruídos devido a uma técnica chamada Cancelamento (informação duplicada no segundo fio do par com a polaridade invertida: um par realiza a transmissão (TD) e outro a recepção (RD). Os cabos Shielded Twisted Pair (STP) possuem uma blindagem para proteção contra ruídos, enquanto cabos Unshielded Twisted Pair (UTP) não possuem isolamento completo. Além disso, há um limite de dois dispositivos por cabo e tamanho de 100 metros por segmento, bem como padrões estabelecidos, como o Fast Ethernet em redes de 100 Mbps, Gigabit Ethernet em redes 1000BaseT, 10 Gigabit Ethernet em redes de 10gBaseT, entre outros. A figura a seguir traz exemplos de cabos UTP e STP para verificação de material de isolamento. · Cabo óptico: chamado de fibra óptica, realiza a transmissão por sinal de luz codificado, na frequência do infravermelho, em um filamento de sílica ou plástico 24. Esse tipo de cabo possui total imunidade a ruído eletromagnético e menor taxa de atenuação. Utiliza-se duas fibras: uma para transmissão e outra para recepção. Esses cabos são classificados como monomodos ou multimodos e dimensionados em distância, em conformidade com um conjunto de requisitos técnicos. A figura abaixo apresenta exemplos de cabos de rede. Servidor de rede Computadores categorizados como minicomputadores ou mainframes ou, ainda, microcomputadores com maior poder de processamento e armazenamento de dados, que suportam um sistema operacional de rede para controle e gestão do sistema de redes. Iot (Internet of Things) Dispositivos diversos que possuem conexão com a rede de computadores e com a internet. Considere que um host é considerado um dispositivo de hardware com interface e endereço de rede. Dessa forma, qualquer tipo de equipamento eletrônico na atualidade pode ter algum tipo de conexão com uma rede de computadores. ➕Saiba mais IoT (Internet of Things) ou, em português, Internet das Coisas é um conceito em ascensão que considera que dispositivos diversos podem fazer parte de um sistema computacional interconectado por uma rede de computadores. No contexto de redes de computadores, empresas de conectividade já oferecem soluções completas para gestão desses dispositivos que já fazem parte das redes e deverão, ainda, ter incremento significativo nos próximos anos. É importante um profissional de redes e de sistemas distribuídos entender que sistemas domésticos, industriais e de gerenciamento podem receber um volume muito grande de dados de sensores instalados em máquinas e equipamentos industriais, carros e eletrodomésticos espalhados pelos departamentos da empresa e mesmo no corpo humano. ______ 💭Reflita O volume de hosts, como elemento de uma rede de computadores, deverá ser imensamente acrescido nos próximos anos devido à tendência de conectar qualquer dispositivo em ambientes computacionais em rede, como sustenta a IoT (Internet of Things) ou Internet das Coisas. Conforme previsão de Diamandis e Kotler (2018) para o ano de 2020, haverá mais de 50 bilhões de dispositivos ou coisas conectadas à internet e mais de 10 trilhões de sensores em 2030, o que dá origem a um novo conceito: a computação infinita. SWITCH, Router ou Roteador Dispositivo concentrador que opera nas camadas de Enlace e Rede do modelo de referência Open System Interconnection (OSI), responsável pela concentração e segmentação de dados da rede com base em endereços MAC (Media Access Controle) de cada NIC. Além disso, é utilizado para conectarequipamentos que compõem uma LAN a uma topologia física em estrela, enviar os quadros de dados somente para a porta de destino do quadro, garantir velocidade por porta e, ainda, criar VLANs (Virtual LANs e segmentação entre as portas do switch). Vale destacar que roteadores e switches que operam na camada de rede fazem segmentação de broadcast. A figura abaixo apresenta um exemplo de switch de rede. Router ou Roteador É um dispositivo concentrador ou ponte que opera na camada de Rede do modelo de referência OSI. Ele tem a capacidade de interligar com duas ou mais redes diferentes, analisar datagramas produzidos pelos protocolos de alto nível (TCP/IP), trabalhar com o endereço lógico do host, ou seja, com o endereço IP e oferecer ferramentas de roteamento, gerenciamento de rede e segurança de dados com sistemas de mapeamento e configuração de portas lógicas, criptografia e filtragem de pacotes. A figura abaixo apresenta dois modelos de roteadores de rede, sendo um para redes cabeadas (acima) e outro para redes wireless (abaixo). *Modulação-Demodulação : Conversão de sinais em digitais e analógicos *Rede de broadcast * Não faz controle de endereçamento *Faz controle de endereçamento Controle de endereçamento Full duplex O que são gargalos, em redes de computadores? É quando há grande acesso simultâneo à rede em determinado momento. Exemplo: Todas as pessoas acessando ao mesmo tempo um servidor e este servidor não tem capacidade para o número de acessos simultâneo, formando um gargalo no sistema. Isto, causa lentidão e degradação do serviço pois a banda não está prepada para acesso simultâneo de larga escala. Dribla-se com um sistema distribuído de servidores, ou vários servidores replicados e redirecionar usuários para os servidores replicados a medida que atinge-se o limite de conexões. Demanda custo e + complexidade na implementação. Conhecendo a ferramenta Cisco Packet Tracer O Packet Tracer é um software muito interessante que nos permite planejar, testar e ajustar as redes de computadores conforme as necessidades e a disponibilidade de equipamentos e tecnologias. Para entender a potencialidade desse software, suas características e o funcionamento dos equipamentos de redes de computadores, observe um exemplo na figura a seguir e crie um primeiro projeto, simples, para um departamento administrativo de uma pequena empresa. Escolha os dispositivos de rede, arraste-os para a área de trabalho do software, em seguida, clique duas vezes no dispositivo e explore as características de cada dispositivo de rede. Por fim, você verá como o sistema é interessante ao trazer as características reais de cada equipamento e as possibilidades de simulação da rede. Nesse exemplo, foram utilizados os seguintes dispositivos para compor uma rede de computadores simples de um pequeno escritório administrativo: um servidor de rede, um switch 24 portas, uma impressora, três estações de trabalho desktops, um roteador wireless e três smartphones. Naturalmente, o volume de estações de trabalho e smartphones pode ser acrescido na topologia conforme as necessidades e capacidades dos switches e roteadores disponíveis no Packet Tracer. O Packet Tracer é uma ferramenta que nos permite colocar em prática os estudos de redes de computadores. Embora a aplicação seja fácil de operar e intuitiva, o conhecimento de suas principais funcionalidades o auxiliará no desenvolvimento de topologias de redes de computadores. Observe a interface do Packet Tracer na figura a seguir. Onde, 1. Área de funcionalidades: idêntico à maioria dos programas em Windows. Na parte superior, é possível salvar, abrir e alterar pequenas configurações. 2. Atalhos: na parte inferior: algumas figuras geométricas e atalhos das configurações. 3. Área de edição: espaço reservado para desenvolver as topologias. 4. Seleção de categoria: essa área está dividida por categoria: network devices (nós de redes), end devices (computadores, servidores etc), componentes (antenas), conexões (cabeamentos), miscelanius (vários dispositivos misturados) e connection (simuladores de cloud). 5. Seleção de subcategoria: após selecionar uma categoria é possível escolher uma subcategoria. Por exemplo: ao selecionar a categoria Network Devices, na subcategoria será possível selecionar roteador, switch, hub, wireless device, security e wan emulation. 6. Seleção de Equipamentos: ao selecionar uma sub-categoria, todos os equipamentos disponíveis são apresentados nessa área da interface. Equipamentos Para colocar os equipamentos na área de edição, é necessário clicar neles, segurá-los e arrastá-los até o local desejado (Drag and drop). Após posicionar os equipamentos, é a hora de ligá-los por meio de cabeamento, conforme a figura a seguir. Interface Inicialmente, na área de categoria, deve ser selecionado o cabeamento (representado por um raio); em seguida, o cabo adequado. Então, é só clicar no dispositivo e escolher a interface de rede em ambos os equipamentos que se deseja efetuar a comunicação. Ainda é possível fazer a configuração dos equipamentos ao dar um clique no equipamento. Observe o exemplo de um computador na figura a seguir. Interface de rede Para atribuir endereço IP para os computadores, existem duas possibilidades: manualmente e via DHCP (servidor de endereço IP). Para isso, clique em IP Configuration (primeira opção da figura anterior). Ao selecionar a opção DHCP, o servidor (nessa topologia o roteador) enviará o endereço à interface de rede. Já para atribuir o endereço manualmente, observe a figura a seguir. Command Propmt Ainda é possível utilizar a versão nova do IP, o IPv6. Após todos os computadores possuírem endereço, é possível efetuar o teste de conexão PING. Para isso, anote um endereço IP de um dos computadores, acesse a interface do computador e clique em Command Prompt, por fim, digite o comando: ping endereçoIP. Por exemplo: ping 192.168.0.103. Observe um exemplo na figura a seguir. Conclusão Nesta aula, foram apresentadas informações para identificação da tecnologia de redes de computadores por meio de um breve histórico de redes e da internet, que, juntas, suportam, praticamente, todas as aplicações da atualidade, considerando sua natureza distribuída. Além disso, tivemos contato com a arquitetura cliente-servidor como modelo de implementação e gestão da maior parte das estruturas de redes de computadores, vimos os três tipos de comunicação de sinais e, em seguida, observamos as diferentes classificações das redes. Analisamos, também, as topologias de redes e pudemos observar que há uma diversidade de possibilidades de arquiteturas de conexões e que o padrão de topologia em estrela é o principal modelo para redes locais. Para finalizar a unidade, fizemos uma análise dos principais hardwares de rede. Conforme solicitação, foi analisado o layout de CoWorking da empresa solicitante do trabalho de consultoria. Diante disso, foi proposto o desenvolvimento de um estudo da topologia, que pode variar conforme necessidades e ajustes, para se construir a solução de conectividade via rede de computadores. O Packet Tracer, software livre oferecido pela Cisco, foi utilizado para a ilustração básica da topologia em formato de estrela, necessário para a estruturação do sistema de redes de computadores via cabeamento estruturado. Conforme solicitado pelo cliente, nessa primeira parte do projeto, foi estruturado o cabeamento estruturado para a rede somado a pontos de acesso para os dispositivos de comunicação wireless, que serão instalados em outro momento. Foram considerados pontos de acesso para estações de trabalho desktops e notebooks e mais pontos para Access Point para o sistema wireless. De forma sintética, os cabos serão lançados abaixo de piso elevado, de forma a enviarem os lances de cabos para uma Consolidation Point, que abrigará os Patch panels e switches, a fim de que possam servir, de forma centralizada, de ponto de consolidação, bem como abrigar switches gerenciáveis, monitorados e controladosvia servidor. Considerando a distância dos equipamentos, os enlaces podem ser instalados com cabeamento metálico, utilizando-se cabos de par trançado do tipo Cat6. Um estudo sobre a topologia da rede segue conforme desenho abaixo, apresentado para ser avaliado. Lembre-se de que os testes e as simulações de tipos de equipamentos, modelos e estrutura podem variar, e o que se apresenta é uma das soluções possíveis para a topologia da rede. Recomenda-se que a equipe faça simulações diversas com a ferramenta Packet Tracer para verificar os melhores equipamentos e as disposições da topologia em rede. A seguir, segue uma breve descrição dos dispositivos que farão parte da rede, reservando-se espaços para que os modelos e as marcas sejam adequadamente pesquisados e escolhidos pela equipe de consultoria para posterior apresentação ao cliente. A consultoria pode, também, apresentar mais de uma opção de equipamentos e valores para que o cliente tenha oportunidade de analisar orçamentos e as características de cada equipamento para a solução solicitada. O Modelo de referência OSI E TCP/IP Esta aula trará a você informações importantes a respeito da organização dos protocolos e serviços de comunicação em redes de computadores dentro de uma estrutura em camadas chamada de modelo de referência. Objetivos gerais de aprendizagem Ao longo desta aula, você irá: · Examinar modelos de referências e protocolos em redes de computadores; · Interpretar as características e arquitetura do protocolo TCP/IP; · Analisar os serviços de rede TCP/IP. Introdução Olá, estudante. Nesta aula, você será apresentado ao modelo de referência International Organization for Standardization/Open Systems Interconnection (ISO/OSI), que está estruturado em um conjunto de sete camadas hierárquicas que alocam os protocolos de comunicação conforme sua operação na rede. Em seguida, você conhecerá uma arquitetura que traz um conjunto de protocolos utilizados na estrutura de redes e da internet chamado de Transmission Control Protocol/Internet Protocol (TCP/IP), que, apesar do nome, não representa apenas dois protocolos e sim um conjunto de quatro camadas que, a exemplo do modelo OSI, também alocam os protocolos de rede de computadores pertinentes a cada nível de referência aos serviços de rede. Com essas informações, você será capaz de organizar o conhecimento sobre os protocolos de rede e serviços de rede de forma a serem independentes, ou seja, que promovam a interoperabilidade entre diferentes sistemas de hardware e software dentro do cenário das redes de computadores. Você poderá compreender que o conceito de encapsulamento é utilizado em um sistema de redes de computadores de forma que um computador, com um hardware específico, com seu sistema operacional também específico, possa se comunicar com outro hardware e sistema operacional diferentes em um sistema de rede, pois os dados que trafegam entre as diferentes camadas de rede recebem cabeçalhos com dados adicionais que os preparam para adequada interpretação nos níveis superiores ou inferiores e, assim, podem ser transmitidos dentro de um ambiente tecnologicamente heterogêneo. Imagine que você foi contratado como consultor para avaliar um cenário de tecnologia de redes de computadores, propor uma breve explicação sobre a organização e a utilização de protocolos de rede para uma empresa e conduzir os seus principais gestores de tecnologia a buscarem investimentos na área tecnológica para absorção de Internet of Things (IoT) ou Internet das Coisas em seus sistemas industriais. A empresa que contratou sua consultoria desenvolve projetos de automação industrial em diversas áreas de produção e controle de suas linhas de produção e está buscando soluções de conectividade de sensoriamento de atividades de produção mediante emergente conceito de IoT, que permite que sensores diversos sejam instalados em dispositivos também diversos. Seu trabalho consiste em gerar um relatório chamado Relatório do projeto de redes: análise de protocolos para elucidar e conduzir investimentos em tecnologias emergentes que contribuam com a automação de processos e o enriquecimento de sistemas de Business Intelligence (BI) com informações mais detalhadas e precisas sobre as linhas de produção da indústria em questão. Esse relatório deve trazer a descrição das camadas do modelo de referência TCP/IP com as suas devidas funções, que serão operacionalizadas pelos protocolos de rede. O estudo de modelos de referência em camadas levará o profissional a compreender e vivenciar o conceito de independência de tecnologias de hardware e software dentro de sistemas de redes de computadores. Sua correta compreensão, facilitará uma organização didática e prática dos diversos protocolos de comunicação de sistemas em redes. Modelo de referência e os protocolos de redes de computadores Vamos iniciar nossos estudos sobre o modelo de referência e os protocolos de redes de computadores. Tais estudos são fundamentais para o entendimento de como os diversos dispositivos e sistemas se comunicam em uma rede de computadores, como se dá essa troca de informações e como os serviços e as aplicações são oferecidos em uma rede de computadores. Padrões de comunicação são de extrema importância quanto à transmissão de dados entre computadores e sistemas em uma rede de computadores, principalmente quando vemos a quantidade e a diversidade de dispositivos e sistemas conectados à internet hoje. Antes da criação de um modelo de referência, quando uma empresa desejava desenvolver uma solução de computação em rede, ela precisava construir um sistema de informação baseado no conjunto de hardware, software, redes, dados e serviços, e todos baseados em tecnologias homogêneas, ou seja, era preciso que os computadores, os sistemas operacionais, os cabos e as aplicações, por exemplo, utilizassem tecnologias padronizadas entre os diferentes hosts (computadores) conectados a uma rede. Com a evolução da tecnologia e o aumento de dispositivos de um sistema de informação, houve a necessidade de se desenvolver um modelo que possibilitasse que diferentes tecnologias interoperassem dentro de uma rede de computadores, o que exigiu que as tecnologias de rede fossem divididas em camadas ou níveis e organizadas em um modelo de referência. Nesse cenário, a ISO normatizou um modelo de camadas de protocolos chamado OSI, que se tornou o modelo de referência ISO/OSI para os sistemas de redes de computadores, sobretudo para organização e interoperação dos protocolos de rede. Esse modelo foi originalmente organizado em sete camadas (aplicação, apresentação, sessão, transporte, rede, enlace e física) com funções bem definidas, conforme sua nomenclatura. Conforme afirmam Kurose e Ross (2013, p. 36-37), cada protocolo de rede pertence a uma das camadas do modelo, e uma camada de protocolo pode ser executada em softwares, hardware ou em uma combinação de ambos. A figura a seguir nos mostra a estrutura de camadas do modelo OSI. De acordo com Tanenbaum (2011), as funções das camadas são as seguintes: · Camada de aplicação: camada mais próxima do usuário em que ocorre a comunicação; responsável por operacionalizar os sistemas de informação/aplicativos, definindo como ocorre a comunicação entre esses sistemas e os usuários e como as informações devem ser transmitidas e recebidas via protocolos existentes. Um exemplo de protocolo dessa camada é o Hyper Text Transfer Protocol (HTTP), utilizado para sistemas baseados em hipertexto no universo da World Wide Web (WWW) e acessado via navegadores (browsers). · Camada de apresentação: responsável por definir a apresentação e a formatação dos dados. Essa camada tem por objetivo a compreensão dos dados, considerando a sintaxe e a semântica das informações transmitidas pela rede, direcionando os dados para aplicações finais na camada de aplicação. · Camada de sessão: essa camada permite que os usuários, em diferentes hosts ou em uma instância de navegador, como software de aplicação, estabeleçam sessões de comunicação entre as aplicações.· Camada de transporte: essa camada tem como função básica aceitar dados da camada acima, dividi-los em unidades menores e determinar o tipo de serviço a ser executado com um protocolo orientado à conexão ou com um protocolo não orientado à conexão. O Transmission Control Protocol (TCP) e o User Datagram Protocol (UDP) são exemplos de protocolos dessa camada. · Camada de rede: essa camada tem como objetivo controlar as operações da sub-rede, identificando e gerenciando a maneira como os pacotes de dados são roteados do host de origem até o host de destino e realizando, também, o endereçamento lógico dos hosts de rede. Um exemplo de protocolo dessa camada é o Internet Protocol (IP). · Camada de enlace: essa camada tem como tarefa principal transformar um canal de comunicação em uma linha de dados livre de erros. Alguns exemplos de protocolos dessa camada são o IEEE 802.3 para redes cabeadas e o IEEE 802.11 para redes wireless, Asynchronous Transfer Mode (ATM) e Frame Relay. · Camada física: camada que trata a transmissão de sinais, o meio físico e onde está situada toda a parte de hardware da rede, como placas, switches, conectores, cabos, entre outros. Conforme afirma Tanenbaum (2011), o modelo OSI segue os seguintes princípios: uma camada deve ser criada onde houver necessidade de outro grau de abstração; cada camada deve executar uma função bem definida; a função de cada camada deve ser escolhida tendo-se em visa a definição de protocolos; e os limites de cada camada devem ser escolhidos para minimizar o fluxo de informações. Os dados transmitidos em um sistema de redes são chamados de “carga útil” ou payload, conforme Kurose e Ross (2013). Para cada camada, os dados (ou carga útil) adicionados de informações de cada camada recebem nomes diferentes. Considerando-se o modelo OSI, os dados da camada física são chamados de bits, os dados na camada de enlace são chamados de quadros (frame), os dados na camada de rede são chamados de datagramas (pacotes), os dados na camada de transporte são chamados de segmentos ou, tecnicamente, de Transport Protocol Data Unit (TPDU), os dados na camada de sessão são chamados de Section Protocol Data Unit (SPDU), na camada de apresentação de Presentation Protocol Data Unit (PPDU) e, por fim, na camada de aplicação de mensagem ou Application Protocol Data Unit (APDU). Encapsulamento No conceito de arquitetura em camadas dos modelos de referência, a operação de transportar dados entre as diferentes camadas de forma controlada, independente e com dados adicionais de controle é chamada de encapsulamento. De forma geral, essa técnica adiciona um cabeçalho com informações adicionais quando um dado é encaminhado a outro nível, ou seja, para outra camada do modelo de referência ou para outros protocolos de rede. Os diferentes nomes para os dados que trafegam nas camadas de rede são dados aos que chamamos de dados + cabeçalho. Pense em uma analogia para encapsulamento considerando que uma carta enviada por você chega até uma agência de correios da cidade com um conteúdo e os devidos dados, porém, como a carta é direcionada a outro estado, é colocada dentro de outro pacote com mais informações que, por ser destinado a outro país e com outros modelos de gestão das informações e de distribuição das cartas, é colocado novamente em outro envelope com mais informações detalhadas. A figura abaixo ilustra o caminho que um dado percorre, como é formado e seus respectivos nomes. Nunes (2017) apresenta o trajeto de um dado conduzido pelos protocolos em rede e pelas camadas conforme a técnica de encapsulamento. A sequência inicia com os dados inseridos em um browser na camada de aplicação que realiza uma solicitação ao site destino e encaminha os dados à camada de sessão para gerenciamento da conexão. Em seguida, os dados são encapsulados na camada de transporte com o nome de segmento utilizando-se o protocolo orientado à conexão (TCP) ou o protocolo não orientado à conexão (UDP), que o envia os dados para a camada de rede com os seus endereços de host de origem e destino adicionados e já com o nome Pacote (datagrama). Na camada de enlace, os dados são divididos em quadros que seguem para a camada física para serem transmitidos em formato de bits e adequados ao hardware, que realizará, fisicamente, o transporte dos dados até o seu destino. Características e Arquitetura Transmission Control Protocol/Internet Protocol (TCP/IP) O modelo TCP/IP foi uma evolução dos primeiros protocolos(OSI) desenvolvidos para a ARPANet e reúne um conjunto de protocolos padronizados para a utilização de sistemas de rede juntamente à internet. Assim, o modelo TCP/IP foi incorporado nas organizações para padronização dos sistemas de rede. Nesse modelo, existe a classificação dos protocolos em quatro camadas: aplicação, transporte, inter-rede e host de Rede ou camada física. A figura a seguir apresenta um esquema dos protocolos TCP/IP e as atribuições em camadas a exemplo do modelo OSI. ⚠️ Atenção De acordo com Kurose e Ross (2013), o TCP/IP foi uma evolução dos primeiros protocolos desenvolvidos para a ARPANet e abrange diversos outros protocolos. Tanenbaum direciona o TCP/IP como um modelo, de fato; já Kurose e Ross (2013) fazem referência ao TCP/IP como arquitetura em camadas e Forouzan (2010) como conjunto de protocolos. A arquitetura TCP/IP representa uma arquitetura de um conjunto de protocolos de rede que não se limita apenas aos protocolos de transporte TCP e de rede IP. Outros protocolos fazem parte desse conjunto de protocolos e compõem o conjunto de protocolos utilizados, na atualidade, nos sistemas de redes de computadores. O TCP é considerado o principal protocolo de camada de transporte por ser orientado à conexão e garantir a entrega dos pacotes; já o IP é considerado o principal protocolo de endereçamento e roteamento de camada de Rede e possui duas versões atuais, o IPv4 e o IPv6. A arquitetura ou conjunto de protocolos TCP/IP é, na realidade, um nome dado a um conjunto de protocolos de rede organizados em uma estrutura dividida em quatro camadas. As suas quatro camadas e suas funcionalidades serão descritas a seguir: · Camada de aplicação: ou application layer é uma camada composta por protocolos de rede de nível de aplicação que são responsáveis pela operacionalização de sistemas e aplicações finais para o usuário. Nessa camada, são definidos como os programas vão se comunicar com as aplicações de rede e como se dará o gerenciamento da interface e o que o usuário vai utilizar para executar a aplicação. Normalmente, mas não exclusivamente, as aplicações são executadas em um browser (navegador) de internet. Alguns dos principais protocolos de camada de aplicação são: HTTP, Simple Mail Transfer Protocol (SMTP), Domain Name System (DNS), Simple Mail Transfer Protocol (SNMP) e File Transfer Protocol (FTP). · Camada de transporte: ou Transport Layer é uma camada composta por protocolos de transporte de dados em rede que fornecem, à camada de aplicação, serviços de empacotamento e comunicação de duas formas, sendo uma delas via serviços orientados à conexão e a outra via serviços não orientados à conexão. Ela tem como função realizar e gerenciar conexões ponto a ponto para garantir a integridade dos dados por meio de sequenciamento de pacotes segmentados no envio e recebimento de mensagens. Seus dois principais protocolos são o TCP e o UDP. Camada de inter-rede: ou Internet Layer ou, ainda, camada de Rede é responsável pela definição do endereçamento de um host de rede por meio do endereço de rede e também de roteamento dos pacotes de dados pelos dispositivos de rede. O principal protocolo dessa camada é o IP, responsável pelos endereçamentos de hosts na rede. Outros protocolos de camada de Inter-rede são: Internet Control Message Protocol (ICMP), Address Resolution Protocol (ARP) e Reverse Address Resolution Protocol (RARP). 📝 Exemplificando: A arquitetura TCP/IP, como conjunto de protocolos de rede, apresenta, em sua camada de Inter-rede, protocolos que são utilizadosna prática para a configuração de hosts de rede. O Protocolo IP (Internet Protocol) deve ser atribuído de forma única em cada host de rede, ou seja, em cada dispositivo que venha a fazer parte de uma rede. Por exemplo, para que um notebook seja ativo dentro da rede local de uma empresa, ele precisa receber um endereço IP válido, como 192.168.0.15 ou 172.16.0.18 ou, ainda, 10.0.0.125, em conformidade com a política de endereçamento da empresa. O mesmo ocorre para qualquer outro dispositivo de rede, como impressoras e smartphones, por exemplo. Se for um endereço para um host em rede pública, uma organização de atribuição de endereços na internet, como a IANA (Internet Assigned Number Authority) e seus representantes locais, deverá atribuir o endereço. ______ · Camada host de rede: ou network access layer, como no modelo OSI, é a camada em que se localizam os dispositivos físicos da rede e as funções de enlace para acesso aos dispositivos físicos da rede. Entre suas atribuições, estão o monitoramento de tráfego de rede e o endereçamento em nível físico de dispositivos de rede para se realizar a transmissão de dados. São exemplos de protocolos de camada de host de rede: IEEE 802.3, IEEE 802.11 e IEEE 802.16, em que IEEE representa uma instituição internacional que organiza, regulamenta e padroniza sistemas de comunicação de rede em nível de hardware. Com o objetivo de organizar alguns dos principais protocolos de comunicação de rede de computadores com as camadas do modelo TCP/IP, a próxima figura ilustra exemplos de protocolos. Arquitetura e serviços de redes TCP/IP Quando se aborda serviços oferecidos pelos protocolos de redes, uma análise de protocolos pode ser vista como essencial. Em redes de computadores, são oferecidos serviços orientados à conexão e serviços não orientados à conexão. Serviços orientados à conexão são aqueles que necessitam de garantia de entrega dos dados. O protocolo de nível de transporte que realiza esse tipo de serviço é o TCP, e os protocolos de nível de aplicação que utilizam esse tipo de serviço são o HTTP, FTP, Telnet e SMTP. Esses protocolos são utilizados por aplicações que transmitem dados como arquivos, imagens, textos e que precisam ter garantia de entrega para completar a transmissão. Um exemplo de serviço orientado à conexão é o Internet Banking, em que, para finalizar uma transação bancária, é necessário que a entrega da totalidade dos dados seja concluída. Outro tipo de serviço em redes de computadores é o não orientado à conexão, em que a rapidez para transmissão de dados é mais relevante do que a entrega na totalidade dos dados. Esse serviço, por sua vez, transporta dados sem a confiabilidade entre os hosts da rede. O protocolo de camada de transporte que realiza esse tipo de comunicação é o User Datagram Protocol (UDP), e alguns exemplos de protocolos de nível de aplicação que utilizam esse serviço são: Dynamic Host Control Protocol (DHCP), Domain Name System (DNS), Simple Network Management Protocol (SNMP) e Network File System (NFS). Esse tipo de serviço é utilizado em aplicações de streamings de áudio e vídeo, em que a perda de um ou mais dados não interfere com grande impacto na comunicação. Esse tipo de serviço é comum em sistemas de transmissão de streaming de áudio e vídeo ou, ainda, em uma ligação pelo WhatsApp, por exemplo, em que ocorre a degradação do serviço, mas os pacotes não são retransmitidos. Para melhor entendimento, apresentaremos, a seguir, uma comparação entre as estruturas do modelo de referência ISO/OSI e TCP/IP. A partir dela, podemos observar que existe apenas uma reorganização conceitual dos níveis de protocolos e nomenclatura, que se referem, na prática, ao mesmo contexto. 🔁Assimile O modelo de referência ISO/OSI e a arquitetura (conjunto de protocolos) TCP/IP são referenciais que buscam organizar os protocolos que executam os serviços de transmissão e interpretação de dados em um sistema distribuído em redes de computadores. O modelo ISO/OSI é considerado um modelo referencial desenvolvido no início das tecnologias de rede; já a arquitetura de protocolos TCP/IP é considerada um conjunto de protocolos que representa, na prática, a distribuição dos protocolos utilizados, na atualidade, em redes de computadores e na internet. Conclusão Chegamos ao final da aula, que nos apresentou como é estruturado o modelo de referência OSI e a arquitetura TCP/IP, estruturas que visam garantir a interoperabilidade de uma rede e possibilitam oferecer serviços padronizados para transferência de dados em redes com independência de tecnologias de hardware e software. A seguir, veja como ficaria o relatório sugerido no início desta aula. Relatório Do Projeto De Redes: Análise De Protocolos O conjunto de protocolos TCP/IP é uma estrutura em camadas que organiza e formaliza os protocolos de rede e identifica a forma com que os serviços de rede são estabelecidos dentro do ambiente distribuído e heterogêneo dos sistemas de informação nas empresas. De forma a contribuir com as análises e decisões gerenciais para com os investimentos em tecnologia da informação da empresa, esse relatório pretende apresentar, de forma simples, a atuação das tecnologias de rede com os seus protocolos nas diferentes camadas do modelo, que podem ser vistas como partes do sistema de redes de computadores. Dessa forma, as informações a respeito do gerenciamento de protocolos e tecnologias em cada camada do modelo relacional das redes poderão ser compreendidas, bem como a independência de dispositivos e tecnologias entre as camadas ou partes diferentes da rede e a implementação de novas tecnologias de automação como foco principal da análise poderão ser observadas. Tendo como início a camada de host de rede, popularmente conhecida como camada física, a empresa precisa observar tecnologias de dispositivos de hardware e de acesso ao meio de comunicação para interoperação dos equipamentos de tecnologia conectados em rede com os sistemas de controle das redes de computadores. Nesse nível, estão os computadores, switches, roteadores e sensores de automação, por exemplo. Aqui, especificamos interfaces de entrada e saída, especificações elétricas e meios de transmissão (cabos, wireless). A segunda camada da arquitetura TCP/IP é chamada de inter-rede, ou Internet, mas não confunda com a rede mundial de computadores, por favor. Também pode ser chamada de rede e, nela, existe a necessidade de que os profissionais especializados configurem os endereços lógicos, aqueles bem conhecidos como IP, em seus dispositivos de rede. Cada dispositivo de rede que possui um endereço IP recebe o nome de host, e seus novos equipamentos e sensores precisam ser configurados. Essa camada também possui a gestão do roteamento de rede, ou seja, a configuração de dispositivos como roteadores para se gerenciar as melhores rotas de transporte de dados por meio dos protocolos de rede. A próxima camada é a de transporte, que tem a principal função a alocação dos protocolos de transporte dos dados da rede. Nessa camada, os dados transportados chamam-se pacotes ou datagramas, e a forma como serão transmitidos pelos seus novos sensores poderá ser orientada à conexão, quando houver a necessidade de envio e recepção de arquivos, imagens e pacotes que necessitam de controle de entregas, ou não orientada à conexão, se os sensores forem apenas de controle e precisarem de maior rapidez no sistema, como em transmissões de vídeos de controle e outras informações, por exemplo. Por fim, caro gestor, a camada de aplicação será aquela melhor compreendida, considerando-se que, nela, estão os protocolos que regem as aplicações finais, normalmente executadas em um browser de internet. As informações coletadas pelos sensores serão apresentadas ao analista via informações de áudio, vídeo, textos ou gráficos que possam contribuir com o processo de gestão da automação dos novos sistemas. Espero que tenhamos apresentado um texto didaticamente eficiente para compreensão das tecnologias de redes de computadores e seus protocolos paragestão de sistemas de automação. Protocolos de redes do modelo TCP/IP Boas-vindas à aula que tratará dos protocolos de redes, que funcionam como regras que definem o que e como ocorrerá um evento ou serviço de toda a rede. Por exemplo: imagine como uma máquina conectada à internet vai se comunicar com outra máquina já conectada. Os protocolos de redes funcionam como uma língua universal entre computadores que não depende de fabricantes e nem de sistemas operacionais específicos, viabilizando que qualquer computador se comunique com a rede mundial de computadores. Existe uma grande quantidade de protocolos e cada um apresenta um objetivo e uma funcionalidade; entre eles, temos o conjunto de protocolos TCP/IP, que pode ser considerado um modelo destinado à organização e padronização de sistemas de redes de computadores juntamente à internet. Conforme apresenta Nunes (2017), a arquitetura do modelo TCP/IP foi dividida em quatro camadas, e um conjunto de aplicações é utilizado para prover os diversos serviços de rede. A figura a seguir ilustra a distribuição de protocolos dentro das quatro camadas do modelo TCP/IP, de modo a reconhecer a localização e a funcionalidade de cada protocolo. Os protocolos e suas siglas serão apresentados na sequência. A fim de que possa compreender o uso de protocolos em sistemas de redes de computadores, traremos um conceito prévio sobre portas de comunicação. Na camada de transporte, os protocolos TCP e UDP utilizam-se de portas para acessar os serviços de camada de aplicação, conforme Kurose e Ross (2013). Tais portas possibilitam a utilização de diferentes serviços de comunicação de rede em um mesmo nó de rede (host), fazendo a interface entre um aplicativo e a rede e configurando o ponto final de comunicação que permite a um host uma conexão para um aplicativo. Por exemplo, ao acessar um site por meio de um navegador (browser) ou o seu e-mail ou fazer downloads e uploads de arquivos ou realizar algum acesso remoto, você utiliza protocolos de redes específicos que estão associados a portas de comunicação também específicas. Nesse sentido, há uma grande quantidade de portas utilizadas para que um sistema de redes de computadores identifique um protocolo de rede. No total, existem 65.536 portas em uma rede de computadores, porém apenas 65.535 são úteis. Dessas portas, cada aplicação programada em um sistema para atuação em rede deverá alocar uma porta para sua execução. Por padrão, portas entre 1 e 1.024 são reservadas para protocolos já definidos e são conhecidas como portas bem definidas. Os protocolos apresentados serão também associados às suas portas de comunicação padronizadas, exemplificando a utilização de portas juntamente aos protocolos de camadas de transporte e aplicação. Protocolos da Camada de Aplicação A camada de aplicação é uma camada composta por protocolos de rede de nível de aplicação, que são acessadas e possuem interação direta com usuários. Esses protocolos são responsáveis pela operacionalização de sistemas e aplicações finais para o usuário. Conforme definido por Tanenbaum (2011), as camadas abaixo da camada de aplicação têm a função de oferecer um serviço de transporte confiável, mas, na verdade, elas não executam nenhuma tarefa para os usuários. Há protocolos nas camadas inferiores que entregam serviços de transporte confiável e não confiável. A camada de aplicação define como os programas vão se comunicar com as aplicações de rede e como se dará o gerenciamento da interface com o que o usuário irá utilizar para executar a aplicação. Em geral, as aplicações são executadas em um browser (navegador) de internet. A seguir, vamos descrever alguns dos principais protocolos da camada de aplicação. HTTP Protocolo de transferência de hipertexto utilizado em sistemas de WWW para representação de sistemas dentro de navegadores. Trata-se de um protocolo com intenso uso na atualidade, pois a grande parte dos sistemas da internet é executada utilizando-se esse protocolo. Conforme Kurose e Ross (2013), o HTTP define como os clientes requisitam páginas aos servidores e como eles as transferem aos clientes. Esse protocolo está no coração da Web; é por meio desse padrão de comunicação em redes que as páginas de conteúdo dos Websites são programadas e distribuídas via internet. De acordo com Laudon e Laudon (2014), a WWW, formatada pelo HTTP, refere-se a um sistema de padrões universalmente aceitos para armazenar, recuperar, formatar e apresentar informações utilizando-se o modelo cliente/servidor em sistemas de redes de computadores. O protocolo TCP utiliza a porta 80 ou a porta 8080 para acessar o HTTP. 🔁Assimile O HTTP é representado pelo conjunto de letras no início de um endereço dos serviço de WWW seguido do nome de domínio que especifica o servidor de arquivos que será identificado pelo Uniform Resource Locator (URL) no aplicativo de navegação de internet (browser). Um exemplo completo de URL é: https://www.iana.org/. Existem diversos browsers (navegadores) disponíveis para acesso ao conteúdo da WWW. O primeiro a utilizar interface gráfica foi o Mosaic, que deu origem à Netscape, e os mais conhecidos na atualidade são: Google Chrome, Mozilla Firefox, Microsoft Edge, Microsoft Internet Explorer, Safari e Apple Opera. ______ SMTP Protocolo de gerenciamento e distribuição de sistema de mensagens eletrônicas para sistemas de e-mail. De acordo com Kurose e Ross (2013), o correio eletrônico existe desde o início da Internet e era uma das aplicações mais populares em seu início. Em um sistema de correio eletrônico, há três componentes principais na operação do serviço: agentes de usuário, servidores de correio eletrônico e o protocolo SMTP. Os agentes de usuário são compostos por aplicativos como Microsoft Outlook, Google Mail, entre outros e permitem que os usuários verifiquem seus e-mails, leiam, respondam, encaminhem suas mensagens. Os servidores formam a infraestrutura principal do sistema, mantendo caixas postais em servidores. Por último, o SMTP, como protocolo de aplicação desse serviço, utiliza um serviço confiável de transferência via TCP para transferir as mensagens do servidor do correio do remetente para o destinatário. O protocolo TCP utiliza a porta 25 para acessar o SMTP; considerando-se o uso de criptografia, o TCP utiliza a porta 465 para o SMTP. Post Office Protocol (POP3) e Internet Mail Access Protocol (IMAP) Adicionalmente ao SMTP, existem outros dois protocolos na gestão de sistemas de correio eletrônico. O POP3 é um protocolo utilizado também para sistemas de correio eletrônico para o gerenciamento de e-mails, assim como o IMAP. O POP3 realiza o download das mensagens de e-mail ao acessar uma caixa de correio eletrônico para a caixa de entrada no sistema gerenciador, liberando o espaço ocupado pelas mensagens no servidor de e-mail, enquanto o IMAP é um protocolo de correio eletrônico que acessa a caixa de e-mail e sincroniza as pastas da conta do usuário, mas não faz seu download. Esse protocolo é melhor para usuários que utilizam o sistema de correio eletrônico em diversas plataformas. O protocolo TCP utiliza a porta 110 para o protocolo POP3 e a porta 143 para o protocolo IMAP. Considerando-se o uso de criptografia, o TCP utiliza a porta 995 para POP3 e porta 993 para o IMAP. A figura abaixo apresenta uma tela de configuração (parcial) de conta utilizando protocolos de acesso ao serviço de correio eletrônico. Domain Name System (DNS), SNMP, FTP e TELNET Protocolo utilizado para o sistema de nomes de domínio que faz a interconexão de URL, ou seja, nomes de endereços de sites da internet com endereços IP. Para que endereços de camada de Internet IP tenham sua localização em um sistema distribuído mundialmente, é necessário que exista, no mundo, um sistema de nomes de domínios para a organização dos servidores na rede. Esse sistema é chamado Domain Name System (DNS) e seu objetivo é organizar os servidores na internet para que endereços IP sejam convertidos em nomes, como www.iana.org, por exemplo,e vice-versa. Esse sistema é uma estrutura hierárquica em que, no topo, há um servidor-raiz interligado a servidores de domínios de níveis inferiores, de primeiro e segundo níveis. Os domínios primários são chamados de servidores DNS de domínio de alto nível (TDL), aqueles referenciados por: .com, .gov, .mil, .edu entre outros adicionados das informações dos países, como: .br, .uk .it. Os domínios de segundo nível, servidores DNS autoritativos, possuem duas partes, designando-se os nomes de primeiro e de segundo nível, como exemplo: empresa.com. Um nome de host designa o computador final, específico na internet, em uma rede privada. O protocolo TCP utiliza as portas 53 e 953 para acessar o DNS, e o protocolo UDP utiliza a porta 53 para seu acesso. Para tratar da questão da escala, o DNS usa um grande número de servidores, organizados de maneira hierárquica e distribuídos por todo o mundo. Nenhum servidor DNS isolado tem os mapeamentos completos para hosts da Internet. Os mapeamentos são distribuídos pelos servidores DNS por meio de três classes de servidores DNS: raiz, de domínio de alto nível (Top-Level Domain — TLD) e servidores DNS autoritativo, conforme ilustrado na próxima figura. Por exemplo, considere que um cliente DNS deseja determinar o endereço IP para o nome de host www.amazon.com. Na primeira aproximação, o cliente contatará um dos servidores raiz, que retornará endereços IP dos servidores TLD para o domínio de alto nível com. Em seguida, o cliente contatará um servidor TLD, que retornará o endereço IP de um servidor autoritativo para amazon.com; por fim, o cliente contatará um dos servidores autoritativos para amazon.com, que retornará o endereço IP para o nome de host www.amazon.com (KUROSE; ROSS, 2013). SIMPLE NETWORK MANAGEMENT PROTOCOL (SNMP) Protocolo de gerenciamento de redes simples que realiza coleta e mensuração de performance de rede. Conforme Forouzan (2010), o gerenciamento de redes refere-se a monitoramento, teste, configuração e diagnóstico de componentes de rede para atender a um conjunto de exigências definidas por uma organização. Esse protocolo realiza o gerenciamento de configuração, falhas (reativas, proativas), desempenho (capacidade, tráfego, throughput, tempo de resposta), segurança e contabilização. O protocolo UDP utiliza as portas 161 e 162 para acessar o SNMP. FILE TRANSFER PROTOCOL (FTP) Protocolo de transferência de arquivos entre dispositivos em uma rede de computadores. Tanto o HTTP quanto o FTP são protocolos de transferência de arquivos, como afirmam Kurose e Ross (2013). O protocolo TCP utiliza as portas 20 e 21 para acessar e gerenciar o FTP; ele utiliza duas portas para conexão via camada de transporte, uma é utilizada para conexão de controle e a outra para a conexão de dados. O FTP oferece maior facilidade de comunicação entre computadores para transferência de arquivos com maior velocidade, praticidade e sem necessidade de dispositivos externos. São exemplos de aplicativos que operacionalizam o serviço de transferência de arquivos via protocolo FTP: FileZila, um dos mais conhecidos programas por ser de fácil uso e trazer ferramentas completas; Classic FTP; Fere FTP; e Cyberduck com código aberto e compatibilidade com diversas plataformas. TELEPHONE NETWORK (TELNET) Protocolo de conexão remota utilizado por meio de um terminal, representado por um prompt de comando nos sistemas operacionais. O protocolo TCP utiliza a porta 23 para acessar o Telnet. A camada de aplicação traz um volume grande de protocolos, alguns mais novos, desenvolvidos, por exemplo, para a realidade da internet atual, em que aplicações em HTTP necessitam de transmissão de streaming de vídeos. Um exemplo é o protocolo Hypertext Transfer Protocol Live Streaming (HLS), que se utiliza das novas tecnologias e velocidades de transmissão em sistemas móveis para protocolos de nível de transporte confiáveis para distribuição de conteúdo de streaming em velocidades compatíveis com as necessidades dos sistemas. Novos protocolos são desenvolvidos constantemente para provisão de segurança em sistemas e adaptação às novas necessidades tecnológicas dos sistemas distribuídos via internet. ______ 💭Reflita HTTPS = HTTP + SSL. O protocolo HTTPS é o protocolo HTTP adicionado de serviço de segurança provido pelo protocolo Secure Socket Layer (SSL), implementado sob a camada de transporte e abaixo da camada de aplicação na arquitetura TCP/IP. Esse protocolo oferece recurso de criptografia para as informações transmitidas do servidor até o navegador de internet do host. O HTTPS utiliza a porta 443 via TCP. A versão do SSL3 é denominada Transport Layer Security (TLS). Mesmo com essas tecnologias implementadas para melhorar a segurança nas aplicações em rede, ainda existem fragilidades que podem deixar sua conexão vulnerável, como podemos ver no artigo HTTPs não quer dizer seguro, da empresa de soluções de segurança Kaspersky. Protocolos de camada de transporte e User Datagram Protocol (UDP) A camada de transporte ou Transport Layer é uma camada composta por protocolos de transporte de dados em rede que fornecem à camada de aplicação serviços de empacotamento e comunicação de duas formas, sendo uma delas via serviços orientados à conexão e a outra via serviços não orientados à conexão. Ela tem como objetivo principal gerenciar conexões ponto a ponto para garantir a integridade dos dados por meio de sequenciamento de pacotes segmentados no envio e recebimento de mensagens. Suas principais funções são: tratar questões de transporte entre hosts, contabilizar o transporte de dados, estabelecer circuitos virtuais, detectar e recuperar falhas e controlar o fluxo de informações. Ademais, nessa camada, há o endereçamento via portas das informações, via protocolos de camada de aplicação. De acordo com Tanenbaum (2011), quando um processo de aplicação deseja estabelecer uma conexão com um processo de aplicação remoto, é necessário especificar a aplicação com a qual ele vai se conectar, o que ocorre por meio da definição de um endereço de transporte, chamados de portas ou Transport Service Access Point (TSAP), que se associam a sessões de acesso, chamadas de Socket. Exemplificando, quando um usuário solicita o acesso a um site de internet, ele digita o URL referente ao site, que vai abrir uma sessão no browser identificada pelo endereço IP relacionada a URL e seguida do número da porta, que identifica o serviço. O usuário ainda poderá solicitar uma nova página, em uma nova aba do navegador, com o endereço adicionado do número de porta, que é a mesma referente ao serviço de HTTP, porém com um TSAP diferente, que identifica um novo socket. A figura abaixo mostra um exemplo de comunicação utilizando-se as portas dentro de um sistema de rede de computadores. Na figura, podemos perceber que no segmento A-B, o número da porta de origem serve como parte de um endereço de retorno (por exemplo, quando B quer enviar um segmento de volta para A, a porta de destino no segmento B-A toma seu valor do valor da porta de origem do segmento A-B). Observe, também, que o endereço de retorno completo é o endereço IP adicionado do número da porta de origem de A. Utilizando o UDP, por exemplo, o servidor usa um método recvfrom() para extrair o número de porta cliente-servidor de origem do segmento que recebe do cliente e envia um novo segmento ao cliente com o número de porta que extraiu, servindo como o número de porta de destino desse novo segmento. Tanenbaum (2011) afirma que a camada de transporte juntamente à camada de rede formam o núcleo da hierarquia de protocolos. A seguir, apresentaremos a descrição de seus principais protocolos. User Datagram Protocol (UDP) É um protocolo de nível de transporte não orientado à conexão utilizado para transmissões que necessitam de maior velocidade de entrega, porém ele não garante a entrega dos dados e é utilizado, por exemplo, em aplicações de streaming de áudio e vídeo, em que a falta de um fragmento da mensagem não é relevante. A camada de transporte mapeiao pedido de transmissão de host feito ao serviço não orientado à conexão fornecido pela camada de inter-rede. As principais características de um protocolo UDP são: 1. Protocolo de transporte sem conexão. 2. Transporta dados sem confiabilidade entre hosts. 3. Realiza transmissão sem conexão e de forma não confiável. 4. Não tem tratamento de erros; 5. Não garante a entrega das mensagens; 6. Sem controle de congestionamento. 7. Sem controle de fluxo. 8. Não reagrupa mensagens. As aplicações desse protocolo são para streaming media, teleconferência, telefonia IP e controles. Um segmento UDP é simples, tem uma estrutura formada por campos de cabeçalho com os números de porta de origem e destino do host de rede, o comprimento do número de bytes do segmento e o campo com informação de verificação dos erros no segmento e, naturalmente, o campo de dados (mensagem). A figura abaixo apresenta a estrutura de um segmento UDP. Observe que o cabeçalho UDP tem apenas quatro campos com 2 bytes cada. Os números de porta permitem que o host destinatário passe os dados da aplicação ao processo correto que está funcionando no sistema final do destinatário. O campo de comprimento especifica o número de bytes no segmento UDP (cabeçalho mais dados). A soma de verificação é usada pelo host receptor para verificar se foram introduzidos erros no segmento. Por fim, o campo de comprimento especifica o comprimento do segmento UDP, incluindo o cabeçalho, em bytes. O UDP é um protocolo não orientado à conexão, sem garantia de entrega, utilizado para aplicações que necessitam de velocidade de acesso e não obrigatoriamente da entrega de 100% dos dados, como transmissões de áudio e vídeo pela internet, jogos online e sistemas de mensagens instantâneas, como o WhatsApp, por exemplo. Os principais protocolos de aplicação que utilizam esse tipo de transmissão são: TFTP, DHCP, SNMP, NFS e DNS. Transmission Control Protocol (TCP) É um protocolo de nível de transporte orientado à conexão utilizado em aplicações que exigem que a totalidade e a integridade dos dados sejam realizadas com garantia de entrega, como na transmissão de um documento, uma mensagem ou uma figura, por exemplo, em formato de arquivo. O serviço de transporte oferece meios para se estabelecer, manter e liberar conexões de transporte entre pares de hosts por meio dos Services Access Points (SAP). De forma geral, o protocolo TCP divide as mensagens vindas da camada de aplicação em segmentos e as encaminha para o host de destino, que a reconstruirá com informações adicionadas no cabeçalho do protocolo. Esse protocolo cuida da confirmação do recebimento da mensagem, estabelece uma conexão fim a fim e escolhe o caminho confiável de transporte da mensagem. As principais características de um protocolo TCP são: · Fornece um circuito virtual entre aplicações finais. · Orientado para conexão. · Realiza controle de fluxo para garantir a confiabilidade na transmissão. · Divide as mensagens enviadas em segmentos; · Utiliza o conceito de janelas deslizantes para segmentação e controle; · Reagrupa as mensagens no host destino. · Realiza controle de congestionamento. As aplicações para esse protocolo são para transmissão de dados. Um segmento TCP é formado por campos de cabeçalho e campo de dados. Os campos de cabeçalho contêm as portas de origem (porta de origem #) e destino da transmissão (porta de destino #), um número de sequência (número de sequência), um número de reconhecimento para verificação de integridade de dados (número de reconhecimento), campos da janela de recepção para o controle de fluxo (URG, ACK, PSH, RST, SYN, FIN), campo de comprimento de cabeçalho, campo de opções para controle em redes de alta velocidade (opções), sinalizadores de reconhecimento (soma de verificação da Internet) e o campo de dados. A figura abaixo mostra a estrutura do segmento TCP. O TCP é um protocolo orientado à conexão com garantia de entrega, também chamado de protocolo elástico, utilizado para acesso a sites em formato de hipertexto nos sistemas Web, Internet Banking, correio eletrônico e transferência de dados, por exemplo. Os principais protocolos de aplicação que utilizam esse tipo de transmissão são: HTTP, FTP, SMTP e DNS. Protocolos da camada de internet, ICMP, ARP e RARP De acordo com Tanenbaum (2011, p. 222), a camada de inter-rede ou Internet Layer ou, ainda, Rede, está relacionada à transferência de pacotes da origem para o destino. Ela é responsável por reconhecer a topologia da rede, escolher os caminhos mais apropriados para entrega dos pacotes entre hosts na rede e também pela definição do endereçamento de um host de rede por meio do endereço de rede. A exemplo do endereçamento realizado pelo TSAP na camada de transporte, na camada de inter-rede um endereço de rede é dado pelo chamado NSAP, exemplificados pelo endereço IP (Internet Protocol), responsável pelo endereçamento de hosts na rede de forma prática. Os principais protocolos da camada de inter-rede são: IP (Internet Protocol) Protocolo mais conhecido de camada de inter-rede, uma vez que é o responsável pelo endereçamento lógico dos hosts de rede, informado pelo profissional de tecnologia da informação ou mesmo pelo usuário para identificação única do host dentro de um segmento de rede. Faz-se importante saber que, para que um computador ou dispositivo possa fazer parte de uma rede, ele, obrigatoriamente, necessita ser configurado recebendo um endereço IP válido no segmento de rede. Esses endereços também podem ser atribuídos de forma automática de rede, com um servidor de endereços IPs ativo em um sistema operacional de rede, como o DHCP. O protocolo IP é utilizado em duas versões disponíveis: Internet Protocol 4 (IPv4) e Internet Protocol 6 (IPv6), ambas ativas e com possibilidades de utilização conforme políticas de atribuição de endereços que serão estudadas na Unidade 2 deste livro. A figura abaixo apresenta a configuração de um endereço de IPv4 estático em um ambiente Windows. Exemplo de configuração de conta em e-mail via protocolo POP3. Fonte: captura de tela elaborada pelo autor. ICMP Protocolo utilizado para gerenciar os erros de processamento de datagramas do protocolo IP. Esse protocolo é exemplificado por: buffer full, que indica se um buffer atingiu sua capacidade máxima de processamento; hops, que mostra quantos saltos são necessários para que uma mensagem chegue ao destino; ping, que identifica se a interface de rede é ativa por meio de um teste; e traceroute (Linux) ou tracert (Windows), que mapeia os saltos e traz informações sobre o tempo entre nodos de rede e seus nomes. Esses são comandos que podem ser utilizados para a operação de testes e análises de rede com o protocolo ICMP. Um exemplo de utilização desse protocolo é a utilização do comando tracert 8.8.8.8 apresentado na figura abaixo, em que o endereço IP 8.8.8.8 é do Google e o retorno do comando apresenta dados do rastreamento da rota para o servidor dns.google. Exemplo de utilização de tracert. Fonte: captura de tela elaborada pelo autor. ARP Protocolo que reconhece o endereço físico de uma placa de rede, chamado Media Access Control (MAC) por meio de seu endereço IP. Exemplo: para se verificar o mapeamento dos endereços MAC e IP, é possível digitar arp -a no prompt de comando. RARP Protocolo que reconhece o endereço lógico de uma rede, ou seja, reconhece o endereço IP por meio de um endereço MAC. 📝Exemplificando As redes de computadores são organizadas em camadas dentro do modelo de referência OSI e/ou TCP/IP. Em cada camada dos modelos de referência, os dados transferidos possuem endereços para que a informação possa ser transmitida de um host de origem para um host de destino. Dispositivos conectados em rede possuem um endereço MAC atribuído à camada do TCP/IP de Host de rede gravado em uma placa de rede como endereço físico e único, formado por uma sequência de seis dígitos em formato hexadecimal. Exemplo: 00-14-CE-5B-3A-93. Já o endereço IP é um endereço lógico, de camada de inter-rede, atribuído manualmente aohost ou por meio de um servidor DHCP de um serviço de rede. Um IPv4 é um endereço de 32 bits constituído por um conjunto de 4 números decimais que representam quatro números binários de 8 bits cada. Exemplo de IPv4 é 192.168.15.12. Na versão IPv6, ele é representando por um conjunto de 128 bits. Exemplo: 835C:5B9D:BC27:0000:0000:0000:C4B8:1FBB. ______ Outros protocolos de camada de inter-rede são utilizados para o trabalho de roteamento interno e externo de pacotes em rede, operando-se em roteadores. Alguns exemplos desses protocolos são: Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Interior Gateway Routing Protocol (IGRP), Enhanced Interior Gateway Routing Protocol (EIGRP) e Border Gateway Protocol (BGP). Protocolos da camada de host de rede e Protocolos CSMA A camada host de rede ou network access layer, como no modelo OSI, é a camada em que se localizam os dispositivos físicos da rede com as funções de enlace para acesso aos dispositivos físicos da rede. Entre suas atribuições, estão o monitoramento de tráfego de rede, a detecção e a correção de erros e o endereçamento, em nível físico, de dispositivos de rede para a transmissão de dados. Aqui, destacam-se os protocolos de acesso múltiplo ao meio Carrier Sense Multiple Access (CSMA) implementados com especificações de detecção de colisão ou de colisão evitada nos padrões, também chamados de protocolos dos dispositivos físicos de rede, sendo os mais utilizados: IEEE 802.3, IEEE 802.11 e IEEE 802.16, em que IEEE representa uma instituição internacional que organiza, regulamenta e padroniza sistemas de comunicação de rede em nível de hardware. A seguir, serão apresentados dois protocolos de acesso múltiplo ao meio. CARRIER SENSE MULTIPLE ACCESS WITH COLLISION DETECTION (CSMA/CD) O protocolo CSMA utiliza um único meio de transmissão (cabo de rede, por exemplo) para suportar a transmissão de todos os hosts da rede. Seu funcionamento ocorre por meio de acesso múltiplo com detecção de onda portadora, chamada de CSMA/CD, independentemente da topologia da rede. A transmissão é feita quando o cabo está livre, e existe controle de colisão quando mais de um host transmite dados ao mesmo tempo, implementado por meio de um algoritmo com mecanismo de gestão de colisão e transmissão. Conforme Forouzan (2010), nesse método, a estação monitora continuamente o meio de transmissão após transmitir um frame para: verificar se a transmissão foi bem sucedida, finalizar a transmissão ou, se houver colisão na transmissão, providenciar a retransmissão. O algoritmo detecta a colisão do sinal transmitido e controla sua retransmissão com a definição de um tempo aleatório para transmitir e retransmitir os dados conforme a disponibilidade do meio (cabo), por meio de protocolos de revezamento. Esse padrão é implementado nas redes padrão Ethernet, normatizadas pela IEEE 802.3. CARRIER SENSE MULTIPLE ACCESS WITH COLLISION AVOIDANCE (CSMA/CA) Protocolo que define o formato de utilização de um meio de comunicação compartilhado por meio de prevenção de colisão de onda portadora. Seu funcionamento é realizado a partir da análise do meio pelo qual o sinal será transmitido, e ao se verificar que o canal está livre, a transmissão é iniciada. Como apresentam Kurose e Ross (2013), durante a transmissão em uma rede de computadores, cada host verifica o canal antes de transmitir e abstém-se de transmitir quando percebe que o canal está ocupado. Esse é um padrão utilizado pelas redes sem fio (wireless) e normatizado pela IEEE 802.11. Essa camada é composta também por outros protocolos que regem a comunicação em redes de telecomunicações e redes convergentes no contexto de integração entre redes de telecomunicações e redes de computadores. ______ ➕Saiba mais Protocolos de redes de computadores são os padrões desenvolvidos via programação que regem o funcionamento dos serviços em redes de computadores. Além das aplicações dos protocolos de redes de computadores e suas funções, existe uma preocupação quanto a questões de segurança em redes, que transcendem a funcionalidade de cada protocolo e é suportada por protocolos adicionais, que operam em camadas ou mesmo em subcamadas. Segundo Stallings (2015), o SSH é um protocolo para comunicações seguras de rede projetado para que sua implementação seja relativamente simples. Aplicações SSH cliente e servidor são encontradas na maioria dos sistemas operacionais e utilizadas para login remoto e tunelamento (termo utilizado nas VPN – Virtual Private Network). Conclusão Nesta aula foram apresentados alguns dos principais protocolos de camada de aplicação àqueles que estão mais próximos ao profissional de tecnologia da informação e mesmo de usuários, que regem as aplicações finais dos serviços distribuídos em redes de computadores. Passamos por uma análise dos dois principais protocolos de camada de transporte, o TCP e o UDP, caracterizando-os pelas orientações à conexão e não orientação à conexão e relacionando-os com protocolos e natureza de aplicações. Na camada de inter-redes, pudemos conhecer as funções de endereçamento pelo seu principal protocolo, o IP, bem como ter uma breve descrição de protocolos de roteamento. Para finalizar, mostramos alguns protocolos de camada de host de rede, que definem a forma com que os dispositivos físicos implementam protocolos de comunicação e tratativas de erros. ______ ➕ Pesquise mais · Conheça a seção 17.2 Secure Socket Layer, do capítulo 17, Segurança na camada de Transporte, do livro Criptografia e Segurança em redes: princípios e práticas, de Stallings (2015). Trata-se de um importante livro dentro do contexto de redes e traz conteúdo referente à criptografia e segurança de redes. · Conheça a aula 17.3 Transport Layer Security, do capítulo 17, Segurança na camada de Transporte, do livro Criptografia e Segurança em redes: princípios e práticas, de Stallings (2015). Trata-se de um importante livro dentro do contexto de redes e traz conteúdo referente à criptografia e à segurança de redes. · STALLINGS, W. Criptografia e segurança de redes: princípios e práticas. 6 ed. São Paulo: Pearson Educacional do Brasil, 2015. · Conheça o site da revista eletrônica Wired. Trata-se de uma revista de referência mundial sobre redes de computadores que acompanha toda a história das redes. · WIRED - Magazine. Revista eletrônica. · Conheça o site da revista eletrônica Network World. O site é uma referência mundial de informações sobre redes de computadores. A seguir, veja como ficaria o relatório proposto no início desta aula. Relatório do Projeto De Redes: Análise de Protocolos e Serviços em Nível de Aplicação Caro cliente, esta consultoria apresentará um relato simplificado sobre os serviços que poderão ser utilizados em sua nova rede de computadores. O primeiro serviço a ser apresentado é o de Web services, que permite que usuários da rede façam uso de sistemas baseados na WWW, que utiliza o protocol HTTP. Esse protocolo é chamado protocolo de transferência de hipertexto e é usado para representação de sistemas dentro de navegadores de internet que suportam o formato de hipertexto e sistemas multimídia. O HTTP define como os clientes requisitam páginas aos servidores e como eles as transferem aos clientes. A WWW, formatada pelo HTTP, refere-se a um sistema de padrões universalmente aceitos para se armazenar, recuperar, formatar e apresentar informações utilizando o modelo cliente/servidor em sistemas de redes de computadores. Faz-se importante também informar que o protocolo HTTPS é também suportado para que sistemas baseados em segurança possam ser utilizados. Esse serviço pode ser implementado em uma empresa mediante instalação e configuração de um servidor Web, provido pelo IIS para plataformas Windows e Apache Server, por exemplo, para uma plataforma Linux. O segundo serviço suportado pela estrutura de rede é o serviço de e-mail ou correio eletrônico suportado pelo protocolo SMTP. Esse protocolo gerencia e distribui mensagens eletrônicas para sistemas de e-mail. O POP3 é um protocoloutilizado também para sistemas de correio eletrônico, para o gerenciamento de e-mails, assim como o IMAP. O POP3 realiza o download das mensagens de e-mail ao acessar uma caixa de correio eletrônico para a caixa de entrada no sistema gerenciador, liberando o espaço ocupado pelas mensagens no servidor de e-mail, enquanto o IMAP é um protocolo de correio eletrônico que acessa a caixa de e-mail e sincroniza as pastas da conta do usuário, mas não faz seu download. O Windows Server possui recurso para instalação de servidores de e-mail; em Linux, pode-se utilizar o Postfix e o Dovecot, por exemplo, como servidores de e-mail. O terceiro serviço é o de transferência de arquivos, promovido pelo protocolo FTP. Tanto o HTTP quanto o FTP são protocolos de transferência de arquivos. Esse protocolo permite a transferência de arquivos de forma específica para outros sistemas. São exemplos de aplicativos que operacionalizam o serviço de transferência de arquivos via protocolo FTP: FileZila, um dos mais conhecidos programas por ser de fácil uso e trazer ferramentas completas; Classic FTP; Free FTP; e Cyberduck — este último com código aberto e compatibilidade com diversas plataformas. Caro cliente, esperamos que as informações técnicas aqui apresentadas possam auxiliá-lo quanto à qualidade e aos serviços que estarão disponíveis em sua rede. EXERCÍCIOS UNIDADE 1: Questão 1 Os protocolos de camada de Aplicação são aqueles que trazem o formato e o significado como mensagens aos segmentos recebidos da camada de Transporte. Quando uma comunicação estiver utilizando o protocolo de transporte TCP, utilizará uma porta para fazer a comunicação final de um processo de rede, assim encaminhará os dados para uma conexão final que determinará qual é o software e o protocolo de Aplicação que os dados transferidos necessita para serem apresentados. Assinale a alternativa a seguir que representa o protocolo a ser utilizado quando um segmento da camada de Transporte é entregue pelo protocolo TCP à camada de Aplicação pela porta 25. Quando um segmento da camada de Transporte é encaminhado via protocolo TCP para a camada e Aplicação utilizando-se da porta 25, o protocolo de Aplicação SMTP (Simple Mail Transfer Protocol) será utilizado, considerando a definição da porta para o protocolo específico. O protocolo HTTP (Hypertext Transfer Protocol) utiliza-se da porta TCP 80 ou ainda da parta 8080 no processo de comunicação final em rede. O protocolo FTP (File Transfer Protocol) utiliza-se das portas TCP 20 e 21 no processo de comunicação final em rede. O protocolo SMTP (Simple Mail Transfer Protocol) utiliza-se da porta TCP 25 no processo de comunicação final em rede. O protocolo DNS (Domain Name System) utiliza-se da porta TCP 53 e 953 no processo de comunicação final em rede. O protocolo SNMP (Simple Network Management Protocol) utiliza-se da porta TCP 161 e 162 no processo de comunicação final em rede. Questão 2 Na arquitetura TCP/IP há quatro camadas com atribuições bem definidas onde protocolos são referenciados com suas atividades de controle e transporte de dados dentro dos sistemas distribuídos em redes de computadores. A camada de Aplicação da arquitetura TCP/IP é uma camada composta por protocolos de rede de nível de aplicação, responsáveis pela operacionalização de sistemas e aplicações finais em ambientes distribuídos em redes de computadores. Nesta camada é definido como os programas vão se comunicar e como se dará o gerenciamento da interface e operação dos protocolos que recebem dados da camada inferior. PORQUE A camada imediatamente inferior à camada de Aplicação na arquitetura TCP/IP é a camada de Inter-Rede, composta por protocolos de transporte de dados que fornecem à camada de Aplicação serviços de empacotamento e comunicação de duas forma, sendo uma delas via serviços orientados a conexão e a outra por serviços não orientados à conexão. A respeito dessas asserções, assinale a alternativa correta. A asserção I é uma proposição verdadeira e a II, falsa. Questão 3 Uma infraestrutura de LAN (Local Area Network) abarca um conjunto de dispositivos e equipamentos que são utilizados para implementar um projeto de rede local de computadores. O cabeamento estruturado é a parte física da rede que irá suportar os links de comunicação e os dispositivos de controle e distribuição da transmissão na rede. O cabeamento estruturado pode ser visto como o ____________ de equipamentos e cabos para suporte e interligação de dispositivos de rede de computadores. Exemplos de equipamentos de infraestrutura do cabeamento estruturado são os ____________ para servidores e passagem de cabos, os dispositivos de concentração como um ____________ e dispositivos complementares como os tubos condutores de ____________ que organizam o cabeamento horizontal e vertical em uma ambiente de rede de computadores. Assinale a alternativa que preenche corretamente as lacunas. conjunto / racks / switch / cabos. Questão 4 Na arquitetura TCP/IP há uma camada que acomoda um dos protocolos mais conhecidos por profissionais de tecnologia da informação e também por usuários dos sistemas de informações distribuídos em redes de computadores, pois ele precisa ser atribuído a um computador ou dispositivo que deseja ser conectado a uma rede de computadores para acesso à sistemas na internet. A camada de Inter-Rede da arquitetura TCP/IP (Transmission Control Protocol / Internet Protocol) é responsável pela definição de __________ de um host de rede através do endereço __________ da rede. Outra função desta camada é o roteamento dos pacotes de rede, também chamados de __________. O principal protocolo desta camada é o protocolo __________. Assinale a alternativa que preenche corretamente as lacunas. Sua resposta endereçamento / lógico / datagramas / IP. Questão 5 A comunicação de dados é realizada através da transmissão de sinais analógicos e/ou sinais digitais. Sinais analógicos são ondas eletromagnéticas que assumem valores contínuos ao longo do tempo, representados por uma onda senoidal enquanto os sinais digitais são abstrações de ondas eletromagnéticas e representados por valores discretos (binários). A figura apresentada a seguir mostra um exemplo de representação de um sinal digital. Fonte: MEDEIROS, Júlio César Oliveira. Princípios de telecomunicações - teoria e prática. 5. ed. São Paulo: Érica, 2015. Considerando as características de sinais analógicos e de sinais digitais dentro do contexto de comunicação de dados, analise as afirmativas a seguir: I. Os sinais analógicos são ondas eletromagnéticas que assumem valores contínuos ao longo do tempo, representado por uma onda senoidal com quantificação de amplitude, frequência e fase. II. Em um sinal analógico, a amplitude da onda senoidal representa a intensidade (altura) dos sinais elétricos enquanto a frequência define a quantidade de ciclos da onda em um intervalo de tempo definido. III. A representação de um sinal digital é dada ao longo do tempo e pela amplitude do sinal. Esta representação é binária e define posições representadas pelos dígitos 0 e 1 em uma sequência de saída de dados. IV. Os sinais analógicos são mais utilizados na transmissão de dados em um sistema de redes de computadores em comparação com os sinais digitais. Considerando o contexto apresentado, é correto o que se afirma em: Sua resposta I, II e III, apenas. Questão 2 A camada de Inter-Rede ou Internet Layer, ou ainda chamada de Rede, está relacionada à transferência de pacotes da origem para o destino, conforme define Tanenbaum (2011, p. 222). Ela é responsável por reconhecer a topologia da rede, escolher os caminhos mais apropriados para entrega dos pacotes entre hosts na rede e também pela definição do endereçamento de um host de rede através do endereço de rede. A exemplo do endereçamento que realizado pelo __________ na camada de Transporte, na camada de Inter-Rede um endereço de rede é dado pelo chamado __________, exemplificados pelo endereço __________, responsável peloendereçamentos de __________ na rede de forma prática. Assinale a alternativa que preenche corretamente as lacunas. Sua resposta: TSAP / NSAP / IP / host. Questão 3 Conforme define Tanenbaum (2011, p. 384), as camadas inferiores à camada de Aplicação têm a função de oferecer um serviço de transporte confiável, mas, na verdade, elas não executam nenhuma tarefa para o usuário. Os protocolos de camada de Aplicação da arquitetura TCP/IP relacionam-se à aplicações de software que trarão interatividade junto aos profissionais de tecnologia da informação e a todos os usuários de sistemas distribuídos em redes de computadores pois nesta camada estão os protocolos que executam aplicações finais junto aos sistemas computacionais em rede. Considerando os protocolos de camada de Aplicação da arquitetura TCP/IP, analise as afirmativas a seguir: I. FTP (File Transfer Protocol) é um protocolo de transferência de arquivos dentre dispositivos em uma rede de computadores. O protocolo TCP utiliza as portas 20 e 21 para acessar e gerenciar o FTP. II. Telnet (Telephone Network) é um protocolo de conexão remota utilizado através de um terminal, representado por um prompt de comando nos sistemas operacionais. O protocolo TCP utiliza a porta 23 para acessar o Telnet. III. SNMP (Simple Network Management Protocol) é um protocolo de gerenciamento de redes simples que realiza coleta e mensuração de performance de da rede. O protocolo UDP utiliza as portas 161 e 162 para acessar o SNMP. IV. SMTP (Simple Mail Transfer Protocol): protocolo de gerenciamento e distribuição de sistema mensagens eletrônicas para sistemas de e-mail. O protocolo TCP utiliza a porta 25 para acessar o SMTP. Considerando o contexto apresentado, é correto o que se afirma em: Sua resposta: I, II, III e IV. Questão 4 No modelo de referência OSI (Open System Interconnection), as sete camadas possuem funções bem definidas e acomodam os protocolos com suas respectivas funcionalidades que entregam para as suas camadas inferiores os dados adicionados de informações a fim de respeitar a diferença entre tecnologias de uma rede de computadores. Assinale a alternativa correta que traz o nome da camada que tem as seguintes funções: 1. Controlar as operações da sub-rede identificando e gerenciando a maneira com que os pacotes de dados são roteados do host de origem até o host de destino; 2. Realizar o endereçamento lógico dos hosts de rede. Sua resposta: Rede. UNIDADE 2 Arquitetura & Tecnologia de redes REDES E SUB-REDES Boas-vindas à segunda unidade da disciplina de Redes e Sistemas Distribuídos: Arquitetura e tecnologia de redes. Esta é uma unidade de ensino que tem por objetivo levá-lo ao estudo sobre endereçamento IP (Internet Protocol) de uma rede, compreensão e configuração de endereços e máscaras de rede e de sistemas de nomes de domínio. Adicionalmente, o estudo também abrange conceitos de Ethernet, operação de rede com interoperabilidade de protocolos e gerenciamento de desempenho e configuração de uma rede de computadores. O adequado estudo desta unidade fará com que a construção do conhecimento em redes possa seguir para abordagens técnicas e práticas embasadas em tecnologias de comunicação de dados e estruturas de redes de computadores e levar o profissional de redes à construção de soluções computacionais distribuídas. A primeira aula, Redes e sub-redes, abordará conceitos sobre endereçamento IP, notação e classes de endereço, atribuição de endereço, configuração de máscaras de rede, segmentação de uma rede local e utilização de um servidor DNS (Domain Name System). A compreensão sobre endereços IP e sua utilização é fundamental para o trabalho de um profissional de tecnologia da informação no cenário das redes de computadores. Em seguida, a segunda aula, Ethernet e IPv6, apresentará conceitos de Ethernet e domínios de broadcast e de colisão, operação, velocidade e comutação em redes. Este estudo lhe levará a compreender melhor o funcionamento de uma rede baseada no protocolo IEEE 802.3 e analisar a performance de uma rede em função da operação dentro de um canal compartilhado e com controle de colisão. Conheceremos informações e características do endereço IPv6 (Internet Protocol version 6) e veremos também as diferenças entre o IPv4 e o IPv6, explorando os tipos de endereços, coexistência, interoperabilidade e comandos de testes e conectividade. Aqui, você se aprofundará nas atividades de endereçamento e testes de rede, para que tenha conhecimento em planejar redes com as versões adequadas de endereços IP, assim como a coexistência de ambos os endereços em uma rede. Para finalizar, temos a terceira aula, Gerência de desempenho, configuração e contabilização, que trará conceitos e prática para análise e configurações de uma rede de computadores, análise de gargalos, tempo de resposta, latência de rede, QoS (Quality of Services) e análise de tráfico. Faremos também uma introdução ao protocolo VLAN Trunk e ao serviço de acesso remoto com o SSH (Secure Shell). Os conhecimentos adquiridos nesta aula levarão o profissional de tecnologia da informação a gerenciar uma rede de forma técnica e utilizar ferramentas de monitoramento e gerenciamento da rede. Com os conhecimentos assimilados desta unidade, você será capaz de fazer o planejamento de um esquema de endereçamento de redes utilizando os protocolos IPv4 e IPv6, o planejamento e a definição de máscaras de sub-redes e a configuração de um servidor DNS, além de realizar o gerenciamento de uma rede de computadores com análise de desempenho e contabilização via ferramentas de análise, redes virtuais e acesso remoto. Esta aula traz para você um conteúdo referente à arquitetura e tecnologia de redes, focando em endereçamento IP de uma rede de computadores local (LAN – Local Area Network). Objetivos gerais de aprendizagem Ao longo desta aula, você irá: · Identificar o conceito de redes locais; · Examinar aplicações dos sistemas de domínio; · Analisar os tipos e aplicações de sub-redes. Introdução da aula O endereçamento de uma rede local deve levar em consideração a análise de volume de endereços para os dispositivos da rede, a topologia da rede e a estrutura organizacional. O endereçamento de uma rede local necessita seguir critérios preestabelecidos referente a classes (ou sem classes) e números de endereços IPs a serem utilizados, assim como sua distribuição e organização em sub-redes, o que é realizado através do uso de máscara de rede. A atribuição de endereços de rede para hosts de uma rede local irá, em primeiro lugar, levar em consideração o número de dispositivos que poderão fazer parte da rede. Tendo em vista o número de hosts a serem endereçados, o administrador da rede definirá a classe IP para sub-rede, ou fará o seu cálculo da máscara da sub-rede utilizando a técnica de CIDR (Classless Inter-Domain Routing). Aprofundaremos nossos estudos sobre redes conhecendo o DNS (Domain Name System), ou sistema de nomes de domínio, que estrutura uma rede dentro de um serviço de nomes de domínio para que as pesquisas possam utilizar nomes definidos por URL (Uniform Resource Locator) na tradução de endereços IPs para nomes utilizados nos browsers de internet. Tendo as informações sobre endereços de rede e máscara de rede, podem ser informados manualmente os endereços e as máscaras nos dispositivos, ou fazê-lo de forma automática, utilizando-se de um servidor DHCP (Dynamic Host Configuration Protocol), através do serviço de mesmo nome em um sistema operacional de rede. A empresa de coworking que contratou sua consultoria para análise e implantação de um sistema de redes de computadores precisa, nesta segunda fase do projeto, de uma análise mais aprofundada sobre o seu sistema de endereçamento de redes, com um estudo e planejamento de utilização de intervalo de endereços IP a serem atribuídos para os dispositivos que estarão conectados nesta rede. Desta forma, a rede interna precisa ser adequadamente configurada com endereços IPs e máscara de sub-rede, para que todo o sistemacomputacional possa ser executado sem ocorrer falhas ou lentidões mediante a possibilidade de configurações de endereços repetidos por usuários do ambiente. Com o objetivo de manter uma configuração profissional dos computadores e dispositivos da rede na empresa, deve ser proposto segmentar a rede em cinco sub-redes (Gerência, Sistemas, Reuniões, Clientes e Visitantes), dentro de uma estrutura de rede em Classe C, com a rede 192.168.10.0 e máscara de rede 255.255.255.0. A topologia da rede é mais uma vez representada na figura a seguir. Seu trabalho consiste em gerar um relatório, chamado de Relatório do projeto de redes: configuração do endereçamento da rede. O endereçamento de rede através da atribuição de números IPs para cada dispositivo é uma tarefa envolvente, que leva o profissional de tecnologia da informação a praticar os conceitos sobre arquitetura de redes de computadores e atribuir endereços lógicos internos para as redes de computadores definidos pelas classes e pelas sub-redes e desenhados através das máscaras de rede. Endereço IP (Internet Protocol) Você já imaginou como toda a internet funciona? Já pensou que cada dispositivo conectado à internet possui um endereço único, dentro do domínio de sua rede, e que ele pode se comunicar com outro dispositivo localizado do outro lado do mundo? Pois bem, este sistema funciona graças ao protocolo IP e aos critérios de endereçamentos público e privado. A seguir, desenvolveremos o conhecimento para que possamos realizar o endereçamento de nossas máquinas e nossas sub-redes. De acordo com Stallings (2016), na maioria dos casos, uma rede local ou uma rede remota não é uma entidade isolada, e necessita de um sistema que possa fazer com que tenha acesso a outras redes. Nesta aula, trabalharemos o conceito e a aplicação do protocolo IPv4 (Internet Protocol version 4) para a configuração de computadores, impressoras e nós de rede com o famoso endereço IP. A versão IPv6 (Internet Protocol version 6) também será abordada, porém na aula 2 desta unidade. Conforme relata Forouzan (2010), o IPv4 é um protocolo de datagramas sem conexão e não confiável, ou seja, um serviço de entregas chamado de best-effort, o que significa que o IPv4 não possui mecanismos de controle de erros ou de fluxo, com exceção da detecção de erros no cabeçalho. Isto nos remete a relembrar que um protocolo adicional de camada de transporte deverá assumir a responsabilidade de realizar a conexão e a entrega confiável dos dados, tarefa realizada pelo protocolo TCP (Transmission Control Protocol). As definições técnicas sobre o protocolo IP estão formalizadas na RFC 791 da IETF. Observação: IETF (Internet Engineering Task Force) e RFC (Request of Comments). A RFC 791 define as especificações e questões técnicas a respeito do protocolo IP. A seguir, é apresentada uma breve descrição dos campos do datagrama IPv4. · Versão: versão do protocolo IP (4 ou 6). · Comprimento do cabeçalho: tamanho do cabeçalho. · Tipo de serviço: prioridade do pacote. · Comprimento do datagrama: tamanho total do pacote (datagrama), com cabeçalho e dados. · Identificador de 16 bits: fragmento do pacote IP original. · Flag: MF, usado para o deslocamento dos datagramas e sua reconstrução; DF, utilização para autorização de fragmentação. · Deslocamento de fragmentação: ordem dos pacotes no processo de remontagem. · Tempo de vida: TLL (Time to Live). Indica o “tempo de vida” que o pacote possui a cada salto pelos nós da rede. · Protocolo da camada superior: repassa os dados para os protocolos das camadas superiores. · Soma de verificação do cabeçalho: informa os erros no cabeçalho. · Endereço IP de origem: endereço do remetente. · Endereço IP de destino: endereço do receptor. · Opções: implementações opcionais. · Dados: dados a serem transmitidos. · Observada a composição do fragmento IP na rede, refletiremos sobre como é feito o endereçamento de cada dispositivo conectado em uma rede de computadores. · Por exemplo, no sistema telefônico, a composição de um número local é estruturada em um conjunto de números, em que parte do número identifica o país, outra parte a região, outra ainda a central telefônica e outra o número do assinante. · Exemplo de número telefônico: 55 19 3555 0001 · 55: identifica um país. · 19: identifica uma região. · 3555: identifica a central telefônica. · 0001: identifica o número do assinante (número hipotético). · A composição do endereço IP também segue esta estrutura, em que parte do número identifica a rede que o dispositivo pertence e parte determina o endereço do próprio dispositivo. · Exemplo de número IPv4: 192.168.5.114 · 192.168.5: identifica a rede ou sub-rede que o dispositivo pertence. · 114: identifica o dispositivo dentro da rede em que ele pertence. Kurose e Ross (2013) definem o IP como um endereço lógico, criado para que um dispositivo em rede possa se comunicar com outro dispositivo em rede. Trata-se de um endereço formado por 32 bits (ou 4 bytes), o que permite que sejam definidos 232 endereços de rede, ou seja, mais de 4 bilhões de endereços, o que pode parecer o suficiente para endereçar todos os dispositivos em rede, mas não é na verdade. 💭Reflita O contexto atual de IoT (Internet of Things), ou Internet das Coisas, faz com que diversos dispositivos possam ser conectados a uma rede de computadores e à internet. Diamandis e Kotler (2018) sustentam que, no ano de 2020, já deve haver mais de 50 bilhões de dispositivos conectados em rede, e que em dez anos, ou seja, no ano de 2030, o número deverá chegar a 10 trilhões. Todos estes dispositivos precisarão de um endereço IP para seu funcionamento. ______ Um endereço IPv4 é um número binário, formado por quatro conjunto de números, chamados de octetos, que normalmente são representados por notação decimal. Um exemplo de endereços IP é: 192.168.0.15; outro exemplo é: 172.16.15.108; e outro ainda é: 200.204.0.10. Perceba que, se o endereço é formado por 4 bytes, cada 1 byte corresponde a 8 bits. Por exemplo, o endereço IP 200.241.120.25 tem o número decimal 200, equivalente aos 8 primeiros bits do endereço; 241 é o decimal do segundo conjunto de 8 bits; 120 é o terceiro; e 25, o quarto. Este número IP é a representação do número binário: 11000001.00100000.11011000.00001001. A figura abaixo apresenta um exemplo de endereço IPv4 dividido em octetos binários com as devidas representações. Um endereço IPv4 é dividido em duas categorias: · Pública, que o identifica como endereço único atribuído e alocado definitivamente e globalmente único para um dispositivo na internet. Para obter um endereço desta categoria, é necessário solicitá-lo a uma instituição de registro de internet. · Privada, na qual um endereço IPv4 deve estar definido dentro de um intervalo de endereços com números limitados a um conjunto de classes e/ou sub-redes que podem ser utilizados livremente em redes privadas, sem acesso direto à internet. ______ ➕Saiba mais Os endereços IP dos hosts de uma rede de computadores podem ser de natureza pública ou privada. Os endereços de natureza pública são atribuídos e controlados pela IANA (Internet Assigned Numbers Authority), organização responsável pela atribuição e pelo controle de endereços IPs no mundo. Já os endereços privados são atribuídos utilizando-se de faixas autorizadas dentro das classes de endereços IPs. Você está convidado a visitar o site da IANA. A entidade brasileira correspondente à IANA é a NIC.BR, que também pode ser visitada na internet. Classes de endereços IPV4 Um endereço IP privado está condicionado a um intervalo definido, que pode ser utilizado para configuração manual ou automática dentro de uma rede privada. Para melhor aproveitamento e gestão de uma rede, os endereços IPs privados estão divididos em cinco classes: A, B, C, D e E. As classes A, B e C são aquelas úteis e configuráveis dentro de uma rede local. · Endereços de classe A estão compreendidos dentro do limite de 1.0.0.0 até 127.255.255.255. · Endereços de classe B, de 128.0.0.0 até 191.255.255.255. · E endereços de classeC, de 192.0.0.0 até 223.255.255.255. O endereço IP de um host pode ser visualizado através do comando ipconfig/all, quando estiver utilizando sistemas operacionais Windows, e ifconfig se estiver com um sistema Linux. A figura abaixo demonstra um exemplo de informação sobre endereço IP apresentado em console via comando ipconfig/all e ifconfig. Além da utilização de endereços dentro de intervalos definidos pelas classes A, B e C em uma rede local privada, há ainda outras regras de endereçamento que necessitam ser observadas. As regras são: 1. Não pode haver duas ou mais estações com o mesmo endereço IP na mesma rede. 2. A mesma sub-rede deve ser definida em um endereço IP para que dois hosts se comuniquem diretamente. 3. Para determinar qual parte da rede IP significa a rede, é usado o artifício de sub-rede, identificado no próprio endereço IP. De forma complementar, o Quadro 2.1 traz algumas regras sobre a composição de um endereço IP que o invalidam quando utilizados para o endereçamento de um host de rede. · Endereço de broadcast: são endereços destinados para comunicação simultânea com todos os hosts da rede. Por exemplo, um servidor de endereços IP, como o DHCP (Dynamic Host Configuration Protocol), o utiliza para que as estações possam receber seus endereços IP quando se conectam à rede. Os endereços de broadcast utilizam o 255 na identificação do host de rede, por exemplo: xxx.255.255.255, xxx.xxx.255.255 ou xxx.xxx.xxx.255. Conforme relata Kurose e Ross (2013), quando um host envia um datagrama com o endereço 255.255.255.255, a mensagem é entregue a todos os outros hosts da mesma sub-rede. · Endereço de loopback: o endereço IPv4 127.0.0.1 é um endereço reservado para realizar testes de comunicação interprocessos da interface da rede pelo próprio dispositivo. Quando uma aplicação usa o endereço de loopback como destino, o software do protocolo TCP/IP devolve os dados sem gerar tráfego na rede. É uma forma simples de fazer com que um cliente local de rede se comunique com o servidor local de forma a testar a própria interface de rede. Este endereço é importante para testar o próprio dispositivo de rede (placa de rede ativa). Você pode testar sua interface digitando ping 127.0.0.1. A figura abaixo apresenta um exemplo de teste de interface com o comando ping. Se você não deseja conectar diretamente seu dispositivo à internet, você pode utilizar qualquer faixa de endereço, conforme apresentado. Para evitar conflitos, se for conectar seu computador à internet, é necessário que se utilize uma das faixas de endereços reservadas, com as classes A, B ou C em sua rede interna. O quadro a seguir apresenta as faixas de endereços reservados mais comuns. 📝 Exemplificando: Para ilustrar a utilização destes endereços, vamos observar alguns exemplos: · O endereço de classe A: endereço 10.0.0.85 informa que 10 é o endereço da rede, e 0.0.85 é o endereço do host. · O endereço de classe B: endereço 172.16.25.85 informa que 172.16 é o endereço da rede, e 25.85 é o endereço do host. · O endereço de classe C: endereço 192.168.0.85 informa que 192.168.0 é o endereço da rede, e 85 é o endereço do host. Em uma rede privada, os endereços devem seguir: · Classe A: 10.0.0.0 a 10.255.255.255. · Classe B: 172.16.0.0 a 172.31.255.255. · Classe C: 192.168.0.0 a 192.168.255.255. Em redes públicas, os endereços IP precisam ser atribuídos pelo órgão regulamentador e serão utilizados por servidores, como o 201.55.233.117, que identifica o servidor do Google. Máscara de sub-rede e divisão de uma rede em sub-redes Uma máscara de rede é uma técnica utilizada para definir a porção do número IP que está designada para identificar a rede e a porção utilizada para identificar o host. A Figura 2.7, apresentada a seguir, demonstra que o endereço IPv4 da rede é 192.168.0.12, e sua máscara da rede é 255.255.255.0, de forma que os três primeiros octetos (255.255.255) representam a rede, e o quarto octeto (0) representa o host. Podemos perceber também que há um endereço que identifica o Gateway Padrão (192.168.0.1), que representa o caminho de saída das mensagens da sub-rede. Este endereço é normalmente identificado do IP de um dispositivo concentrador/controlador de rede, representado por um switch ou roteador. O quadro abaixo busca complementar as informações anteriores com a distribuição dos octetos do endereço IP em conformidade com as classes de rede. Observamos que o endereço IP permite que uma rede seja dividida em redes diferentes. A composição de um endereço IP define, conforme vimos, que um host tem sua identidade única e pertence a uma rede. Considerando que uma rede pode ser segmentada, ou seja, dividida em sub-redes, o endereçamento também precisa ser utilizado para formalizar esta identificação. Imagine que uma empresa precise isolar os departamentos X, Y e Z dentro de uma rede interna. Isso é possível por meio da manipulação da máscara de redes. Conforme apresentam Kurose e Ross (2013), para determinar as sub-redes, cada interface deve ser destacada de seu hospedeiro ou roteador, criando ilhas de redes isoladas com interfaces fechando as terminações das redes isoladas. As sub-redes são o termo técnico destas ilhas isoladas. Além da atribuição de mais endereços dentro das classes A, B e C, que permitem a configuração de sub-redes, outro método também foi criado com o objetivo de melhor aproveitar os endereços IPs dentro das redes, chamado pelos autores de CIDR (Classless Inter-Domain Routing). Esta é uma estratégia de atribuição de endereços conhecida como roteamento interdomínio sem classes, a qual generaliza a noção de endereçamento de sub-rede. Da mesma forma que ocorre com o endereçamento de sub-rede utilizando as classes mencionadas, no CIDR o IP de 32 bits é dividido em duas partes, conservando a notação decimal com quatro grupos de números (octetos) separados por ponto, mas adicionado de um novo número separado pela barra. Como exemplo, um endereço na notação CIDR segue o seguinte formato: x.x.x.x/y, onde o y identifica o número de bits da primeira parte do endereço que identifica a rede. O restante dos bits identificará os hosts. Em uma rede classe C, por exemplo, temos os três primeiros octetos (formados cada um por 8 bits) definindo a rede, o que daria uma máscara em notação CIDR da seguinte forma: 192.168.15.85/24, onde 24 representa a soma dos bits dos três octetos que identificam a rede. Em uma rede classe B, temos os dois primeiros octetos definindo a rede, o que daria uma máscara de notação CIDR: 172.16.189,85/16, onde 16 representa a soma dos bits dos dois octetos que identificam a rede. Estas máscaras fazem com que muitos endereços IP dentro das classes não sejam utilizados, o que representa um desperdício de endereços. O CIDR permite que a notação que define a máscara de rede (/24 ou /16, por exemplo) tenha números diferentes, utilizando um volume maior de bits nos octetos que definem a rede, o que divide o número de hosts para sub-redes e, desta forma, aproveita-se o número de endereços para hosts dentro de uma rede segmentada em sub-redes. Divisão de uma rede em sub-redes Uma rede A, B o C pode ser dividida em sub-redes para que uma rede com um número determinado de dispositivos possa ser configurada de forma otimizada. De acordo com Tanenbaum (2011), a segmentação de uma rede, ou divisão em sub-redes, oferece alguns benefícios, como: 1. Reduzir o tráfego da rede, considerando que os hosts de uma sub-rede fazem domínio de broadcast. 2. Simplificar o gerenciamento da rede com identificação de falhas através do mapeamento de endereços. 3. Controlar os recursos da rede através de sua segmentação. Vamos tomar como exemplo uma rede classe C definida como 192.168.123.x. Conforme exemplo apresentado pela Microsoft (2020), se houver uma rede com 150 hosts em uma única rede, podemos apenas atribuir os endereços dentro do intervalo de rede definição (classe C com intervalo de endereços de 192.168.123.1 até 192.168.123.152). Porém, ser tivermos redes separadas fisicamente, divididas emtrês redes de 50 hosts cada, pode-se utilizar a classe C e um endereço 192.168.123.0, utilizando os endereços úteis de 192.168.123.1 até 192.168.123.254 que comportam os 150 hosts, mas precisaremos dividi-la em sub-redes. Lembre-se das regras de endereçamento que excluem os endereços 192.168.123.0 (primeiro endereço da sub-rede) e 192.168.123.255 (último endereço da sub-rede). Este é o exemplo de endereços que precisam ser desconsiderados para atribuição aos hosts no exemplo da rede 192.168.123.0, pois, como temos três sub-redes, teremos três endereços de rede e três endereços de broadcast. Para dividir uma rede em quatro sub-redes, por exemplo, utiliza-se uma máscara de sub-rede, que torna o endereço de rede maior (utilizando mais bits emprestados dos bits do endereço da rede) e o número de endereços de hosts menor (pois empresta bits do octeto do host), ou seja, utiliza-se de alguns dos bits utilizados para identificar os hosts para identificar parte da rede. Por exemplo, a máscara de sub-rede 255.255.255.192 (11111111.11111111.11111111.11000000 binário) oferece quatro redes de 62 hosts cada. Os dois primeiros bits do último octeto se tornam endereços de rede e possibilitam que se tenha redes adicionais. Usando uma máscara de rede 255.255.255.192, a rede 192.168.123.0 dispõe de quatro redes, sendo a primeira sub-rede 192.168.123.0, a segunda 192.168.123.64, a terceira 192.168.126.128 e a quarta 192.168.123.192, com 62 hosts endereçáveis em cada uma delas. Para calcular as sub-redes através de um exemplo adaptado de Nunes (2017) e poder melhor entender a divisão da rede apresentada anteriormente, seguiremos estes passos: Passo 1: fazer a conversão da máscara de rede de 255.255.255.0 para binário, que resulta em 1111111.11111111.11111111.00000000. ______ 📝 Exemplificando: Na conversão de número binário para decimal, devemos somar os valores numéricos representados pela posição do número binário 1 na posição em seu octeto. Veja a tabela a seguir. Na conversão de números decimais para binário, devemos dividir o número decimal por 2 até que o resultado seja 0 ou 1. O número final e os restos da divisão são posicionados no octeto do byte de forma invertida. Exemplo de conversão do número 73 decimal para binário: O número 73 em decimal = 1001 0010 em binário (o oitavo bit é naturalmente 0). Passo 2: fazer o cálculo da quantidade de hosts para cada uma das sub-redes, considerando o número (n) de bits necessários para: · A rede: 2n = 22 = 4, ou seja, para fazer quatro sub-redes será necessário alocar dois bits da máscara de rede. Note que podemos ter dois ou quatro (ou mais, desde que sejam números pares), assim como precisamos dividir nossa rede em três sub-redes, utilizaremos o cálculo com quatro sub-redes. · Hosts de sub-rede: 2n = 26 = 64, com possibilidade de até 64 hosts em cada sub-rede. Considere que, para converter os octetos, são utilizados: 1, 2, 4, 8, 16, 32, 64 e 128. Como foram utilizados dois bits para a definição das redes, sobraram outros seis bits para os hosts. Passo 3: elaborar a tabela ou o racional com os endereços da sub-rede. Novamente, lembre-se das regras de endereçamento, que excluem todos os endereços de rede e de broadcast, por exemplo, os endereços 192.168.123.0 e 192.168.123.255. · Sub-rede 1: 192.168.123.0: hosts que variam de 192.168.123.1 até 192.168.123.62, e broadcast 192.168.123.63. · Sub-rede 2: 192.168.123.64: hosts que variam de 192.168.123.65 até 192.168.123.126, e broadcast 192.168.123.127. · Sub-rede 3: 192.168.123.128: hosts que variam de 192.168.123.129 até 192.168.123.190, e broadcast 192.168.123.191. · Sub-rede 4: 192.168.123.192: hosts que variam de 192.168.123.193 até 192.168.123.254, e broadcast 192.168.123.255. Passo 4: identificar a máscara da rede. Considere que a máscara de rede 11111111.11111111.11111111.00000000 binário (255.255.255.0 decimal) utilizou dois bits do octeto do host para adicionar nos octetos da rede (sub-rede), O primeiro bit da máscara representa o número decimal 128, e o segundo bit, 64; desta forma, temos 128 + 64 = 192, ficando a máscara da rede como 11111111.11111111.1111111.11000000 binário (255.255.255.192 decimal). Em notação CIDR, temos a máscara binária 11111111.11111111.11111111.11000000 com 26 bits definindo a máscara da rede, o que resulta em uma notação decimal de um endereço IP como 192.168.123.1/26, onde 192.168.123.1 é um dos endereços da rede e /26 identifica a sub-rede, formada pela somatória dos bits que identificam a rede. A notação para a nova máscara de sub-rede é: 255.255.255.192, ou /26. 🔁 Assimile Um número binário pode tomar os valores de 0 e 1, ou seja, dois valores numéricos. Um número binário de dois dígitos pode tomar as posições 00, 01, 10, 11, ou seja, quatro valores numéricos. Esta sequência se dará exponencialmente até 256 valores numéricos em um octeto, ou seja, em um número binário de oito dígitos, como um octeto de um endereço IP. Como pode ser visto na representação a seguir, dois bits do octeto que forma o endereço de host de um endereço de classe C foram adicionados aos outros três bits que identificam a rede para a formatação do número a ser utilizado para representar a sub-rede, no quarto octeto da máscara. Perceba que, quando temos o bit 0, o valor decimal representado no octeto é desconsiderado na soma da máscara da rede; quando temos o bit 1, somamos os valores decimais para a composição da máscara da sub-rede. Os endereços IPs e as máscaras (e sub-rede, se desejado) precisam ser informados em cada host da rede. Segue, na Figura 2.8, um exemplo de configuração de endereço IP e máscara de rede em um sistema Windows. DNS (Domain Name System) O DNS é um protocolo utilizado para um sistema de domínio que faz a interconexão de URL (Uniform Resource Locator), ou seja, nomes de endereços de sites da internet com endereços IP. Este protocolo implementa um serviço importante de resolução de nomes mediante endereços IPs externos, localizados dentro de uma estrutura hierárquica na internet. As empresas também utilizam servidores de DNS para que suas redes locais possam encontrar informações mediante a utilização de nomes, inseridas como URL no lugar de endereços IPs, utilizando-se de um servidor de DNS. De acordo com Kurose e Ross (2013), o DNS costuma ser empregado por outras entidades da camada de aplicação, como o HTTP, SMTP e FTP, para traduzir nomes de hosts fornecidos por usuários para endereço IP. De forma sintética, para que uma URL informada em um navegador possa retornar o conteúdo do site, é necessário que ele busque o seu endereço IP correspondente através de alguns passos: 1. O host do usuário executa o lado cliente da aplicação DNS. 2. O navegador extrai o nome do host do URL e passa o nome para o lado do cliente da aplicação DNS. 3. O cliente DNS envia uma consulta com o nome do host para um servidor DNS. 4. O cliente DNS recebe uma resposta com o endereço IP do nome do host pesquisado. 5. O navegador recebe o endereço do DNS e abre uma conexão TCP com o processo servidor do HTTP via porta 80 naquele endereço IP. O DNS é um protocolo que implementa um serviço de resolução (tradução) de nomes, endereços de páginas definidas por suas URL (Uniform Resource Locator) em endereços IPs dentro de uma estrutura hierárquica de servidores espalhados pelo mundo todo. Na internet, existem servidores DNS raiz que se interligam a servidores de domínio de alto nível, chamados de TLD (Top Level Domain), responsáveis por domínios, como .com, .org, .net, .edu e .gov, e por domínios de alto nível de países, como .uk, .fr., .br. Abaixo destes servidores, estão os servidores DNS autorizativos (de autoridade, ou locais), disponibilizados por organizações que desejam oferecer hosts servidores para acesso público na internet, e finalmente os servidores de nomes locais, que necessariamente não pertencem a uma hierarquia e são chamados de servidores de nomes default. A figura abaixo apresenta os servidores raiz do mundo em 2012. Em sua funcionalidade básica, quando um resolvedor temuma consulta sobre um nome de domínio, ele a envia a um dos servidores de nomes local. Se o domínio que estiver sendo buscado estiver sob a jurisdição do servidor de nomes, serão retornados os registros com as informações de acesso. Caso o domínio for remoto e não houver informações sobre o domínio solicitado no local, o servidor de nomes (DNS) enviará uma mensagem de consulta para o servidor DNS de nível superior, buscando o domínio solicitado. Dois protocolos agem neste processo: o próprio DNS que traduz nomes simbólicos em endereços IP e o LDAP (Ligh-weith Directory Access Protocol), que organiza as informações como uma árvore e permite pesquisas em diferentes componentes e realiza a busca pelas informações solicitadas. A figura a seguir ilustra a relação hierárquica e distribuída entre servidores de controle de DNS espalhados pelo mundo com servidores locais. Conforme exemplificam Kurose e Ross (2013): um hospedeiro cis.poly.edu deseja o endereço IP de gaia.cs.umass.edu. Considere que o servidor DNS local é dns.poly.edu e que um servidor DNS autorizativo para gaia.cs.umass.edu seja denominado dns.umass.edu. Como mostra a próxima figura, o hospedeiro cis.poly.edu primeiro envia uma mensagem de consulta DNS ao seu servidor DNS local dns.poly.edu. A mensagem de consulta contém o nome de hospedeiro a ser traduzido, isto é, gaia.cs.umass.edu. O servidor DNS local transmite uma mensagem de consulta a um servidor DNS raiz, que verifica o sufixo edu e retorna ao servidor DNS local uma lista de endereços IP de servidores TLD responsáveis por edu. O servidor DNS local retransmite a mensagem de consulta a um desses servidores TLD, o qual, por sua vez, percebe o sufixo umass.edu e responde com o endereço IP do servidor DNS autorizado para a instituição com dns.umass.edu. O servidor DNS local reenvia a mensagem de consulta para dns.umass.edu, que responde com o endereço IP de gaia.cs.umass.edu. Para poder obter o mapeamento para um único nome de hospedeiro, foram enviadas oito mensagens DNS: quatro mensagens de consulta e quatro de resposta. Dentro de uma organização, é possível implementar um servidor de DNS para que informações possam ser compartilhadas dentro da estrutura da rede. De acordo com Northrup e Mackin (2009), a implantação de um servidor DNS é um procedimento razoavelmente simples, especialmente em um controlador de domínio. Kurose e Ross (2013) identificam um DNS como um servidor organizado de maneira hierárquica e distribuída. A seguir, temos um exemplo de topologia de rede com um servidor DNS instalado e configurado através da ferramenta Packet Tracer, demonstrada na figura abaixo. Em um sistema Windows Server, a ativação do servidor DNS se dá primeiramente pela criação de uma zona DNS, que é um banco de dados com registros que associam nomes a endereços para uma parte definida de um espaço de nomes DNS. Depois, o servidor DNS precisa ser configurado para registros de DNS e, por último, configurar a replicação e transferência de zona. Já em distribuições Linux, as configurações podem ser feitas em menus do ambiente gráfico ou via configuração textual no arquivo /etc/named.conf. O arquivo localhost define todas as configurações de domínio local para informar o endereço de consulta ao hostname localhost. O banco de dados do domínio é definido pelos arquivos zona e zona reversa. ______ 🔁 assimile: De forma geral, o DNS trata da busca de endereços IPs para que você possa fazer suas buscas e operações via sistemas em rede, dentro da WWW (World Wide Web), por exemplo. Na prática, um conjunto de páginas web em formato HTTP, chamado de site, é acessado através de um endereço URL informado em um browser, que carrega a sua página principal, chamada de home page, dentro de um ambiente WWW. Sites de busca auxiliam na localização de URLs dentro desta estrutura hierárquica, como Google, Yahoo, Bing, Baidu, entre outros. O Google representa, conforme Laudon e Laudon (2014), mais de 83% das buscas realizadas na internet. ______ Junto à configuração do endereço IP do host e às informações de máscara de rede, deve também ser informado o endereço de DNS na rede. Segue, na figura abaixo, um exemplo de configuração de endereço de DNS em um sistema Windows. DHCP (Dynamic Host Configuration Protocol) O DHCP permite atribuir endereços IP, máscaras de sub-rede e outras informações de configuração a computadores clientes em uma rede local. Uma rede que possui um servidor DHCP disponível permite aos seus computadores obterem um endereço IP através de solicitação e atribuição automática pelo servidor, conforme defendem Northrup e Mackin (2009). Um administrador de rede pode configurar um serviço de DHCP para que determinado host receba o mesmo endereço IP toda vez que se conectar, ou um endereço IP temporário, diferente a cada conexão. Kurose e Ross (2013) classificam o DHCP como um protocolo plug and play, considerando sua capacidade de automatizar os aspectos relativos à rede da conexão de um host. Ademais, o DHCP é um protocolo cliente-servidor, no qual, em geral, um host representa o cliente. A figura abaixo ilustra um servidor DHCP conectado à rede 223.1.2.0/24, servindo o roteador de agente de repasse para clientes conectados às sub-redes 223.1.1.0/24 e 223.1.3.0/24. Para um hospedeiro recém-chegado, o protocolo DHCP e um processo de quatro etapas: 1. Descoberta do servidor DCHP. 2. Oferta dos servidores DHCP. 3. Solicitação DHCP. 4. Configuração de requisição DHCP. A seguir, temos um exemplo de topologia de rede com um servidor DHCP instalado e configurado através da ferramenta Packet Tracer, demonstrada na figura a seguir. A imagem refere-se ao departamento Servidor, no qual existe um servidor de rede que suporta serviços de DNS, DHCP, HTTP, FTP, entre outros, ligados a um Switch que interliga e serve toda uma rede de um departamento. A parte inferior da figura a seguir mostra a configuração do serviço de DHCP no Packet Tracer. Em distribuições Linux, as configurações podem ser feitas em menus do ambiente gráfico ou via configuração textual no arquivo /etc/dhcpd.conf. A sua ativação se dá pela execução do programa ntsysv com a seleção da opção dhcpd. Ainda em Linux, o servidor DHCP pode ser executado através do comando # service dhcpd start. Em um ambiente Windows Server, a configuração do intervalo de endereços a serem automaticamente atribuídos aos hosts se dá por meio do menu Iniciar > Programas > Ferramentas Administrativas > DHCP. A figura a seguir apresenta as telas de configuração de um servidor DHCP em plataforma Windows Server e cliente em plataforma Windows. 💭 Reflita A configuração manual de endereços IP em redes de computadores locais pode ser uma estratégia mais assertiva quando se pensa em maior segurança, porém adequa-se a ambientes com poucos dispositivos na rede, devido à dificuldade de configuração individual e manual de cada dispositivo. Em redes maiores, a utilização de um servidor DHCP traz maior comodidade à gestão da rede, no entanto pode oferecer maiores riscos à segurança da rede. Assim, um servidor DHCP mantém um banco de dados dos endereços que o servidor pode atribuir a hosts da rede. Quando um servidor DHCP atribui um endereço a um computador na rede, este se torna um host ativo com o endereço atribuído por seis ou oito dias por padrão. ______ ➕ Pesquise mais O site de suporte da Microsoft traz uma seção interessante, chamada Noções básicas sobre endereçamento TCP/IP e sub-rede, que explica o endereçamento IP de uma rede. Configurar uma rede com o IPv4 e sub-redes leva à utilização dos endereços IPs em redes de classes A, B ou C, alocados em sub-redes. Esta configuração deve seguir uma política de atribuição de endereços, utilizando-se de máscaras de rede para a realização da divisão das redes. O padrão CIDR (Classless Inter-Domain Routing) também é utilizado para configuração de sub-redes. Adicionalmente, existe o VLSM (Variable Length Subnet Masking), também utilizado para planejamento e configuração de endereços IPs e máscaras em sub-redes. O site Hardwarepode ser visitado para um estudo complementar sobre este assunto junto ao conteúdo: Faixas de endereços IP CIDR e máscaras de tamanho variável (MONQUEIRO, 2007). Conclusão Esta aula trouxe para você informações importantes para a configuração de endereços IPv4 em hosts em uma rede. Os endereços podem ser atribuídos de forma manual ou de forma automática por um servidor DHCP. Também houve o aprendizado sobre máscaras de rede e a configuração de uma sub-rede através de seus endereços e máscaras. Estas informações são fundamentais para que você possa configurar dispositivos adequadamente, em conformidade com regras e técnicas de endereçamento IP, de forma a deixar sua rede com performance superior a uma rede sem planejamento de endereçamento IP. Na sequência, acompanhe o relatório de projeto apresentado como proposta no início desta aula. Relatório do projeto de redes: configuração do endereçamento da rede A rede interna da empresa de coworking deve ser segmentada em cinco sub-redes, utilizando-se a classe C de endereçamento IP, de forma que a rede será 192.168.10.0, e a máscara de rede será 255.255.255.0, considerando o volume de equipamentos que precisam se conectar à rede. A máscara da sub-rede 255.255.255.0 (em notação decimal) representa 11111111.11111111.11111111.00000000. · A rede: 2n = 23 = 8, ou seja, para fazer cinco sub-redes será necessário alocar três bits da máscara de rede. Note que podemos ter dois ou quatro (ou mais, desde que sejam números pares), assim, como precisamos dividir nossa rede em cinco sub-redes, utilizaremos o cálculo com oito sub-redes. · Hosts de sub-rede: 2n = 25 = 32, com possibilidade de até 32 hosts em cada sub-rede. Considere que, para converter os octetos, são utilizados: 1, 2, 4, 8, 16, 32, 64 e 128. Como foram utilizados três bits para a definição das redes, sobraram outros cinco bits para os hosts. Temos, assim, as seguintes sub-redes: · Sistemas: 192.168.10.0: hosts 192.168.10.1 a 192.168.10.30 e broadcast 192.168.10.31. · Gerência: 192.168.10.32: hosts 192.168.10.33 a 192.168.10.62 e broadcast 192.168.10.63. · Clientes: 192.168.10.64: hosts 192.168.10.65 a 192.168.10.94 e broadcast 192.168.10.95. · Reuniões: 192.168.10.96: hosts 192.168.10.97 a 192.168.10.126 e broadcast 192.168.10.127. · Visitantes: 192.168.10.128: hosts 192.168.10.129 a 192.168.10.158 e broadcast 192.168.10.159. A máscara de rede calculada ficou como: 11111111.11111111.1111111.11100000. Veja que utilizamos três bits (emprestado o octeto, que define o endereço do host para que um endereço de sub-rede possa ser gerado e segmentar a rede). Considerando a tabela de bits do octeto, temos: Isso remete a 128 + 64 + 32 (bits que representarão a sub-rede) = 224. Na notação CIDR, ou em barra (/), considerando a somatória de todos os bits de rede (oito do primeiro octeto, oito do segundo octeto, oito do terceiro octeto e três do quarto octeto), temos 8+8+8+3= 27. Assim, a nova máscara de sub-rede se torna 255.255.255.224, ou /27. Ethernet e IPV6 Nesta aula, serão tratadas informações a respeito do padrão Ethernet, utilizado nas redes locais com grande intensidade, e sobre o protocolo IPv6, o qual, em conjunto com o IPv4, suportam o endereçamento e o roteamento das redes atuais. Considerando o padrão Ethernet, abordaremos também questões de cabeamento de redes. As tecnologias de comunicação da camada de host de rede do conjunto de protocolos TCP/IP (Transmission Control Protocol/Internet Protocol) utilizam o padrão Ethernet para redes cabeadas na maioria dos sistemas de redes locais. Este padrão acompanha o cenário das redes locais desde a década de 1970 e vem sendo modificado, considerando novas tecnologias de materiais para cabeamento, porém ainda mantém a sua essência para transmissão e controle da onda portadora no canal de comunicação. Já o protocolo IPv6 deverá se tornar o padrão de endereçamento para redes na internet, considerando que o IPv4 possui limitações de volume de endereços disponíveis, mesmo considerando as técnicas de NAT (Network Address Translator) e o CDIR (Classless Inter-Domain Routing), que levam ao endereçamento alternativo e suportam a imensidão de dispositivos parametrizados dentro de redes locais de computadores. Após finalizarmos os estudos do projeto de topologia, protocolos de rede, segmentação para a divisão da rede em sub-redes e definição de endereçamento IP mediante uma política estabelecida com endereços e máscaras de sub-rede no projeto de redes para o espaço de coworking, daremos sequência ao estudo de redes. Convidamos você a estudar estes dois conceitos e dar seguimento ao projeto de redes na empresa de coworking através de uma nova etapa do projeto para implantação de estrutura de cabeamento e dispositivos na rede local com a utilização do protocolo IEEE 802, ou seja, o padrão Ethernet, o que reflete a instalação física de dispositivos e a definição de domínios de colisão e broadcast. Para que a empresa de coworking, para a qual sua consultoria de rede está desempenhando uma consultoria de projeto de redes, tenha documentado toda a estrutura física implantada, é necessário um relatório apresentando os equipamentos, cabos e domínios de colisão e broadcast que serão utilizados para operacionalizar a rede implantada. A compreensão sobre domínios de colisão e broadcast em uma rede Ethernet, a definição de equipamentos físicos e a definição de um novo padrão de endereçamento IPv6 devem melhorar ainda mais o projeto de rede que está em planejamento e seu desempenho. Em uma nova fase da consultoria para implantação de um sistema de redes de computadores em uma empresa de espaços compartilhados para trabalho (coworking), houve uma nova solicitação para que a equipe de desenvolvimento do projeto pudesse apresentar informações mais detalhadas sobre os dispositivos que fazem parte da rede, a fim de identificar os equipamentos disponíveis em cada um dos setores do ambiente (Sistemas, Gerência, Clientes1, Reuniões, Clientes2, Visitantes), conforme relatado na figura abaixo, e também possam ser descritos os domínios de colisão e de broadcast da rede. Esta análise fará com que a rede tenha uma documentação mais completa e deverá definir os domínios da topologia implementada via padrão Ethernet, ou seja, para a parte da rede cabeada. A análise a ser realizada deverá levar em consideração a segmentação da rede com os dispositivos comutadores, que tem a capacidade de definir domínios de colisão e broadcast. O relatório deve apresentar os equipamentos da rede, o número de domínios de colisão e o número de domínios de broadcast, de acordo com a topologia proposta a seguir: Deverá ser gerado o Relatório do projeto de redes: equipamentos de rede e análise de domínios de colisão e broadcast. Reconhecer como são realizadas as operações de acesso ao meio (cabos) e dispositivos de rede no padrão Ethernet é importante para que se possa desenvolver uma rede de computadores com os dispositivos de repetição e gerenciamento de rede dentro de domínios de colisão e broadcast adequados. O endereçamento dentro do padrão IPv6 também contribui para o adequado controle de endereçamento e performance da rede. As redes locais formam as estruturas chamadas de Local Area Network (LAN), que configuram os ambientes operacionais onde se localizam a maioria dos dispositivos conectados indiretamente à internet. Em sua essência, a internet é descrita por Kurose e Ross (2013) como uma infraestrutura de redes que fornece serviços para aplicações distribuídas, interconectando centenas de milhões de dispositivos de computação ao redor do mundo. Estas aplicações distribuídas são operacionalizadas dentro de dispositivos dentro de redes local. A seguir, conheceremos o padrão Ethernet como tecnologia utilizada na interconexão de redes locais, relacionada aos padrões e protocolos definidos na camada de host de rede da arquitetura TCP/IP. Se olharmos para o modelo OSI, estes protocolos atuam na camada de enlace de dados, que define e controla os dados transmitidos via dispositivos da camada física da rede.Conceitos de Ethernet, Domínios de Broadcast e de Colisão Muitos padrões de rede foram desenvolvidos nestes últimos anos, dentre eles, projetos para redes pessoais, redes locais e redes metropolitanas, padronizados como IEEE 802 (Institute of Electrical and Electronic Engineers, e 802 define um padrão de redes). Segundo Forouzan (2010), o IEEE subdividiu a camada de enlace do modelo OSI em duas subcamadas: LLC (Logical Link Control) e MAC (Media Access Control) e criou vários padrões de camada física para diversos protocolos LAN. As normas definidas pelo IEEE 802 trazem diversas tecnologias para implementação de redes locais, algumas com ampla utilização na atualidade, outras ainda em desuso. O quadro abaixo apresentado a seguir mostra os subgrupos que perfazem as normas IEEE 802. Conforme relata Comer (2016), a Ethernet é uma tecnologia LAN desenvolvida pela Xerox PARC e padronizada pela Digital Equipment Corporation, pela Intel e pela Xerox. O responsável pela tecnologia foi Robert Metcalfe, que trabalhava na Xerox na década de 1970 e que mais tarde fundou a 3Com. A tecnologia Ethernet foi padronizada pelo IEEE em 1985 e vem sendo utilizada por 35 anos como a principal tecnologia de rede local. Embora os dispositivos de hardware, cabeamento e meios usados com ela tenham mudado, o seu funcionamento continua praticamente o mesmo. ______ 🔁 Assimile Os padrões de rede que se mantiveram ativos e são atualmente utilizados nas redes locais e pessoais são o IEEE 802.3, padrão para redes locais cabeadas, definido como Ethernet; o IEEE 802.11, mais recente e padrão para redes locais sem fio (wireless), conhecido como Wi-Fi; e o IEEE 802.15, usado em redes pessoais sem fio e conhecido como bluetooth. ______ A seguir, faremos um estudo mais aprofundado sobre o padrão IEEE 802.3. O conceito de Ethernet é considerado por Tanenbaum (2011) como o padrão de redes locais mais utilizado no mundo. Este tipo de rede é classificado pelo autor como Ethernet clássica, que resolve problemas de acesso múltiplo ao meio compartilhado, e a Ethernet comutada, utilizada em dispositivos, como switches, para conectar os dispositivos da rede. A Ethernet comutada oferece velocidades e tecnologias físicas de conexão diferentes, mas utiliza o mesmo padrão de controle de colisões de onda portadora ao utilizar um meio compartilhado, ou seja, o cabo de rede. A figura a seguir apresenta um estudo original de uma rede Ethernet, em que um mesmo meio de comunicação é compartilhado por diversos dispositivos conectados na rede. Em uma rede com padrão Ethernet, há dois assuntos importantes. O primeiro diz respeito ao meio de conexão, ou seja, ao cabo de rede. A segunda se refere à operação na utilização de um mesmo canal de comunicação e controle da transmissão. Cabeamento Os cabos e os conectores utilizados nesta tecnologia compõem o meio físico da comunicação. No passado, foram utilizados cabos coaxiais; depois, cabos metálicos de par trançado, úteis nos dias atuais junto aos cabos de fibra óptica. Veja a seguir uma linha do tempo da evolução do padrão Ethernet. ETHERNET - Ano: 1990. Nome técnico: 10Base-T. Padrão: IEEE 802.3. Velocidade: 10 Mbps. Cabo: metálico de par trançado Cat 5. FAST ETHERNET - Ano: 1995. Nome técnico: 100Base-TX. Padrão: IEEE 802.3u. Velocidade: 100 Mbps. Cabo: metálico de par trançado Cat 5e. GIGABIT ETHERNET - Ano: 1999. Nome técnico: 1000Base-T. Padrão: IEEE 802.3ab. Velocidade: 1000 Mbps ou 1 Gbps. Cabo: metálico de par trançado Cat 6. 10 GIGABIT ETHERNET - Ano: 2006. Nome técnico: 10BBase-T. Padrão: IEEE 802.3an. Velocidade: 10 Gbps. Cabo: metálico de par trançado Cat 6a. Comer (2016) resume que, da mesma forma que as versões anteriores das redes Ethernet, a primeira tecnologia de par trançado operava a 10 Mbit/s, denominada 10BaseT. Uma versão nomeada formalmente de 100BaseT que opera a 100 Mbit/s é conhecida comercialmente como Fast Ethernet. Uma terceira versão, chamada Gigabit Ethernet, ou Gig-E, opera a 1.000 Mbit/s, o que equivale a 1 Gbit/s. O hardware para as redes Ethernet de maior velocidade detecta automaticamente quando um dispositivo de baixa velocidade está conectado e reduz sua velocidade de acordo com ele para que a operação seja adequada ao dispositivo e à tecnologia conectada. O quadro abaixo mostra alguns padrões Ethernet. 🔁Assimile As versões mais conhecidas do padrão IEEE 802.3 são: · IEEE 802.3u: define os padrões da Fast Ethernet com velocidade de transmissão de 100 Mbps, representada pelos padrões 100BaseTX, 100BaseT e 100BaseFX. · IEEE 802.3z: define os padrões da Gigabit Ethernet com utilização de cabo de fibra óptica e velocidade de 1000 Mbps, representada pelos padrões 1000BaseLX, 1000BaseSX e 1000BaseCX. · IEEE 802.3ab: define os padrões da Gigabit Ethernet com utilização de cabo metálico e par trançado e velocidade de 1000 Mbps e padrão 1000Base-T. · IEEE 802.3ae: define o padrão da 10 Gigabit Ethernet com velocidade de 10 Gbps com utilização de cabo de fibra óptica e utilizada para backbones e representada pelos padrões 10GBaseZR, 10GBaseSR, 10GBaseLRM e 10GBaseCX4. · IEEE 802.3an: define o padrão da 10 Gigabit Ethernet com velocidade de 10 Gbps com utilização de cabo metálico de par trançado. Mais recentemente, em 2012, houve a publicação do padrão IEEE 802.3-1012 com definições de eficiência energética, redes veiculares, data center e distribuição de conteúdo com velocidades de 40 a 100 Gbps. ______ O cabeamento metálico para redes Ethernet exige que se utilizem um padrão de pinagem, para que os pares de fios que compõem um cabo de par trançado realizem a transmissão de forma adequada. O Quadro 2.6 traz a sequência de pinagem (sequência de fios na ligação com o conector RJ 45) padronizada como TIA/EIA T568A. No quadro, o TX representa transmissão; RX, recepção; BI, comunicação bidirecional; D1-4, o caminho em que o fio está posicionado. Padrão de operação de um cabo de par trançado. Fonte: adaptado de Comer (2016, p. 227). De forma ilustrativa, a próxima figura apresenta os padrões TIA/EIA T568A e T568B, que podem ser utilizados na montagem de um cabo de rede de par trançado junto ao seu conector RJ45. Padrões de conexão de cabos Ethernet TIA/EIA T568A (esquerda) e T568B (direita). Fonte: Wikimedia Commons. ______ 📝 Exemplificando As redes Ethernet utilizam, aa maioria dos projetos, dois tipos de cabos para conexão física dos dispositivos de rede. Um deles é o cabo metálico de par trançado, e o outro é o cabo de fibra óptica. Ambos os tipos de cabos possuem especificações para cada categoria de rede Ethernet. Uma rede local normalmente utiliza um cabo de par trançado Cat6 que opera em velocidade de 1 Gbps, mas permite velocidades até 10 Gbps com comprimentos de enlace até 100 metros. Cabos Cat7 e Cat8 também são padrões utilizados em redes locais e oferecem velocidades maiores, porém com menores comprimentos de enlace. Os cabos de fibra óptica são utilizados normalmente para backbones (linhas principais de interligação de redes), que interligam switches e canais de comunicação com operadoras, mas também são utilizados para conexão local de dispositivos. ______ O cabeamento óptico nas redes Ethernet utiliza fibras ópticas em formato de cabos sempre em pares, sendo um fio utilizado para a transmissão de dados e outro para recepção. Os cabos ópticos são classificados em cabos monomodo e multimodo. Os cabos monomodo, chamados de Single Mode Fiber (SMF), têm um maior desempenho e possuem espessura em torno de 10 mícron. Já os cabos multimodo, chamados de Multiple Mode Fiber (MMF), são mais grossos, com espessura de 50 a 62,5 mícron. Conforme apresenta Tanenbaum (2011), enquanto um cabo multimodo varia de 300 metros até 2.000 metros de comprimento, cabos monomodo podem chegar a 40.000 metros (ou 80.000, segundo alguns fabricantes) sem a utilização de repetidores. As redes locais utilizam as fibras multimodo em sua implementação. Importante salientar que estes padrões e tecnologias estão em constante evolução. A figura abaixo apresenta o comportamento do sinalluminoso dentro da fibra óptica em suas janelas de operação em fibras monomodo e multimodo. Operação, velocidades e comutação Conhecemos a tecnologia Ethernet e um pouco mais sobre o cabeamento metálico de par trançado. Agora, verificaremos sobre os meios de transmissão dentro desta tecnologia. O protocolo Ethernet é um padrão de comunicação que compartilha um mesmo meio de comunicação (cabo) com todos os dispositivos de rede (hosts). Para transmissão, um dispositivo verifica a disponibilidade do canal e transmite. Caso haja outro dispositivo também transmitindo, ocorrerá uma colisão, a transmissão é interrompida e refeita em um tempo aleatório controlada pelo algoritmo do protocolo de acesso múltiplo ao meio compartilhado. Este protocolo é o CSMA (Carrier Sense Multiple Access), o qual, conforme Forouzan (2010), faz a transmissão em um meio compartilhado via três algoritmos: 1. CSMA não persistente: se o meio de transmissão estiver ocupado, o dispositivo aguarda um tempo para retransmitir. 2. CSMA 1 persistente: o dispositivo verifica a rede até que o meio fique livre para transmissão. 3. CSMA p-persistente: o algoritmo calcula a probabilidade de colisão e, quando livre e com baixa possibilidade de colisão, realiza a transmissão. O CSMA/CD (Carrier Sense Multiple Access with Collision Detection) utilizado no padrão Ethernet tem um mecanismo de detecção de colisão, no qual os dispositivos da rede verificam colisões e controlam a retransmissão dos dados no canal compartilhado. De acordo com Filippetti (2008), o padrão Ethernet com o CSMA/CD utiliza uma topologia em estrela e define uma rede comutada por um elemento central chamado de switch (antes eram utilizados apenas hubs) ou roteadores. A apresentação de uma topologia de rede comutada no padrão Ethernet é apresentada na figura a seguir. Rede em topologia estrela com um comutador (switch). Fonte: elaborada pelo autor. Em uma rede Ethernet, podem ocorrer colisões de duas formas, sendo uma pelo domínio de colisão e outra pelo domínio de broadcast. No domínio de colisão, os pacotes da rede têm a possibilidade de efetuar colisão uns com os outros, o que leva à degradação da performance da rede, pois faz com que muitas retransmissões sejam necessárias. Esta situação se agrava ainda mais quando há equipamentos de comutação (hubs) em formato de cascata, ou seja, interligados, formando uma topologia híbrida de estrela e árvore para expansão do número de dispositivos na rede. Já no domínio de broadcast é possível determinar o limite que o pacote pode chegar utilizando-se um dispositivo comutador de rede local que operacionalize a comunicação com outro dispositivo sem que seja utilizado um roteador. Os dispositivos comutadores possuem, desta forma, um importante papel para a performance de uma rede de computadores em domínios de colisão e broadcast. Estes dispositivos podem ser: · Hub: são dispositivos concentradores que fazem comutação em uma rede com a repetição das mensagens para todas as suas portas de conexão, formando um único domínio de colisão e broadcast. Estes dispositivos foram muito importantes no cenário das redes, mas encontram-se praticamente em desuso na implantação de novas redes pois, conforme Stallings (2016), estes equipamentos foram substituídos pelos switches de camada 2 e têm seu nome também atribuído de switching hub ou ponte de rede multiporta. · Switch: dispositivo capaz de formar um domínio de colisão em cada porta de comunicação e formar um único domínio de broadcast. Dispositivo fundamental na operação das redes de computadores na atualidade, os switches estão divididos em switches de camada 2 e switches de camada 3. Como sustenta Stallings (2016), um switch de camada 2 tem maior desempenho e pode incorporar as funções de uma ponte, assim novas instalações tipicamente incluem switches de camada 2 com funcionalidades de ponte em vez de pontes. Estes switches de camada 2 são boas opções para utilização em redes, nas quais usuários utilizam 80% do tempo se comunicando com dispositivos no segmento local. Os switches de camada 3 são definidos por Stallings (2016) como um roteador baseado em hardware. Eles têm a função de gerenciar melhor as redes, identificando os fluxos dos pacotes IP com a mesma origem e destino, segmentando em sub-redes e quebrando os domínios de broadcast. Importante salientar que apenas switches de camada 3 podem desempenhar a função de gerenciamento. · Router: ou roteador, é um dispositivo que opera na camada 3 (inter-rede) do conjunto de protocolos TCP/IP e quebram o domínio de broadcast, pois operacionalizam roteamento na rede. São dispositivos utilizados nas redes de computadores da atualidade. · Bridge: ou ponte, são dispositivos que podem separar domínios de colisão, porém não separam os domínios de broadcast. Estes dispositivos podem ainda ser sua implementação realizada por switches. A próxima figura traz um exemplo de uma rede um pouco mais complexa, na qual os dispositivos de rede são utilizados para implementar o modelo Ethernet para uma rede local com domínio de colisão. Verifique que o roteador separa os domínios de broadcast em três domínios. No domínio de colisão à direita do roteador, a topologia é conectada por hubs, formando um único domínio de colisão e broadcast. À esquerda do roteador, há dois domínios de colisão, formados pelos switches, e abaixo do roteador há um domínio de colisão formado por um único switch. Assim finalizamos nosso estudo sobre operação de uma rede Ethernet, observando que esta tecnologia utiliza o método CSMA/CD para compartilhamento de um único canal de comunicação e dispositivos de rede, como hubs, switches, roteadores e pontes para definição de domínios de colisão e broadcast. Este planejamento faz com que uma rede tenha a performance adequada dentro das possibilidades de utilização de equipamentos de comutação. ______ ➕Saiba mais O cabeamento utilizado dentro do padrão IEEE 802.3, ou seja, o padrão Ethernet, teve importantes evoluções tecnológicas nos últimos 50 anos. Comer (2016) relata que desde a versão original, na década de 1970, a Ethernet passou por várias alterações, sendo que a mais significativa foi no cabeamento. O cabo de rede utilizado no primeiro padrão Ethernet era chamado de Thicknet, ou cabo Ethernet grosso, passando pelos cabos Thinnet, chamados de cabo Ethernet, ou coaxial fino, pelos cabos de par trançado e hubs, utilizou diferentes tipos de conectores e chegou a padrões de cabos metálicos de par trançado mais atuais, que suportam redes Gigabit Ethernet. A leitura da Seção 15.7, Evolução da Ethernet e cabos Thicknet, do Capítulo 15, Tecnologias de LAN com fio (Ethernet e 802.3), do livro Redes de Computadores e internet, de Comer (2016), é prazerosa e traz informações sobre a evolução histórica e aplicada na prática de cabos de rede no padrão Ethernet. IPV6 (Internet Protocol Version 6) Conforme sustentam Kurose e Ross (2013), o projeto de endereçamento IPv6 teve início na década de 1990, mediante um aumento expressivo do número de computadores e dispositivos que se interconectavam às redes de computadores. Atualmente, o conceito de IoT (Internet of Things) corrobora com um aumento exponencial no número de sensores e dispositivos que estão sendo conectados à internet. Importante observar que o esgotamento do IPv4 ocorreu em 2014. O projeto do IPv6 foi liderado pela IETF (Internet Engineering Task Force) e contou com a participação da LACNIC (Latin American and Caribbean Internet Addresses Registry), com um estudo e monitoramento a respeito do esgotamento de endereços IPv4 disponíveis no mundo. Com a intenção de desenvolver um novo protocolo de endereçamento e roteamento de rede, o IPv6 veio para suprir algumas necessidades além das possibilidades do protocolo IPv4: 1. Resolver a escassez de endereços IPs na internet. 2. Simplificar o cabeçalho do endereço IP. 3. Deixar como opcional alguns campos de cabeçalho IP, para facilitar o roteamento de pacotes na rede. 4. Melhorar a segurança das transmissões, adicionando o IPSec (Internet ProtocolSecure). A figura abaixo apresenta o formato de um datagrama IPv6. É importante salientar que o datagrama IPv6 também pode ser composto por 64 bits, conforme sustenta IPv6.BR (2020). A seguir, é apresentada uma breve descrição dos campos do datagrama IPv6. · Versão: (4 bits) versão do protocolo IP (4 ou 6). · Classe de tráfego: (8 bits) campo para prioridade. · Rótulo de fluxo: (20 bits) identifica o fluxo de datagramas. · Comprimento da carga útil: (16 bits) tamanho total do pacote (datagrama). · Próximo cabeçalho: (8 bits) identifica o protocolo ao qual o conteúdo será entregue (TCP ou UDP). · Limite de saltos: (8 bits) limite de saltos em roteadores. · Endereço IP de origem: (128 bits) endereço do remetente. · Endereço IP de destino: (128 bits) endereço do receptor · Dados: dados a serem transmitidos. Comer (2015) sustenta que, da mesma forma que o IPv4, o IPv6 atribui um endereço exclusivo para cada conexão entre um computador e uma rede física. Um endereço IPv6 possui 128 bits, o que permite um total de 340 undecilhões de endereços (2128), em um formato de oito grupos de quatro dígitos hexadecimais. Conforme apresenta Stallings (2016), a combinação de endereços longos e diversos por interface permite melhor eficiência de roteamento pelo IPv4. Ainda de acordo o mesmo autor, a notação para um endereço IPv6 usa oito números hexadecimais para representar os oito blocos de 16 bits no endereço de 128 bits, com os números separados por dois pontos (:). Exemplo: 835C:5B9D:BC27:0000:0000:0000:C4B8:1FBB. Este número realmente é muito grande e suficiente para que possamos endereçar os dispositivos das redes pessoais, locais, metropolitanas, globais e os dispositivos de IoT na internet. A figura abaixo apresenta a composição de um endereço IP de 128 bits. Formato do endereço IPv6. Fonte: elaborada pelo autor. Um endereço IPv6 tem sua composição diferenciada de um endereço IPv4, apesar de ter uma mesma abordagem na atribuição aos hosts. Como nos endereços em notação CDIR (Classless Inter-domain Routing), a divisão entre parte da rede (prefixo) e parte do host (sulfixo) no endereço ocorre em limites flexíveis na utilização de seus bits. O endereço IPv6 possui três níveis de hierarquia, conforme sustenta Comer (2015). Um prefixo inicial é um valor único e global usado para roteamento na internet, atribuído a uma organização. A segunda parte do endereço identifica a sub-rede (ou seja, a própria rede) da organização. A terceira parte especifica o host de rede. Um endereço IPv4 tem tamanho variável e definido por um ISP (Internet Service Provider), ou servidor de serviços de internet, em conformidade com a necessidade de volume de hosts de uma empresa cliente. A terceira parte do endereço tem tamanho fixo de 64 bits, formando um prefixo global de /64. A figura abaixo apresenta a estrutura de um endereço IPv Formato do endereço IPv6. Fonte: Comer (2015, p. 316). Segundo Stallings (2016), o protocolo IPv6 permite a definição de três tipos de endereços: unicast, anycast e multicast. · Unicast: possui um identificador para uma única interface de rede, ou seja, para um único host, sendo que um pacote enviado para um endereço unicast é entregue para a interface identificada pelo endereço. · Anycast: possui um identificador para um conjunto de interfaces (em diferentes nós de rede), sendo que um pacote enviado para um endereço anycast é entregue para uma das interfaces identificadas por esse endereço (o mais próximo na distância de roteamento). · Multicast: possui um identificador para um conjunto de interfaces (em diferentes nós de rede), sendo que um pacote enviado para um endereço multicast é entregue para todas as interfaces identificadas pelo endereço. ______ 🔁 Assimile Os blocos de um endereço IPv4 são chamados de octetos, pois possuem oito símbolos binários (bits), que variam de 00000000 a 11111111. Os blocos de um endereço IPv6 são chamados de decahexateto ou duocteto, pois possuem quatro símbolos hexadecimais, os quais variam de 0000 até FFFF. Veja a composição do endereço IPv6 exemplificado no texto: 835C:5B9D:BC27:0000:0000:0000:C4B8:1FBB. ______ Com o objetivo de manter os dois protocolos coexistentes e interoperáveis, ou seja, que possam ser utilizados e se prover de endereçamento e roteamento nas redes de computadores que podem ser configuradas apenas com endereços IPv4, apenas com endereços IPv6 ou com os dois protocolos, o que se chamou de Pilha Dupla (Dual Stack). Dispositivos de rede que suportam o conceito de Pilha Dupla defendido por Kurose e Ross (2013) os hosts configurados com IPv6 também devem possuir uma implementação IPv4 completa, o que os determinará como IPv6/IPv4. Na operação de um dispositivo configurado como Pilha Dupla, as mensagens oriundas da camada de Aplicação serão encapsuladas na Pilha Dupla, para que a mensagem enviada à camada de enlace e física (host de rede no TCP/IP) seja enviada ao meio disponível, onde podem ocorrer duas situações: 1. Mensagem com formato IPv4 é encapsulada com Ipv6; 2. Mensagem com formato IPv6 é encapsulada com IPv4. ______ 📝 Exemplificando Dispositivos de rede, ou seja, hosts que estiverem configurados com o protocolo IPv6, deverão também ter uma implementação IPv4. Ao interagir um host IPv4, um host IPv6/IPv4 poderá usar datagramas IPv4; ao interagir com um host IPv6, poderá utilizar o IPv6. Hosts IPv6/IPv4 possuem endereços IPv6 e IPv4. Dispositivos de rede, como computadores, câmeras IP, impressoras, smartphones e dispositivos de IoT, devem estar configurados com a opção de Pilha Dupla. ______ Os endereços IPv6s e as máscaras (e sub-rede, se desejado) precisam ser informados em cada host da rede. Segue, na figura a seguir, um exemplo de configuração de endereço IPV6 e máscara de rede (e/ou sub-rede) em um sistema Windows. Os servidores DHCP também podem ser configurados para configuração automática de endereços em hosts em uma rede. Tradução de endereços e coexistência e as diferenças entre IPV4 e IPV6 A comunicação entre hosts que operam em um ambiente onde as duas versões do protocolo IP são utilizadas também pode contar com um protocolo de tradução de endereços, como o Network Address Translation (NAT). Este protocolo implementa um mecanismo de tradução de endereços IPv4 em endereços IPv6 com equivalência de valor. Como exemplo de tradução de endereço IP, tomaremos o número IPv4 192.168.0.1. Para fazer a conversão do endereço, faça as seguintes etapas: · Converta o endereço IPv4 para notação binária: 192.168.0.1 = 11000000.10101000.00000000.00000001 · Separe os números binários em grupos de quatro dígitos: 1100 0000 . 1010 1000 . 0000 0000 . 0000 0001 · Utilize as bases 8, 4, 2 e 1 para converter os grupos dos números binários: 1100 = 12 e 0000 = 0 1010 = 10 e 1000 = 8 0000 = 0 e 0000 = 0 0000 = 0 e 0001 = 1 · Converta os números encontrados em cada um dos oito grupos para a notação hexadecimal: 1100 = 12 = C e 0000 = 0 ➔ O primeiro duocteto fica C0. 1010 = 10 = A e 1000 = 8 ➔ O segundo duocteto fica A8. 0000 = 0 e 0000 = 0 ➔ O terceiro duocteto fica 00. 0000 = 0 e 0001 = 1 ➔ O quarto duocteto fica 01. · Desta forma, o endereço IPv4 192.168.0.1 é representado em IPv6: C0A8:0001. · Adicione o 0 nos cinco primeiros grupos de 16 bits, seguido de FFFF: 0:0:0:0:0:FFFF:COA8:0001. · O IPv6 ainda permite a representação de seu endereço de forma reduzida, abstendo-se de apresentar os endereços com 0: ::FFFF:C0A8:0001. Com os dispositivos configurados nas redes, os hosts devem ter também um mecanismo para que o roteamento das mensagens ocorra. Os hosts configurados com IPv4/IPv6 possuem suporte aos dois protocolos, não necessitando de técnicas de transição. Já um dispositivo configurado apenas com IPv4 ou IPv6 suportará operações de roteamento somente conforme o protocolo configurado. Outra técnica adotada para a coexistência e interoperabilidade entre as diferentes versões do IP é o mecanismo de 6to4, o qual permite que redes IPv6 tenham a comunicação entre os roteadores de forma automática. Roteadores 6to4 encaminham os dois endereços (Ipv4 e Ipv6)dos hosts, e os dispositivos clientes (hosts) devem estar configurados com os endereços IPv4. A Figura 2.34 apresenta uma topologia com exemplo de implementação de mecanismo 6to4. O tunelamento na rede permite que o IPv4 possa encaminhar pacotes ao IPv6 através de algumas possibilidades: 1. Roteador a roteador: o IPv6 é encapsulado dentro de um pacote IPv4 no início da transmissão. 2. Roteador a host: um host com IPv4 envia pacotes a um host IPv6, e o pacote utiliza-se da configuração de Pilha Dupla do roteador para alcançar o host de destino através de um túnel entre o roteador e o host destino. 3. Host a host: um host configurado com Pilha Dupla se comunica com outro host em uma rede configurada com o protocolo IPv4 via tunelamento entre os hosts. Outro mecanismo, chamado de Tunel Broker, encapsula o pacote IPv6 dentro do pacote IPv4 e permite que seja realizado o roteamento do pacote na rede através de um túnel em redes configuradas como IPv4 e necessidade de interoperabilidade com sites IPv4/IPv6. A última técnica utilizada para interoperabilidade entre o IPv4 e IPv6 é a Intra-Site Automatic Tunnel Addressing Protocol (ISATAP). Ela possibilita utilizar endereços atribuídos pelo servidor DHCP (Dynamic Host Configuration Protocol) com IPv4 para dispositivos com tunelamento de IPv6. Interessante observar que o ISATAP é default para sistemas operacionais Windows. Você pode reconhecer o endereço ISATAP com a utilização do comando ipconfig no prompt de comando. A figura a seguir apresenta um exemplo com topologia de túnel 6to4. Exemplo de topologia para implementação de técnica de túnel 6to4. Fonte: adaptada de LabCisco. Diferenças entre IPV4 e IPV6 As principais diferenças entre os protocolos IPv4 e IPv6 referem-se ao tamanho do endereço, à quantidade de endereços disponíveis para utilização, à representação do endereço, ao roteamento, à segurança e às questões de qualidade de serviço (Quality of Services – QoS). O quadro abaixo apresenta um comparativo de algumas características entre o endereço IPv4 e IPv6. Comparação entre os protocolos IPv4 e IPv6. Fonte: adaptado de Forouzan (2010). Segundo Tanenbaum (2011), os administradores de redes e os provedores de internet deverão suportar a interoperabilidade entre os dois protocolos, o IPv4 e o IPv6, por algum tempo ainda, porém esta coexistência deverá trazer alguns problemas de gerenciamento. Alguns deles são: · Falhas: as redes deverão operar com o IPv4 e com o IPv6. · Contabilização: recalcular limites de utilização de recursos. · Configuração: pela necessidade de coexistência entre os protocolos. · Desempenho: necessidade de adaptações para garantia de performance em serviços. · Segurança: buscar técnica para garantia da interoperabilidade (coexistência) sem riscos à segurança de sistemas. As informações técnicas apresentadas suportam a configuração de ambientes de rede de computadores com protocolos IPv4, IPv6 e, principalmente, com a coexistência e interoperabilidade dos dois protocolos no mesmo ambiente. ______ 💭 Reflita Um endereço IPv4 é composto por quatro blocos de oito bits cada, totalizando 32 bits, o que resulta em uma quantidade de endereços para hosts diretamente interligados à internet de aproximadamente 4.3 bilhões, ou seja, 232 endereços. A sua utilização em redes locais privadas, porém, pode incrementar este número de endereços, por serem redes isoladas da internet, através de seus servidores e controles de atribuição de endereços pelos provedores de serviços de conexão à internet. Já um endereço IPv6 é composto por oito blocos de 16 bits cada, totalizando 128 bits, o que representa uma quantidade de endereços para hosts diretamente interligados à internet de 340 undecilhões. O número é grande, mesmo considerando previsões de termos mais de 10 trilhões de dispositivos de IoT (Internet of Things) interconectados até o ano de 2030, conforme previsto por Diamandis e Kotler (2018). Qual deverá ser a versão de IP para endereçamento de dispositivos de IoT adequado? Esta aula trouxe para você importantes conceitos a respeito do padrão Ethernet (IEEE 802.3) e suas diferentes versões utilizadas para implementação de sistemas de redes de computadores locais através de cabos, com uma tecnologia amplamente utilizada nos últimos 30 anos. De forma complementar, e com grande importância, trouxe também informações sobre o IPv6 como uma versão atualizada do protocolo IP para endereçamento e roteamento de redes, que deverá ser utilizado como padrão de endereçamento de redes junto à versão IPv4. Estas informações são fundamentais para que um profissional de tecnologia da informação possa projetar e implementar uma rede de computadores com performance adequada. Relatório do Projeto De Redes: Equipamentos de Rede e Análise De Domínios de Colisão e Broadcast Após a análise da topologia da rede e distribuição de hosts junto aos dispositivos comutadores, a equipe de consultoria pode apresentar informações de descrições dos equipamentos de rede que pertencem ao ambiente de coworking e se utilizam do padrão Ethernet para transferência de dados na rede, de acordo com a topologia a seguir: Topologia de rede para análise dos domínios de colisão e broadcast mapeados. Fonte: elaborada pelo autor. Lista de equipamentos da rede: · Sistemas: um servidor, uma impressora, dois desktops e um switch. · Gerência: um switch, duas impressoras e três desktops. · Clientes1: um switch e quatro desktops. · Reuniões: um roteador. · Clientes2: um switch, um hub e quatro desktops. · Visitantes: um roteador. Domínio de colisão: há quatro domínios de colisão, considerando que cada switch na topologia forma um domínio de colisão. Importante apresentar que o hub não implementa um domínio de colisão e, caso a empresa tenha interesse em substituí-lo por um switch, poderá ter uma rede com menor colisão dentro de sua topologia. Domínio de broadcast: há dois domínios de broadcast, considerando que cada roteador da topologia apresentada forma um domínio de broadcast. Na atualidade, os hubs podem ser substituídos por switches devido à evolução dos equipamentos nos últimos anos e ao custo com o equipamento ter diminuído, possibilitando sua utilização em maior escala em projetos de rede. Neste estudo, o hub está sendo utilizado como elemento de comutação para exemplificar à empresa que seu uso atende parcialmente às necessidades da rede. Nesta aula, você estudará conceitos, estratégias e ferramentas para o gerenciamento de sistemas de redes de computadores. Abordaremos, em um primeiro momento, as cinco áreas do gerenciamento de redes, as quais abarcam: configuração, falha, desempenho, segurança e contabilização. Em seguida, apresentaremos alguns comandos para análise e configurações de rede, seguidos dos padrões de gerenciamento de rede, dentre os quais se destaca o protocolo SNMP (Simple Network Management Protocol). Introdução da aula Para dar sequência ao aprendizado de gerenciamento de redes, mostraremos indicadores de gerência de desempenho, configuração, contabilização, disponibilidade de rede e QoS (Quality of Services). Esses indicadores são vistos através de ferramentas de gerenciamento de redes, muitas delas disponíveis através de comandos ou aplicativos dos sistemas operacionais Linux e Windows, sendo que algumas das ferramentas operam em ambos os ambientes e são de utilização livre. O Microsoft Network Monitor e o Wireshark são dois aplicativos que podem ser utilizados para análise e mensuração de alguns indicadores de gerenciamento de rede. Na segunda parte desta aula, trataremos de informações sobre comandos para reconhecimento, avaliação e configuração de sistemas de redes de computadores. O protocolo VLAN Trunk Protocol será apresentado como ferramenta para gerenciamento e customização de atividades em redes, e o protocolo SSH (Secure Shell), como ferramenta de conexão remota em sistemas de rede. Estas aplicações permitem que o administrador de um sistema de redes de computadores possa fazer a conexão remota com os sistemas e buscar a melhor administração da rede,independentemente de sua localização física. Um determinado escritório de contabilidade possui uma rede de computadores instalada que suporta todas as atividades profissionais desenvolvidas no ambiente interno para cerca de 30 estações de trabalho (desktops e notebooks) para as atividades profissionais de seus colaboradores. A topologia do escritório é apresentada na Figura 2.37 a seguir, na qual se pode perceber as distribuições dos computadores que realizam os trabalhos internamente. Neste escritório, a rede se tornou muito lenta em um determinado período do dia, quando todos os colaboradores estão atuando em suas atividades profissionais. O diretor da empresa solicitou que um profissional de tecnologia da informação pudesse apresentar uma análise sobre as atividades desenvolvidas na rede, pois entende que há colaboradores utilizando a infraestrutura de rede para fazer downloads de arquivos em formato de vídeo, atividade fora do escopo das atividades convencionais desenvolvidas no escritório. Neste primeiro momento, a consultoria deverá buscar uma solução, com a implantação de um sistema de sniffig, para que se possa coletar os dados da rede. O sistema sugerido para implantação é o Wireshark, que tem interface simples e natureza de utilização livre. O Microsoft Network Monitor também pode ser utilizado para esta análise. A consultoria ficou responsável por apresentar a topologia de rede descrita a seguir, utilizando-se da ferramenta Packet Tracer e adicionando à estrutura a representação do sniffer. Também foi solicitado que o relatório contenha pelo menos uma tela de dados capturados pelo monitoramento realizado pelo Wireshark. Topologia de rede do escritório de contabilidade. Fonte: elaborada pelo autor. A consultoria deve apresentar as informações de análise e orientações de utilização da ferramenta de monitoramento de rede através de um relatório chamado de Relatório de projeto de redes: monitoramento de rede via sniffig. Um sistema de redes de computadores necessita ser devidamente planejado, implantado e gerenciado. A simples implementação de infraestrutura, sistema operacional e aplicações distribuídas em rede não se faz suficiente para que a performance de todo este sistema seja eficaz. As tecnologias e as ferramentas de gerenciamento de redes são fundamentais para que o profissional de tecnologia da informação possa desenvolver uma rotina, na qual o monitoramento e os ajustes do sistema sejam aliados, a fim de que as empresas tenham suporte adequado para que seus sistemas distribuídos possam operar adequadamente. Gerência de desempenho Nesta terceira e última aula da unidade de Arquitetura e tecnologia de redes, conheceremos as áreas que formam o gerenciamento de redes e nos aprofundaremos na gerência de desempenho. Trabalharemos conceitos e aplicações da análise e configuração de redes e utilizaremos o protocolo VLAN Trunk Protocol como estratégia para gestão de redes e o SSH (Secure Shell) como ferramenta de gestão e acesso remoto em redes de computadores. Forouzan (2010) define gerenciamento de redes como o monitoramento, o teste, a configuração e o diagnóstico de componentes de rede para atender a um conjunto de exigências definidas por uma organização. As exigências relacionam-se com a operação estável e eficiente da rede que fornece a qualidade predefinida de serviços aos seus usuários. Ainda de acordo com o autor, o gerenciamento de redes abarca cinco áreas, conforme descritas a seguir: · Gerenciamento de configuração: sistema utilizado para conhecimento sobre o estado de cada entidade da rede e sua relação com as outras entidades. Este gerenciamento pode ser um subsistema de reconfiguração ou de documentação. Na reconfiguração, há o ajuste dos componentes e das características da rede no que se refere ao hardware, ao software e às contas de usuários. Já na documentação há o registro das configurações da rede sobre o hardware, o software e as contas de usuário. · Gerenciamento de falhas: relaciona-se à área do gerenciamento que trata das falhas de rede através de dois subsistemas: um reativo e outro proativo. No subsistema reativo, existe a detecção, o isolamento, a correção e o registro de falhas. No subsistema proativo, o sistema procura impedir a ocorrência de falhas. · Gerenciamento de desempenho: esta área está relacionada ao gerenciamento de falhas e tenta monitorar e controlar a rede para garantir que ela seja executada de forma eficiente. Conforme sustenta Forouzan (2010), esta área busca quantificar o desempenho de uma rede de computadores usando quantidades mensuráveis, como: capacidade, throughput (vazão), tráfego e tempo de resposta (latência). A capacidade da rede deve ser monitorada, porque as redes possuem capacidades de infraestrutura, hardware e software limitadas; o tráfego também necessita de monitoramento interno e externo, medido pelo número de pacotes transmitidos (no tráfego interno) e pela troca de pacotes (no tráfego externo); o throughput de um dispositivo (roteador, por exemplo) pode ser medido para analisar a performance da rede; e o tempo de resposta é medido durante a transmissão e obedece a parâmetros mínimos de retorno. Adicionalmente, o Jitter, que é uma medida de variação no atraso da transferência de dados e a perda de pacotes também influenciam no desempenho da rede. · Gerenciamento de segurança: é a área responsável pelo controle de acesso à rede e considera uma política de rede predefinida pela empresa. Tem relação com os sistemas de segurança computacional e prevê a utilização de sistemas de proteção à rede para monitoramento de ameaças e ataques. Neste gerenciamento, são consideradas questões de ameaças, ataques e vulnerabilidade de sistemas e utilizam-se dispositivos, como firewall, Intrusion Detection Systems (IDS), Intrusion Prevention Systems (IPS), sistemas de monitoramento e captura de dados de rede, como os farejadores, ou sniffers, e sistemas de monitoramento em geral. · Gerenciamento de contabilização: é a área relacionada à quantificação do acesso e à utilização de recursos de rede pelos usuários, departamentos ou divisões. Este gerenciamento é importante para que usuários não monopolizem recursos da rede, impedir que o sistema seja utilizado de forma ineficiente e para que os administradores da rede possam analisar sua utilização e desenvolver planos sobre o uso da rede, conforme sua demanda. Firewalls, IDS, IPS, sistemas farejadores e monitoramento auxiliam também nesta atividade. ______ 🔁 Assimile Os princípios do gerenciamento de rede são definidos por Kurose e Ross (2013) através de três atividades: · Coleta de dados: refere-se à coleta de dados da rede, realizada por um sistema de sniffig¸ por exemplo. · Análise e diagnóstico: refere-se à organização dos dados coletados na rede para tomada de decisão de forma manual ou utilizando softwares específicos. · Controle: refere-se a ações para a gestão da rede, a fim de cessar, mitigar ou minimizar os impactos de informações trafegadas na rede. ______ Sniffer Um sistema de sniffig, ou uma aplicação sniffer, é um aplicativo de software que busca realizar a análise e interceptação do registro de dados de um sistema de redes de computadores. São aplicativos que auxiliam os administradores de rede na análise do tráfego da rede e na checagem da sua performance mediante os parâmetros de operação estabelecidos. Estas ferramentas permitem também controlar o tráfego de um dispositivo de rede e capturar dados das transmissões nela realizadas. Os aplicativos que realizam estas atividades são chamados de farejadores e executam um algoritmo que captura fluxos de dados especificados pelos gestores de sistemas da empresa em sua configuração através de e-mail, login, texto e históricos de acesso à internet, por exemplo. A Figura 2.38 apresenta um exemplo de tela de uma ferramenta sniffig, o Wireshark. Estas ferramentas representam, por um lado, um aliado ao gestor de redes de computadores, pois analisam e geram relatórios de análise da rede, porém também podem representar um ponto de atenção,porque representam uma ferramenta que impacta a vulnerabilidade de sistemas e trazem questões contra a segurança da rede. 📝 Exemplificando Alguns programas estão disponíveis para download e implantação de aplicativos de sniffig de forma livre. A seguir, apresenta-se dois exemplos de aplicativos que podem ser utilizados para análise e captura de dados da rede. A figura abaixo demonstra uma tela inicial da interface gráfica da ferramenta Wireshark. A ferramenta permite que se filtrem informações clicando nas interfaces ou informando-as. Padrões de gerenciamento de redes De acordo com Kurose e Ross (2013), os padrões de gerenciamento de rede começaram a amadurecer no final da década de 1980, sendo que o CMISE (Common Management Service Element), ou Elemento de Serviço de Gerenciamento Comum, e o CMIP (Common Management Information Protocol), ou Protocolo de Informação de Gerenciamento Comum, formavam o ISO CMISE/CMIP e o SNMP (Simple Network Management Protocol), ou Protocolo Simples de Gerenciamento de Rede, e emergiram como os dois padrões mais importantes. O SMNP se tornou a estrutura de gerenciamento de rede mais usada e disseminada no mundo. Importante salientar que estes padrões de gerenciamento de redes são utilizados pelos profissionais de tecnologia da informação para análise de dados e tomada de decisões gerenciais, com o objetivo de manter uma infraestrutura de rede que garanta o QoS (Quality of Services), ou qualidade de serviços da rede. SNMP (SIMPLE NETWORK MANAGEMENT PROTOCOL) É um protocolo utilizado para realizar monitoramento de dispositivos e serviços de rede, que pode ser usado por dispositivos de diferentes arquiteturas e sistemas operacionais. Defendido por Kurose e Ross (2013), ao contrário do que o nome possa sugerir, o gerenciamento de rede na internet é muito mais do que apenas um protocolo para transportar dados de gerenciamento entre uma entidade gerenciadora e seus agentes. O SNMP é formado por quatro componentes básicos: · Agentes ou Dispositivo gerenciado: são os nós (host ou roteador, impressora, etc.) gerenciados na rede de computadores. · Agente de Gerenciamento de rede: são as estações de gerenciamento na rede. · MIB (Management Information Base): são as informações de gerenciamento da rede reunidas em um banco de dados com informações de configuração e status dos dispositivos gerenciáveis da rede. · SNMP: é o protocolo propriamente dito de gerenciamento de rede instalado em dispositivos gerenciáveis da rede (computador, impressoras, câmeras IP, switches). CMISE (COMMON MANAGEMENT SERVICE ELEMENT) É formado por dois protocolos, o CMIS (Common Management Information Service), que define como os serviços serão oferecidos às aplicações de rede, e o CMIP (Common Management Information Protocol), que é um protocolo de gerenciamento de referência, no qual as trocas das informações seguem a mesma estrutura entre o gerente e o agente nos processos de gerenciamento. Comandos para análise e configuração de rede A análise e a configuração de redes de computadores fazem uso de comandos em prompt de comando nos sistemas operacionais Microsoft Windows e de distribuições Linux, para que pacotes de software sejam implementados no sistema e possam ser utilizados pelo administrador da rede para gerir os host e dispositivos de rede em geral e, assim, configurar hardware e software e gerenciar o tráfego na rede. A seguir, serão apresentados alguns comandos básicos de gestão de redes. Ping O comando ping é usado para testar a capacidade de um host de rede de se comunicar com outro. Ele retorna dados referente a um teste simples de conexão de rede e à qualidade de entrega de pacotes. A próxima figura apresenta a saída do comando ping utilizado junto ao endereço IP (8.8.8.8) de um servidor do Google. Podem ser observadas informações sobre a conexão, como tempo de resposta e TTL (Time To Live) da mensagem, uma estatística de pacotes enviados como pacotes perdidos e a latência da rede, com mínimo, máximo e média. Tracert - O comando tracert é semelhante ao ping, mas com a função adicional de enviar solicitações de eco do ICMP (Internet Control Message Protocol) e do TTL (Time to Live) da solicitação, para que se verifique a lista de roteadores pelos quais os pacotes estão passando em cada salto. Este comando apresenta o caminho de um pacote percorrido na rede. Em distribuições Linux, utilize o comando traceroute para esta finalidade. A figura abaixo apresenta a saída do comando tracert utilizado junto ao endereço IP de um servidor do Google. Ipconfig - O comando ipconfig exibe informações básicas de configuração do endereço IP do host. Pode-se utilizar a opção ipconfig /all para verificar informações detalhadas. Em distribuições Linux, utilize o comando ifconfig para realizar a operação realizada pelo ipconfig em sistemas Windows. A Figura 2.41 apresenta a saída do comando ipconfig utilizado no computador local. Veja que há um volume importante de informações de endereçamento do host, com o endereço IPv6, o endereço IPv4 de configuração automática, considerando que há um servidor de endereços no sistema (DHCP – Dynamic Host Configuration Protocol), a máscara de rede e o gateway padrão da rede, onde o host está se conectando localmente. Hostname - O comando hostname retorna o nome do dispositivo (computador) local. A figura abaixo apresenta um exemplo de saída do comando hostname com o devido nome do host local. Netstat - O comando netstat apresenta uma estatística da rede. Este comando possui várias funções, sendo que o comando netstat -e mostra um resumo das estatísticas da rede. A figura abaixo apresenta a saída do comando netstat -e com informações da rede. Veja que é apresentado um relatório com bytes recebidos e enviados, pacotes unicast, pacotes não unicast, descartados e erros. Com essas informações, o gestor pode reconhecer a performance da rede. Nslookup - O comando nslookup apresenta um diagnóstico de problemas de resolução de nomes DNS (Domain Name System) apresentando o endereço IP do servidor DNS padrão do dispositivo. Conhecendo o nome do servidor DNS, pode-se digitar os nomes de hosts. Ele faz uma consulta de nomes de servidores de DNS na internet. A figura abaixo apresenta a saída do comando nslookup 8.8.8.8. ARP - O comando arp corresponde a um protocolo de resolução de endereços através do mapeamento de endereços IP junto ao endereço MAC (Media Access Control). A figura abaixo apresenta a saída do comando arp com o mapeamento dos endereços lógicos (IP) e físicos (MAC) de um dispositivo. Route - O comando route exibe as tabelas de roteamento do dispositivo e permite observar informações de direcionamento de pacotes de uma sub-rede para outra. A figura a seguir apresenta a saída parcial de um comando route print, atributo que imprime as tabelas de roteamento local. Aqui, apresentamos alguns comandos básicos para análise e configuração de dados de rede, porém ainda há diversos outros comandos e sistemas operacionais que podem ser utilizados na configuração e gestão de redes de computadores. Indicadores de gerência de desempenho, configuração, contabilização e QOS (Quality of services) Conforme define Comer (2016), as principais medidas de desempenho de uma rede de computadores são: latência ou atraso, throughput, vazão, capacidade ou taxa de transferência e jitter ou variação da latência. Outros indicadores também são importantes, como perda de pacotes e disponibilidade. Latência ou atraso A primeira propriedade das redes que pode ser medida quantitativamente é latência ou atraso. A latência especifica quanto tempo leva para os dados viajarem através da rede de um computador para outro, medida em frações de segundo. Ela pode ser também considerada como o intervalo de tempo durante a emissão e a confirmação de recebimento de um pacote na rede. Há diversos fatores que impactam na latência de uma rede. O quadro abaixo a seguir mostra os tipos de atraso em uma rede de computadores. Tipos de atraso. Fonte: adaptado de Comer(2016, p. 412). Throughput Comer (2016) define a taxa de transferência ou throughput como uma medida da velocidade na qual os dados podem ser enviados através da rede, em bits por segundo (bit/s). Os fatores que influenciam no throughput da rede são: topologia da rede, número de usuários da rede e taxa de interfaces de rede. A figura abaixo apresenta um exemplo de mensuração de throughput de rede realizado através da ferramenta Wireshark.Throughput em uma rede medida pela aplicação Wireshark. Fonte: captura de tela da ferramenta Wireshark elaborada pelo autor. ______ 🔁 Assimile A maioria das redes de comunicação de dados oferece uma taxa de transferência de mais de 1 Mbit/s, e as redes de maior velocidade operam mais rápido do que 1 Gbit/s. Casos especiais surgem quando uma rede tem uma taxa de transferência inferior a 1 kbit/s. ______ Jitter O jitter é uma medida de variação no atraso da transferência de dados. Ela se tornou importante mediante as novas tecnologias de comunicação baseadas em streaming, com a transferência de voz e vídeos em tempo real via internet. Duas redes podem ter o mesmo atraso médio, mas diferentes valores de jitter. Por exemplo, se todos os pacotes que percorrem uma determinada rede têm o mesmo atraso X de um pacote e Y de outro pacote, a rede não tem jitter. Porém, se os pacotes alternam entre atrasos diferentes (com um atraso X de um pacote diferente de um atraso Y de outro pacote), a rede tem a mesma média de atraso, mas tem um jitter diferente. Como um exemplo da importância da análise de jitter, considere que as transmissões de voz ou vídeo via internet devem utilizar um protocolo que compensa o jitter. Como o uso de protocolos em tempo real é mais econômico do que a construção de uma rede isócrona (onde há envio de mensagens ininterruptamente com intervalos conhecidos e fixos), as empresas de telefonia estão atenuando os requisitos rigorosos de redes isócronas. ______ 💭Reflita Conforme afirma Comer (2016), medir o desempenho da rede pode ser surpreendentemente difícil por quatro motivos: · As rotas podem ser assimétricas. · As condições podem mudar rapidamente. · A própria medição pode afetar o desempenho. · O tráfego é em rajadas. Ao contrário do tráfego telefônico de voz, o tráfego de dados ocorre em rajadas. O desempenho de uma rede de computadores é considerado estável dentro do que se chama de redes convergentes, nas quais redes de dados e redes de telefonia estão operando através de linhas de distribuição de dados unificada? ______ Perda de pacotes A perda de pacotes na rede refere-se à situação em que se encaminham informações pela rede, porém estas não respondem com a totalidade da sua entrega. Pode ocorrer devido à capacidade de armazenamento de pacotes nos roteadores, considerando que estes possuem capacidade de memória limitada. É possível verificar a resposta de perda de 25% dos pacotes enviados através do comando ping 192.168.0.1 no teste de rede apresentado na figura a seguir. Perda de pacotes na rede. Fonte: captura de tela do prompt de comando do sistema operacional elaborada pelo autor. ______ 📝 Exemplificando Redes padrão Ethernet (802.3) são baseadas em conexões realizadas através de enlaces físicos por cabos. Os cabos metálicos de par trançado UTP (Unshield Twisted Pair) é o tipo mais comum em redes locais e possuem comprimento limitado (100 metros), para garantir a qualidade do sinal eletromagnético. A instalação adequada dos cabos dentro dos limites de comprimento estabelecidos, assim como os graus de curvatura que são submetidos, influenciam na perda de pacotes em uma rede. Outra medida importante para prevenir a perda de pacotes é a escolha adequada do padrão de rede Wi-Fi (802.11), que possui diversas especificações, com diferentes faixas de frequência e cobertura. Por exemplo, uma rede 802.11ac trabalha na faixa de frequência de 5,8 GHz, velocidade de até 1,3 Gbps e possui menor distância de operação e menor capacidade de transpassar obstáculos, o que pode ocasionar perda de pacotes na rede. Outro padrão recente é o 802.11ad, com frequência de 60 GHz, que possui maior dificuldade para transpassar obstáculos devido à alta frequência. Disponibilidade Como sustenta Comer (2016), as redes de computadores são compostas por diversos equipamentos, como nodos, computadores, servidores, cabeamentos, entre outros, e todos esses dispositivos podem sofrer algum tipo de falha. A disponibilidade de uma rede é a capacidade que seus equipamentos possuem de manterem-se em operação de forma ininterrupta dentro de um determinado período de tempo. Alguns conceitos referentes à disponibilidade de uma rede de computadores são: · Mean Time Between Failures (MTBF): ou tempo médio entre falhas, é uma previsão por modelo estatístico/matemático do tempo médio entre as falhas. É útil para prever as manutenções necessárias dentro de um sistema de redes de computadores. Para o cálculo, utiliza-se a fórmula: MTBF = ∑ (FINAL – INICIAL) / NÚMERO DE FALHAS · Mean Time to Repair (MTTR): ou tempo médio para reparos, é uma previsão por modelo estatístico/matemático do tempo médio para se realizar o reparo da rede após a ocorrência de uma falha. Para o cálculo, utiliza-se a fórmula: MTTR = TEMPO DE PARADA POR FALHA / NÚMERO DE FALHAS · Mean Time to Failure (MTTF): ou tempo médio para falha, é o tempo de vida de uma rede que compreende os períodos alternados de operação de falhas. Este termo é utilizado para efetuar o cálculo de disponibilidade de uma rede de computadores por meio da função de frequência com que as falhas ocorrem e do tempo necessário para reparo, definido pela fórmula: D = MTTF / (MTTF + MTTR) Por exemplo: considere que um sistema de rede de computadores possui um MTTF de 8.760 horas de operação no ano (referente a um sistema que opera 365 dias por 24 horas) e um MTTR de 288 horas anual (com sistema off-line 12 dias por ano). Nesse caso: D = MTTF / (MTTF + MTTR) D = 8760 / (8760+288) D = 96,816 A disponibilidade da rede é de 96,82% ao ano. QOS (Quality of service) Comer (2016) define que o objetivo da medição de redes é o provisionamento da rede: projetar uma rede para fornecer um nível específico de serviço e, em termos gerais, isto é conhecido como Qualidade de Serviço, ou Quality of Service (QoS). Ela pode ser vista como o conjunto de regras, mecanismos e tecnologias que objetivam a utilização eficaz do sistema. Como vimos anteriormente, os fatores que influenciam na performance da rede são a latência, o jitter, a perda de pacotes e a largura de banda disponível. O QoS busca garantir ao usuário ou gestor da rede de computadores controle adequado sobre sua estrutura de rede. Uma aplicação de utilização de QoS é determinar quais dispositivos da rede e quais serviços de rede precisam de prioridade na conexão. O atendimento às necessidades de performance dos sistemas de redes de computadores, a QoS, utiliza-se de dois modelos conceituais: · IntServ: utiliza o fluxo dos dados por meio do protocolo no caminho que a mensagem deve percorrer e garante o envio e recebimento de mensagens fim a fim. · DiffServ: utiliza uma marcação no pacote transmitido pela rede para classificá-lo e efetuar os tratamentos necessários de forma independente para os pacotes. De acordo com Comer (2016), o IETF (Internet Engineering Task Force) criou uma série de tecnologias e protocolos relacionados à QoS. Os três mais significativos são: RSVP/COPS (Resource ReSerVation Protocol / Common Open Policies Services), DiffServ e MPLS (Multiprotocol Label Switching). · RSVP/COPS: modelo baseado no IntServ, no qual o IETF desenvolveu dois protocolos para fornecer QoS: o protocolo de reserva de recursos (RSVP) e os serviços abertos de políticas comuns (COPS). O RSVP é uma versão de QoS, em que a reserva de recursos é necessária para cada sessão TCP ou UDP. O COPS é um protocolo usado conjuntamente com o RSVP para especificar e aplicar políticas. · DiffServ: uma vez abandonados os IntServ, o IETF criou os serviços diferenciados (DiffServ, ou Differentiated Services) para definir um mecanismode QoS que define como as classes podem ser especificadas para o cabeçalho IPv4 ou IPv6, para especificar a classe de um datagrama. · MPLS: é um mecanismo de comunicação orientado à conexão construído em cima do IP. Para usar o MPLS, um gerente configura caminhos de encaminhamento através de um conjunto de roteadores com o MPLS habilitado. A análise da performance da rede que considera a qualidade dos serviços, a disponibilidade da rede, a capacidade de processamento e o armazenamento é determinada pelo termo Service Level Agreement (SLA), ou seja, um acordo de nível de serviço definido e medido constantemente. Introdução ao VLAN Trunk Protocol e acesso remoto - servidor SSH O VLAN Trunk Protocol (VTP) é um protocolo de camada 2 (inter-rede), desenvolvido pela Cisco e utilizado para configuração de Virtual Local Area Network (VLAN), com o objetivo de facilitar a administração dos sistemas. Este protocolo define uma estrutura do tipo cliente-servidor, na qual as alterações são feitas necessariamente no servidor e replicadas aos clientes da rede. Importante apontar que esta técnica é utilizada por administradores de redes para melhorar o controle do sistema. ______ 🔁Assimile Uma VLAN é uma forma de criar sub-redes virtuais em uma estrutura de rede local implementada em switches, onde cada interface de rede (host) pode se comportar como uma VLAN e definir seu próprio domínio de broadcast. ______ Com a utilização do VLAN Trunk Protocol, o trabalho de configuração de redes locais virtuais é reduzido, pois o gestor da rede configurará apenas um switch, que será o responsável pela função de distribuir e sincronizar as informações para os outros switches da rede. Esta tecnologia oferece redução de atividades de configuração e reconfiguração e minimização de erros através da centralização das configurações em um switch chamado de VLAN Trunk Protocol Server. Na VLAN, nos switches que fazem parte de uma rede com VLAN, as tabelas de roteamento são atualizadas, isso porque as VLANs são criadas na interface de rede do switch. A estrutura de uma rede configurada com o VLAN Trunk Protocol é: · Server VTP: dispositivo responsável por criar, deletar, renomear e definir o domínio e as configuração das VLANs. · Client VTP: dispositivos que compõem a VLAN, porém não podem configurá-la. · Transparent VPT: switch com VLANs configuradas manualmente, que não participa do VTP. Estrutura formada pelo VLAN Trunk Protocol (VTP). Fonte: elaborada pelo autor. ______ 💭 Reflita Caso um administrador de redes tenha desejo de implementar redes locais virtuais, ele deverá fazer a configuração manualmente em cada switch da rede. Isto é simples em uma rede com dois ou três switches, porém se torna inviável em uma rede maior, com uma estrutura mais complexa e suscetível a erros de configuração. O VTP pode ser a tecnologia adequada para gestão de redes com múltiplos switches? ______ Acesso remoto - servidor SSH O protocolo de rede SSH (Secure Socket Shell ou Secure Shell) permite que se faça comunicação com segurança (criptografada) entre um host cliente e um servidor de rede, permitindo fazer o gerenciamento de dados e informações deste servidor de forma remota (em local físico diferente de sua localização). Através do SSH, um usuário ou gestor da rede pode fazer login em outro computador da rede e executar comandos como se estivesse diretamente operando um sistema servidor local. A interface é realizada através de um Shell remoto, que executa os comandos digitados e faz a ponte entre a máquina do usuário e o servidor remoto Os comandos de interação são realizados através de um terminal, chamado de Shell, responsável pela interpretação dos comandos do usuário junto ao sistema operacional de rede. Trata-se de um serviço que possui um protocolo que estabelece a administração remota de um servidor. É baseado em interação via texto, porém sua utilização é simples, através de um conjunto de recursos que permitem desde a transferência de arquivos entre cliente e servidor até a instalação e configuração de serviços de gerenciamento de redes de forma remota. O SSH é originalmente desenvolvido para sistemas operacionais, UNIX, adaptados em distribuições baseadas em Linux. No entanto, também é possível utilizá-lo em sistemas operacionais baseados em plataforma Windows com aplicativos adicionais e a partir da sua versão 10 sem utilização de aplicações complementares. O comando SSH segue a seguinte estrutura: ssh user@host · ssh: indica o uso do comando para abertura de conexão remota criptografada. · user: exemplificado como a conta à qual se deseja conectar remotamente (necessário ter direitos de administrador (Windows) e root (Linux). · host: indica o computador que se deseja acessar, identificado através do endereço IP ou nome de domínio. Após a digitação do comando para inicialização dos serviços de SSH, será necessário informar nome de usuário e senha de acesso à conta, definidos no servidor SSH em um sistema operacional de rede. A figura a seguir apresenta um exemplo de conexão de SSH realizada pelo Laptop-1 SSH Client com um SSH Server em uma localização física diferente. SSH Conexão remota com SSH. Fonte: elaborada pelo autor. A seguir, a figura apresenta um exemplo de utilização de cliente SSH para acesso remoto a um servidor determinado. SSH Cliente no Windows 10. Fonte: Hostmidia. ______ 📝 Exemplificando Para habilitar a ferramenta SSH no Windows, siga os seguintes passos: 1. Abra as configurações do Windows. 2. Acesse Aplicativos. 3. Clique em “Aplicativos e Recursos”. 4. Clique em “Recursos Opcionais”. 5. Selecione o OpenSSH, caso não apareça. 6. Clique em “Adicionar um recurso”; Localize “Cliente OpenSSH”, caso deseje instalar o cliente ou “Servidor OpenSSH” para o servidor e clique em Instalar. Para utilizar o SSH, é necessário que se tenha acesso à internet e privilégios de administrador. Se for distribuição Linux, deverá ter acesso como root (administrador). Os dados de acesso como conta do usuário, senha e porta do servidor também são necessários para que se realize uma conexão SSH. Para melhor compreender a instalação e execução do Open SSH no Windows 10, você pode visitar o site da Microsoft com as devidas orientações e a página OpenSSH. Outras ferramentas para implementação de SSH: · PuTTy: cliente SSH para a plataforma Windows e Unix (Linux). · SmarTTY: um cliente SSH. · XShell: clientes SSH versátil. CONCLUSÃO Esta unidade buscou trazer conceitos importantes sobre o gerenciamento de redes de computadores e a aplicação de comandos e ferramentas para verificação, análise e gerenciamento de redes, observando informações de configuração de dispositivos da rede e o seu tráfego. Estas ferramentas são importantes para que o profissional de tecnologia da informação possa conceber e operar sistemas de redes de computadores, porém com naturalidade, visto que não abarca todo o conhecimento necessário para uma gestão completa de redes. Neste cenário, bibliografias complementares e ferramentas foram sugeridas para que você possa se aprofundar na área de redes de computadores e se tornar um profissional de excelência. ➕Saiba mais A utilização de comandos e aplicativos para configuração e gestão de redes de computadores não se restringe aos exemplos dados e pode ser conhecida com maiores detalhes em literaturas específicas de cada plataforma operacional. Para configurações de sistemas Windows, pode ser consultado o livro Configuração do Windows Server 2008: infraestrutura de rede, de T. Northrup e J. C. Mackin, disponível na biblioteca virtual. Para configurações de sistemas Linux, pode ser consultado o livro Manual completo do Linux: guia do administrador, de Eve Nemeth, Garth Snyder e Trent R. Hein, disponível na biblioteca virtual. Para configurações de sistemas Linux, pode ser consultado o livro Dominando o Linux: Red Hat e Fedora, de Bill Ball e Hoyt Duff, disponível na biblioteca virtual. Para conhecimento de projeto de interconexão de redes, pode ser verificado o livro Projeto de Interconexão de redes: Cisco InternetworkDesign – CID, de Matthew Birkner, disponível na biblioteca virtual. Considerando a segurança dos sistemas nas áreas onde tem Wi-Fi, a escolha do equipamento com recursos providos e configuráveis é importante. Sugerimos a leitura do texto Porque você precisa se preocupar com o gerenciamento do Wi-Fi na sua empresa, da página Olhar Digital (2017). ______ ➕Pesquise mais Para contribuir com a compreensão e o uso de ferramentas de gerenciamento de redes, é sugerida a leitura das informações do texto Conheça as Principais Ferramentas de Gerenciamento de Redes de Mercado, de Marcelo Brenzink do Nascimento. Para realizar análise de performance e gerenciamento de redes, é importante a utilização de ferramentas de software. Fica a sugestão para conhecer as seguintes ferramentas: 1. Wireshark. 2. Capsa. 3. Microsoft Network Monitor. 4. SLAView. 5. Zenoss. 6. Cisco Prime Network Analysis. _____ A seguir, acompanhe o relatório apresentado como solução ao problema indicado no início da aula. Relatório do projeto de redes: monitoramento de rede via sniffig A solução para análise do tráfego de rede foi a implantação de um sniffer na rede através de um programa chamado Wireshark. O objetivo é monitorar e capturar pacotes de rede que passam pelo switch, que realiza a comutação central da rede, distribuindo as conexões para outro switch e roteador dos departamentos. A figura do sniffer apresentado na figura abaixo representa o dispositivo de hardware/software implantado na rede para análise e captura de pacotes. Este dispositivo é caracterizado por um computador munido do software farejador (sniffer). Em seguida, foram avaliadas informações coletadas através do software Wireshark, conforme Figura 2.53. O volume de informações é grande, considerando a intensidade das requisições na rede. A análise das requisições pode ser realizada através de filtros inseridos no programa, como HTTP (HyperText Transfer Protocol), que fará com que a ferramenta filtre apenas os pacotes do respectivo protocolo, ou ainda utilizar as ferramentas de estatística para análise. Importante informar que a consultoria também pode utilizar outros programas de sniffig para fazer a avaliação dos dados capturados na rede, como o Microsoft Network Monitor, apresentado na figura abaixo. Avaliando os dados coletados via software sniffer, pode-se perceber os acessos dos hosts ativos no ambiente de rede, por exemplo, as requisições e os acessos do endereço IP 192.168.0.12. O relatório pode ser completado com análises mais detalhadas. Questão 1 Com o objetivo de manter os dois protocolos coexistentes e interoperáveis para host configurados para opera em redes de computadores e na internet, ou seja, que possam ser utilizados e terem endereçamento e roteamento nas redes de computadores, as redes podem ser configuradas apenas com endereços IPv4, apenas com endereços IPv6 ou com os dois protocolos, situação que se intitula de Pilha Dupla (Dual Stack). Os dispositivos de rede que suportam o conceito de Pilha Dupla é defendido por Kurose e Ross (2013) onde os hosts configurados com ____________ também devem possuir uma implementação ____________ completa. Na operação de um dispositivo configurado como Pilha Dupla, as mensagens oriundas da camada de ____________ serão encapsuladas na Pilha Dupla para que a mensagem enviada à camada de ____________ sejam enviadas ao meio disponível onde podem ocorrer duas situações: 1. Mensagem com formato IPv4 é encapsulada com IPv6 e 2. Mensagem com formato IPv6 é encapsulada com IPv4. KUROSE, James F.; ROSS, Keith W. Redes de computadores e a internet: uma abordagem top-down. 6. ed. São Paulo: Pearson Education do Br Sua resposta IPv6 / ipV4 / Aplicação / Host de rede. Questão 2 Dentro de uma rede de computadores os dispositivos que desejam se comunicar necessitam utilizar um protocolo em nível de Rede (modelo OSI) ou Inter-Rede (modelo TCP/IP). Kurose e Ross (2013) definem o IP como um endereço lógico, criado para que um dispositivo em rede possa se comunicar com outro dispositivo na rede. O protocolo IP é um protocolo definido como padrão para dispositivos conectados em rede e tornou-se padrão para utilização na internet. Desta feita, está classificado em dois tipos de endereços: públicos e privados. Em relação às características de um endereço IP analise as afirmativas a seguir: I. Os endereços IP de natureza pública são atribuídos e controlados pela IANA (Internet Assigned Numbers Authority) de forma geral e via representantes específicos nos países. II. Os endereços IPv4 privados devem ser utilizados respeitando a sua regulamentação definida na RFC (Request for Comments) de número 791. III. Um endereço IPv4 se mantem útil e pode ser utilizado nas configurações atuais das redes de computadores mesmo com a criação de sua versão mais recente, o IPv6. IV. O endereçamento IP utiliza-se de máscara de rede e máscara de sub-rede para determinar qual o segmento de rede que um endereço IP pertence. Um exemplo de máscara de rede para um endereço IP de classe B é 255.255.0.0. Considerando o contexto apresentado, é correto o que se afirma em: Sua resposta I, II, III e IV. Questão 3 O padrão Ethernet vem sendo utilizado há mais de 30 anos para implementação de infraestrutura de enlaces de comunicação em redes locais cabeadas. Esta tecnologia naturalmente evoluiu nestes anos e possui atualmente padrões de comunicação que suportam altas velocidades em transmissão de dados em redes locais, assim como dispositivos que conseguem segmentar a rede e diminuir domínios de colisão e broadcast. Conforme Filippetti (2008) o padrão Ethernet com o CSMA/CD utiliza uma topologia em estrela e define uma rede comutada por um elemento central chamado de switch (antes eram utilizados apenas hubs) ou ainda roteadores. PORQUE O protocolo CSMA/CD (Carrier Sense Multiple Access with Collision Avoidance) evita colisão dentro de um sistema computacional de comunicação em rede, fazendo com que os dispositivos que desejam encaminhar informações na rede primeiro verifiquem o trafego no enlace de comunicação, aloquem um tempo de uso e apenas com canal livre inicie sua transmissão. A respeito dessas asserções, assinale a alternativa correta. Sua resposta A assertiva I está correta, porém a assertiva II está incorreta. QUESTÃO 4 Um pequeno escritório de contabilidade solicitou um projeto de rede de computadores em que precisa dividir sua rede em três sub-redes, de forma que colaboradores que utilizam desktops pertençam a uma sub-rede, colaboradores que utilizam os notebooks via wireless utilizem uma outra sub-rede e convidados que utilizam smartphones utilizem uma terceira sub-rede. A topologia da rede está apresentada na figura a seguir. Fonte: elaborado pelo autor. Uma equipe de projeto de redes utilizou a técnica de CIDR (Classless InterDomain Routing) para segmentar a rede em quatro sub-redes. A rede principal de classe C numerada com os endereços utilizando a rede 192.168.0.0 (exemplo: 192.168.0.1, 192.168.0.15 e 192.168.0.200) tem a máscara padrão 255.255.255.0. Tomando como as informações acima apresentadas sobre divisão de uma rede em sub-redes, julgue as afirmativas a seguir em (V) Verdadeiras ou (F) Falsas. ( ) O número binário da máscara de rede não segmentada que representa a máscara de rede apresentado é: 11111111.11111111.11111111.00000000. ( ) Considerando a necessidade de segmentar a rede em três sub-redes, um primeiro passo é utilizar dois bits destinados aos hosts de classe C 192.168.0.0 para definir a sub-rede. ( ) A nova máscara de sub-rede será: 11111111.11111111.11111111.11000000, representada pelo número decimal de 255.255.255.192. ( ) A nova máscara de sub-rede pode ser expressa também com a / e o número que representa a soma dos bits utilizados (emprestados) do host para a rede junto aos endereços IPs dos hosts. Um exemplo do endereço e máscara da sub-rede será 192.168.168.0.1/22. Assinale a alternativa que apresenta a sequência correta. Sua resposta V – V – V – F. Questão 5 Uma pequena instituiçãopossui uma rede local (Local Area Network) implementada a fim de oferecer uma infraestrutura de comunicação em rede para seus sistemas distribuídos e garantir a operação das atividades profissionais em seu ambiente conforme apresentado na figura a seguir. Topologia de rede de uma pequena instituição. Fonte: (NUNES, 2017) Avalie as assertivas a seguir no contexto de domínios de colisão e broadcast. I. A rede possui três domínios de broadcast, pois cada roteador da topologia forma um domínio de broadcast. II. A rede possui apenas dois domínios de broadcast considerando a distribuição de switches e roteadores na rede. III. A rede possui três domínios de colisão pois cada interface de rede do switch forma um domínio de colisão. IV. A rede possui uma topologia com três roteadores (wireless Router0, wireless Router1 e wireless Router2) que se conectam a uma interface de rede do Switch0. . Considerando o contexto apresentado, é correto o que se afirma em: Sua resposta I, III e IV, apenas. Questão 1 A perda de pacotes na rede refere-se à situação onde se encaminha informações pela rede porém estas não respondem com a totalidade da sua entrega. Podem ocorrer devido a capacidade de armazenamento de pacotes nos roteadores, considerando que estes possuem capacidade de memória limitada. É possível verificar a resposta de perda de 25% dos pacotes enviados na figura apresentada a seguir Tomando como referência os dados da figura apresentada, onde verificou-se a perda de parte dos pacotes na rede, julgue as afirmativas a seguir em (V) Verdadeiras ou (F) Falsas. ( ) A figura refere-se à saída de dados mediante ao uso do comando ping 8.8.8.8, onde se solicita um teste de conexão com um servidor de dados externo à rede local de onde foi digitado o comando. ( ) A figura refere-se à saída de dados mediante o uso do comando ping 192.168.0.1, onde se solicita um teste de conexão com um computador interno à rede local onde foi digitado o comando. ( ) O comando ping é utilizado de forma simples, com a digitação do comando seguido de um endereço IP válido na internet e é utilizado para testar a capacidade de um host se comunicar com outro host. ( ) O comando ping também é utilizado para apresentar o caminho percorrido junto aos roteadores até a chegada em um determinado endereço IP na rede ou na internet. Assinale a alternativa que apresenta a sequência correta. Sua resposta F – V – V – F. Questão 2 Com o objetivo de manter os dois protocolos coexistentes e interoperáveis para host configurados para opera em redes de computadores e na internet, ou seja, que possam ser utilizados e terem endereçamento e roteamento nas redes de computadores, as redes podem ser configuradas apenas com endereços IPv4, apenas com endereços IPv6 ou com os dois protocolos, situação que se intitula de Pilha Dupla (Dual Stack). Os dispositivos de rede que suportam o conceito de Pilha Dupla é defendido por Kurose e Ross (2013) onde os hosts configurados com ____________ também devem possuir uma implementação ____________ completa. Na operação de um dispositivo configurado como Pilha Dupla, as mensagens oriundas da camada de ____________ serão encapsuladas na Pilha Dupla para que a mensagem enviada à camada de ____________ sejam enviadas ao meio disponível onde podem ocorrer duas situações: 1. Mensagem com formato IPv4 é encapsulada com IPv6 e 2. Mensagem com formato IPv6 é encapsulada com IPv4. KUROSE, James F.; ROSS, Keith W. Redes de computadores e a internet: uma abordagem top-down. 6. ed. São Paulo: Pearson Education do Br Sua resposta IPv6 / ipV4 / Aplicação / Host de rede. Questão 3 No gerenciamento de redes de computadores, um software é considerando importante aliado ao gestor da de tecnologia da informação para análise e captura de pacotes de rede e mapeamento de atividades de tráfego de rede. A figura apresentada a seguir mostra um exemplo de operação deste software. Fonte: Wikimedia Commons. Disponível em: . Acesso em: 16 nov. 2020. Um sniffer é um aplicativo de software que busca realizar a análise e interceptação do registro de dados de um sistema de redes de computadores. O Wireshark apresentado na figura é um programa considerado de Sniffig de utilização livre que monitora e apresenta relatórios do tráfego da rede. Este é um sistema que pode ser utilizado tanto para prevenção de problemas de segurança de rede PORQUE A utilização de sniffer de rede é considerada uma estratégia aliada a gestão da rede pois gera relatórios relacionados ao monitoramento da rede e captura de dados de tráfego, porém, também pode ser considerada uma ameaça à segurança da rede quando utilizada com objetivos maléficos de monitoramento de dados alheios. A respeito dessas asserções, assinale a alternativa correta. As duas assertivas são corretas e a II justifica e complementa a primeira. Questão 4 O padrão Ethernet vem sendo utilizado há mais de 30 anos para implementação de infraestrutura de enlaces de comunicação em redes locais cabeadas. Esta tecnologia naturalmente evoluiu nestes anos e possui atualmente padrões de comunicação que suportam altas velocidades em transmissão de dados em redes locais, assim como dispositivos que conseguem segmentar a rede e diminuir domínios de colisão e broadcast. Conforme Filippetti (2008) o padrão Ethernet com o CSMA/CD utiliza uma topologia em estrela e define uma rede comutada por um elemento central chamado de switch (antes eram utilizados apenas hubs) ou ainda roteadores. PORQUE O protocolo CSMA/CD (Carrier Sense Multiple Access with Collision Avoidance) evita colisão dentro de um sistema computacional de comunicação em rede, fazendo com que os dispositivos que desejam encaminhar informações na rede primeiro verifiquem o trafego no enlace de comunicação, aloquem um tempo de uso e apenas com canal livre inicie sua transmissão. A respeito dessas asserções, assinale a alternativa correta. Sua resposta A asserção I é uma proposição verdadeira e a II, falsa. Questão 5 A utilização de endereços IP (Internet Protocol) para redes de computadores conectados em redes locais e à internet pode utilizar classes definidas e máscara de rede para identificar os limites da rede alcançável diretamente por um host de rede. Mas há também a estratégia de utilizar a configuração de sub-redes utilizando-se de endereços sem classes definidas. Conforme definem Kurose e Ross (2013, p. 251), a estratégia de atribuição de endereços da Internet é conhecida como roteamento Interdomínio sem classes (Classless Interdomain Routing – CDIR). Este sistema mantém a noção de endereçamento de sub-rede, e o endereçamento de sub-redes segue com o IP com 32 bits dividido em duas partes de números binários (representada de forma decimal) com pontos de separação, porém seguido de uma barra e um número que identificará a sub-rede na primeira parte do endereço. PORQUE O CDIR generaliza a noção de endereçamento de sub-rede e utiliza parte dos bits destinado ao host para compor a sub-rede. A respeito dessas asserções, assinale a alternativa correta. As duas assertivas trazem informações verdadeiras, e o contexto da segunda assertiva complementa o contexto da primeira UNIDADE 3 SISTEMAS DISTRIBUÍDOS Olá, estudante. Você sabia que entender os conceitos de sistemas distribuídos é de extrema importância atualmente? Grande parte das aplicações mais populares utilizam esse modelo, em que várias máquinas são interligadas por meio de redes de computadores. Você já parou para pensar como os sistemas computacionais evoluíram até os dias atuais? Nesta unidade, vamos compreender essa evolução, passando por todas as suas etapas até chegar nos sistemas distribuídos. Você sabe classificar os diferentes sistemas computacionais e distinguir suas características? Após completar esta Unidade, você será capaz de realizar essa tarefa, utilizando seu raciocínio crítico e criatividade para resolução dos problemas propostos. É fato que a demanda por profissionais com conhecimento em implantação de sistemasdistribuídos tem aumentado principalmente em consultorias de TI que prestam serviços especializados para seus clientes nos mais diversos segmentos. Iniciaremos agora os estudos sobre os sistemas distribuídos, o que lhe proporcionará um leque de oportunidades no mercado de trabalho, assim como conhecimentos importantes em relação a tecnologias atuais. Importante frisar que quanto mais você se dedicar, mais poderá aproveitar os ensinamentos transmitidos neste material. Você sabia que, para o funcionamento correto de uma aplicação distribuída, os relógios de todas as máquinas devem estar sincronizados? Além disso, já ouviu falar em um servidor NTP, o qual serve como base para sincronizar os relógios das máquinas? Imagine que você foi contratado por uma startup de desenvolvimento de sistemas bem-sucedida nos negócios, a qual iniciou projetos de sistemas para grandes empresas. Em seu primeiro dia, você recebeu um e-mail para uma reunião on-line de boas-vindas, mas percebeu que, ao responder e confirmar a reunião, ocorreu a indicação de horário equivocada, ou seja, o horário de recebimento do e-mail original apareceu como posterior ao horário do e-mail de resposta, conforme mostrado na figura a seguir. Exemplo de problema em uma caixa de e-mails. Fonte: captura de tela do Microsoft Outlook. Essa figura ilustra um problema de sincronização de relógios nos sistemas computacionais que se comunicam em rede. Sua primeira missão como analista na startup é reportar um erro de sincronização de aplicações que rodam em diferentes máquinas de um cliente de lojas de varejo. Assim que começou sua análise, você percebeu que os relógios das máquinas que rodam a aplicação não estão sincronizados, então, para resolver isso, você deverá preparar um relatório mencionando o problema e como resolver esse ajuste de horas, para que um técnico de campo seja enviado até o local. Após seus relatórios e apresentações entregues ao dono das lojas, este percebe que você sabe do que está falando e confessa que não entende como os computadores podem conversar entre si. Entre outras coisas, você fala da importância do sincronismo entre as máquinas e decide mostrar que sistemas em rede não são tão complicados assim. Você já parou para pensar quais são as configurações e os comandos necessários para que essa sincronização funcione adequadamente? Qualquer computador pode ser usado para realizar a configuração ou é necessário um servidor específico para essa tarefa? Se for necessário um servidor, qual é o mais utilizado? Para esclarecer essas dúvidas, você decide exemplificar o funcionamento de um sistema em rede de maneira simples e prática, acessando remotamente e sincronizando o relógio local dos computadores das três lojas com a internet, por meio do seu notebook, fazendo, assim, um acesso remoto, utilizando comandos específicos, relacionados aos servidores NTP. Para que o proprietário consiga fazer o procedimento quando a sua loja adquirir uma nova máquina, crie um relatório técnico com os comandos necessários, passo a passo, para que ele mesmo sincronize a nova máquina com as demais. Para completar esse desafio, nesta aula, você verá em detalhes o funcionamento desse processo de sincronização de relógios, incluindo comandos específicos a serem utilizados tanto para a configuração como para a constatação de que o serviço de sincronização está funcionando de maneira adequada. Ficou curioso? Espero que você se sinta motivado a dedicar seu tempo e seus esforços a um estudo que lhe proporcionará chances reais de assimilar os conceitos e as práticas que você utilizará na sua vida profissional. Definição de sistemas distribuídos (e exemplos) Mesmo que não saiba, hoje mesmo você já deve ter acessado um sistema distribuído. Ao abrir o navegador de sua preferência e acessar uma página de internet, você está usando um sistema distribuído. Essa simples ação rotineira em nosso dia a dia, por meio de um smartphone ou computador, utiliza um sistema distribuído. Mas, afinal, o que é um sistema distribuído? Um sistema distribuído é um conjunto de computadores que são interligados via rede, porém, para o usuário final das aplicações que são executadas através deles, aparenta ser um sistema único, como uma única máquina ou um único software (TANENBAUM; STEEN, 2017). Um de seus principais aspectos é que os computadores que fazem parte de sistemas distribuídos têm o funcionamento independente, ou seja, cada um age por si próprio e, muitas vezes, os sistemas e hardwares dessas máquinas são totalmente diferentes, mas aparentam ser uma coisa só para o usuário. Esses computadores estão ligados por meio de uma rede, e só assim é possível seu funcionamento de forma distribuída. ______ 🔁Assimile As principais aplicações e sistemas da atualidade utilizam modelos distribuídos. Esse conceito faz com que o sistema não dependa apenas de uma máquina, pois toda a carga do ambiente estará distribuída entre várias máquinas. Assim, os sistemas distribuídos ocultam o conjunto de máquinas que o fazem funcionar, aparentando ser algo único. ______ 💭Reflita Você conheceu alguns conceitos de sistemas distribuídos e percebeu o quanto eles são utilizados em aplicações modernas. Agora que você já os conhece, consegue identificar quais seguem esse modelo dentre os serviços que mais utiliza? Além disso, será que algum serviço que você utiliza pode ser otimizado aplicando esses conceitos? Reflita! ______ 📝Exemplificando Imaginaremos que queremos ver a página de notícias esportivas do nosso time do coração em um portal de notícias X, o qual segue o modelo de sistemas distribuídos. Sendo assim, a página acessada está sendo fornecida por um conjunto de quatro servidores, os quais, para o usuário final, aparentarão ser algo único. Pensando nisso, uma das funções dos sistemas distribuídos é que, mesmo que algum dos quatro servidores que estão mantendo essa página no ar esteja desligado, os outros devem assumir sua função, dividindo a carga, e o conteúdo deve estar no ar, assim como o sistema precisa estar em funcionamento. ______ A principal motivação para construir e utilizar sistemas distribuídos é proveniente do desejo de compartilhar recursos. O termo “recurso” é bastante abstrato, mas caracteriza o conjunto de elementos que podem ser compartilhados de maneira útil em um sistema de computadores interligados em rede. Ele abrange desde componentes de hardware, como discos e impressoras, até entidades definidas pelo software, como arquivos, bancos de dados e objetos de dados de todos os tipos, conforme indica Coulouris et al. (2013). ______ 🔁Assimile Um sistema distribuído é formado por vários nós/máquinas que executam uma função dentro do sistema distribuído, de modo que, para o usuário final, aparentam ser uma única máquina. ______ Segundo Tanenbaum e Steen (2017), os sistemas distribuídos possuem três objetivos principais: compartilhamento de recursos, confiabilidade e desempenho, conforme ilustra a figura a seguir. Exemplos dos principais objetivos de um sistema distribuído. Fonte: elaborada pelo autor. OBJETIVOS : * DISPONIBILIDADE alta e fácil acesso ao sistemas e a todos os seus recursos, tanto pelas máquinas que fazem parte do sistema distribuído como pelo usuário final. * CONFIABILIDADE maior que nos sistemas centralizados TEOREMA CAP (consistência, disponibilidade e resiliência(tolerâncua a falhas)) * Aumento de DESEMPENHO já que há múltiplas instancias, tanto de hardware quanto de software, para realizar o processamento necessário. *OCULTAR AO USUÁRIO que os recursos do sistema são distribuídos – IMPORTANTE * DEVE SER ABERTO, ou seja, facilitar a inclusão de novas máquinas e recursos no ambiente em funcionamento – Expansão facilitada DESAFIOS: * HETEROGENEIDADE operar em nós com características de hardware diferentes, e suportar diferentes sistemas operacionais. *SEGURANÇA garantir confidencialidade, integridade e disponibilidade - problema: ataques DoS *TOLERÂNCIA A FALHAS capacidade do sistema distribuído se auto recuperar na ocorrência de umaou mais falhas *ESCALABILIDADE, CONCORRÊNCIA E ABERTURA CLASSIFICAÇÃO DE SISTEMAS DISTRIBUÍDOS ** SISTEMAS CENTRALIZADOS – MAINFRAMES ** *VANTAGENS: Estabilidade e robustez, segurança, facilidade de gerenciamento e maior segurança de dados; *DESVANTAGENS: Escalabilidade e produtividade, linguagens de programação antigas, tamanho servidor, falta de interface gráfica e custo relacionado aos servidores. ** SISTEMAS PARALELOS – Executam simultaneamente várias partes da mesma aplicação** Mais de 1 processador Baseado em cluster Diversos núcleos *VANTAGENS: Escalabilidade produtividade e economia *DESVANTAGENS: Dificuldade de gerenciamento e segurança - SISTEMAS PARALELOS Fortemente acoplados: -A comunicação entre os processadores ocorre por meio de barramentos internos - Processadores compartilham a mesma memória principal (memória RAM) - Possuem mais de um processador núcleo, permitindo que vários programas sejam executados simultaneamente, ou seja, concorrente. - Exemplo: Notebooks, smartphones e desktops. -SISTEMAS PARALELOS Fracamente acoplados: - Abrangem sistemas de maior escala, sempre conectados por rede de computadores - Todos os sistemas de rede que utilizam arquiteturas do tipo cliente-servidor, ponto a ponto ou descentralizadas pertencem a essa categoria - Nomenclatura se dá pelo fato de que a interligação entre os elementos do sistema se dá via rede e não internamente ao hardware (acoplamento flexível) - Os sistemas distribuídos pertencem à categoria de sistemas fracamente acoplados. Compartilhamento de recursos, confiabilidade e desempenho O compartilhamento de recursos refere-se à capacidade do sistema em compartilhar o acesso a quaisquer recursos utilizados por ele entre as máquinas que fazem parte da arquitetura (também chamadas de nós). Esses recursos são, na maioria das vezes, bancos de dados, links de rede que se conectam à internet, serviços de autenticação, entre outros. Apesar de não ser um objetivo exclusivo dos sistemas distribuídos – uma vez que também é um objetivo dos sistemas de rede –, é uma característica muito importante. A vantagem de compartilhar recursos está na economia financeira, uma vez que, caso não haja tal possibilidade de compartilhamento, mais réplicas de um determinado recurso devem estar presentes em cada nó do sistema, o que impacta direta e indiretamente no custo. Entretanto, como aspecto negativo associado a esse compartilhamento de recursos, temos a questão da segurança, uma vez que o fato de mais máquinas terem acesso ao recurso implica que o sistema possui mais pontos de acesso, os quais podem ser explorados por hackers, tanto no sentido de rastreamento da comunicação quanto na própria questão de invasão de privacidade e integridade dos dados (COULOURIS et al., 2013). Confiabilidade A análise morfológica da palavra confiabilidade nos mostra que ela se refere à probabilidade de um produto executar a sua função prevista de forma que atenda ou exceda às expectativas, ou seja, está relacionada ao funcionamento adequado, conforme foi planejado. Podemos confundir a confiabilidade como algo relacionado à segurança do sistema, porém não tem relação alguma, conforme observam Colouris et al. (2013). A confiabilidade nos sistemas distribuídos é maior que nos sistemas centralizados, no entanto qualquer problema relacionado aos processos ou ao canal de comunicação/transmissão pode surtir efeitos diretos sobre a execução do sistema. Podemos observar, na figura abaixo, como ocorre a comunicação entre processos nos sistemas distribuídos, nos quais são aplicados os conceitos de confiabilidade: Comunicação entre processos em um sistema distribuído. Fonte: elaborada pelo autor. Podemos observar, na figura acima, que, se ocorrer algum problema no canal de comunicação, isso será refletido em todo o processo de comunicação e funcionamento do sistema. A confiabilidade de um sistema é baseada em três pilares: consistência, disponibilidade e resiliência (tolerância a falhas), conforme o Teorema CAP. Esse teorema é baseado nesses pilares, e sua sigla vem das palavras consistência (consistency), disponibilidade (availability) e tolerância a falhas (partition tolerance) (GREINER, 2014). Podemos observar, na figura abaixo, a representação desse teorema: Representação do Teorema CAP. Fonte: adaptada de Greiner (2014, [s.p.]). Uma das características importantes do Teorema CAP, a qual pode ser observada na representação da figura acima, é que nunca podemos atingir os três pilares em sua totalidade dentro de um sistema. A forma como foi elaborado permite que você tenha apenas dois dos pilares em evidência em seu sistema, ou seja, caso selecione dois pilares em seu sistema, o terceiro ficará enfraquecido. Disponibilidade e tolerância de partição. Fonte: elaborada pelo autor. ______ 🔁 Assimile O Teorema CAP consiste em três pilares: consistência, disponibilidade e resiliência (tolerância a falhas). Seu sistema só poderá ter foco em dois deles, e o terceiro será enfraquecido. Por exemplo: se optar por consistência e disponibilidade, seu sistema terá menor resiliência. E assim ocorre em todas as suas combinações e possibilidades. ______ Desempenho Aumentar o desempenho de um sistema também é um objetivo dos sistemas distribuídos. Se fizermos uma comparação, os sistemas distribuídos, na maioria dos casos, apresentam melhor desempenho do que os sistemas centralizados. Isto ocorre porque, em um sistema distribuído, temos múltiplas instâncias, tanto de hardware quanto de software, para realizar o processamento necessário. Como podemos medir esse desempenho? Conforme Coulouris et al. (2013, p. 83), podemos utilizar como parâmetros: · Tempo de resposta do servidor. · Throughput (taxa de transferência). · Quantidade de recursos consumidos pela rede. · Resultados de benchmarks (execução do sistema). · Tempo de transmissão dos dados. Com os resultados das medições dos parâmetros listados, podemos identificar se o sistema distribuído é satisfatório. Importa destacar que os sistemas distribuídos são mais utilizados em arquiteturas do tipo cliente-servidor, as quais apresentam recursos compartilhados (tanto a nível de hardware quanto a nível de software), a fim de permitir que milhares de clientes tenham acesso a esses recursos e possam utilizá-los como se houvesse uma comunicação direta entre as máquinas e o cliente. ______ 📝Exemplificando A maioria dos jogos multijogadores on-line atuais utiliza a arquitetura cliente-servidor para seu funcionamento. Esse tipo de jogo também é um exemplo de sistema distribuído. Imagine um jogo on-line de guerra em que você é o jogador X e está enfrentando seu amigo, que é o jogador Y. Você, na verdade, tem três avatares dentro de uma sessão de jogo: o primeiro é o avatar que você está controlando e visualizando em seu dispositivo; o segundo é chamado de imagem autoritária, isto é, a cópia de seu avatar feita pelo servidor do jogo, a qual será enviada para que os outros jogadores possam te “enxergar” dentro do jogo; esse segundo avatar, ao ser enviado aos outros jogadores, funciona como o terceiro avatar, que será visualizado, por exemplo, no jogo do seu amigo. Logo, você movimenta o seu avatar e a sua posição é enviada ao servidor, o qual gera uma cópia com seu posicionamento e transfere-a para o jogador Y. Com isso, temos a arquitetura cliente-servidor em funcionamento. Exemplo de jogo multijogador on-line. Fonte: Shutterstock. Middleware, computação em cluster e computação em grid As redes estão por toda parte e servem de base para muitos serviços cotidianos que agora consideramos naturais, por exemplo, a internet e a World Wide Web associada a ela, a pesquisa na web, os jogos on-line, os e-mails, as redes sociais, o e-commerce, etc. (COULOURIS et al., 2013). Os sistemas distribuídos podem ser considerados como uma solução mais robusta em resposta aos sistemas puramente de rede, isso graças ao componente conhecido como middleware. Ele é um dos fatores principais para o bom funcionamento de aplicações distribuídas. Middleware é uma camadaoculta, um software, o qual se encontra entre os sistemas operacionais e os aplicativos (programas criados) que são executados neles. Portanto, é uma camada central, que permite o gerenciamento e a comunicação de dados para o funcionamento de aplicativos distribuídos. O middleware funciona como uma camada de tradução para interligar o sistema operacional com os programas (COULOURIS et al., 2013). A figura abaixo ilustra as camadas que compõem um sistema distribuído. Camadas que compõem um sistema distribuído. Fonte: elaborada pelo autor. Alguns exemplos são: middlewares de banco de dados e servidores WEB e ferramentas de mensageria. As mais diversas redes sociais que utilizamos hoje em dia, com conteúdos multimídias, são exemplos de sistemas distribuídos, assim como sites de pesquisas e plataformas de vídeos on line. A figura abaixo ilustra um exemplo da atuação da camada middleware perante diferentes computadores (máquinas), aplicações e sistemas operacionais. Podemos observar que ela liga aplicações A, B e C com os sistemas operacionais 1, 2, 3 e 4. Essas aplicações e sistemas operacionais estão em diferentes computadores (1, 2, 3 e 4). Eles interagirão entre si para a execução de um sistema distribuído, e isso só é possível devido à camada do sistema distribuído, chamada middleware. Middleware e sistemas distribuídos. Fonte: elaborada pelo autor. ______ 🔁Assimile Em uma aplicação escrita em diferentes máquinas, com sistemas operacionais diferentes, é necessária a comunicação entre essas máquinas. Cada uma delas fornece a própria representação de dados e formas de comunicação e, nesse caso, o middleware atua como uma camada de tradução para que seja possível a comunicação correta entre as máquinas para o funcionamento do sistema. ______ Computação em cluster e computação em grid Os sistemas distribuídos podem ser classificados em diferentes categorias, de acordo com sua arquitetura e finalidade, sendo os mais comuns: computação em cluster e computação em grid. Cluster Agora, falaremos um pouco sobre algumas características da computação em cluster. Esse tipo de computação é formado por um conjunto de máquinas com hardwares semelhantes, ou seja, as máquinas que compõem o cluster possuem características homogêneas (TANENBAUM; STEEN, 2017). O conjunto de máquinas que compõem o cluster são ligadas por rede local (LAN). Quando falamos da parte de software da computação em cluster, temos algumas características importantes. Na maioria das vezes, o sistema operacional entre as máquinas que formam o cluster é equivalente. Além disso, é frequente que um único programa funcione de forma paralela, ou seja, um programa é subdividido em partes menores, e cada parte é executada em uma máquina (ou nó) desse cluster, de forma distribuída, a fim de obter um aumento significativo de desempenho e, consequentemente, executar determinada tarefa em menos tempo. Geralmente, as máquinas desse tipo de sistema são fortemente acopladas em suas ligações e, muitas vezes, podem até compartilhar a mesma memória RAM entre várias máquinas. Há sempre uma das máquinas que chamamos de nó mestre, isto é, a máquina principal que gerencia o funcionamento da aplicação entre todos os nós. O nó mestre faz a interface com o usuário, aloca tarefas e administra a fila de tarefas. A figura abaixo ilustra um cluster, que se encontra dentro do círculo pontilhado. Exemplo de cluster. Fonte: elaborada pelo autor. Grid Agora que já conhecemos a computação em cluster, falaremos da computação em grid, ou grades, e apontaremos algumas características. Conforme Tanenbaum e Steen (2008), esse tipo de computação é formado por um conjunto de máquinas com características diferentes, podendo o hardware e os sistemas operacionais serem de fabricantes diferentes. Com isso, temos uma característica heterogênea na computação em grid: essencialmente, um sistema de computação em grid interliga vários clusters. Um exemplo de grid é o CINEGRID, que trabalha no desenvolvimento de ferramentas colaborativas multimídia (CINEGRID BRASIL, [s.d.]). Na Figura 3.10, vemos uma parte desse grid, com as ligações entre clusters no Brasil; mas saiba que o CINEGRID interliga outros centros de pesquisa, em várias partes do mundo. Exemplo de grid - CINEGRID. Fonte: CINEGRID BRASIL ([s.d.], [s.p.]). Diferenças entre clusters e grids Muitas vezes, pode parecer que clusters e grids são a mesma coisa, mas existe uma característica fundamental que difere esses dois tipos de sistemas distribuídos. Para facilitar o entendimento das diferenças entre eles, podemos pensar que clusters são sistemas homogêneos, ou seja, são criados para executarem alguma tarefa específica que, em geral, necessita de um alto poder de processamento e, portanto, levaria muito tempo para ser executada em um computador convencional. ______ 📝 Exemplificando Um exemplo de tarefa que leva muito tempo para ser executada é o treinamento de redes neurais artificiais de aprendizagem profunda (deep learning) para uso em ferramentas de chat on-line. Nesse tipo de aplicação, os chamados bots – que, nesse caso, são o resultado da rede neural treinada – conversam com e respondem a questionamentos dos clientes (usuários) do serviço de chat on-line de uma determinada empresa. Recentemente, muitos sistemas bancários têm utilizado esse tipo de recurso. Supondo que para executar o treinamento desse tipo de rede em computador convencional seriam necessários dois dias, ao executarmos essa tarefa em um cluster, esse treinamento poderia ser realizado em questão de minutos. ______ Para diminuirmos o tempo de processamento, poderíamos executar esse tipo de tarefa (treinamento de redes neurais artificiais de aprendizagem profunda) em um computador com alto poder de processamento, porém o custo desse tipo de computador pode tornar essa opção inviável. Segundo o Lawrence Livermore National Laboratory (2018), o sequoia é utilizado para realizar simulações numéricas referentes à física de armas nucleares. Assim sendo, este computador é um cluster homogêneo, visto que executa uma pesquisa de finalidade específica. Por sua vez, podemos pensar que os grids têm uma abordagem heterogênea, ou seja, são criados para executarem diferentes tarefas, de certa maneira relacionadas entre si, formando um centro de pesquisas de caráter multidisciplinar. Uma maneira ainda mais simples de entender essa característica é “pensar” em um grid como um conjunto de dois ou mais clusters, cada um deles responsável por um certo tipo de pesquisa. Arquitetura descentralizada Na arquitetura descentralizada, os computadores são os próprios servidores da aplicação (serviço ou recurso a ser compartilhado), o que se assemelha à arquitetura ponto a ponto. Entretanto, diferentemente do que ocorre na arquitetura ponto a ponto, o estado da aplicação (por exemplo, os valores atuais das variáveis utilizadas na tal aplicação) é replicado entre todos os computadores na rede, de maneira que exista um chamado consenso entre os computadores nessa rede. Há, ainda, a possibilidade de que alguns computadores simplesmente utilizem a aplicação (em vez de serem servidores desta), tendo o papel puramente de “clientes” nesse caso, o que remete à arquitetura cliente-servidor. Essa é a arquitetura utilizada pelas plataformas baseadas em blockchain, e tem se tornado mais popular após a advento do bitcoin. Aplicações que funcionam sobre esse tipo de plataforma são chamadas de dApps (do inglês, decentralized application). Uma das principais vantagens ao utilizar esse tipo de arquitetura é a de que não há uma entidade que controle sua aplicação, como tipicamente ocorre nas arquiteturas cliente-servidor. Por exemplo, seus e-mails do Gmail são controlados pelo Google, que armazena os dados e poderia, hipoteticamente, acessar dados privados ou decidir encerrar seus serviços – situação na qual você estaria impossibilitado de optar por decisão contrária, caso não seja um acionista da empresa. Na arquitetura descentralizada, há uma garantia de transparência aos usuários de uma determinadaaplicação, uma vez que a aplicação e seus dados são armazenados por computadores dos próprios usuários que participam da rede, e não por uma empresa somente. Exemplos desse tipo de arquitetura podem ser vistos em qualquer sistema de transações financeiras das chamadas criptomoedas (como o próprio bitcoin), mas não se limita apenas a esse tipo de aplicação. Um exemplo é a Steemit, aplicação de rede social similar ao Twitter, porém faz uso da arquitetura descentralizada. 📝Exemplificando Conforme podemos observar na figura acima, a BlockChain validadora de transações é a principal tecnologia por trás do universo das criptomoedas, que tem o bitcoin como sua principal moeda. De uma maneira simples, a BlockChain pode ser considerada um livro compartilhado e distribuído, no qual todos os usuários dessa rede mantém uma cópia e todas as transações de moedas ficam registradas nessa rede. Portanto, esses registros são imutáveis e confiáveis. A BlockChain armazena essas informações, esse conjunto de transações, em blocos, carimbando cada um deles com um registro de tempo e data. A cada período de 10 minutos é formado um novo bloco de transações, o qual se liga ao bloco anterior. Os blocos são dependentes uns dos outros e formam uma cadeia de blocos. Isso torna a tecnologia perfeita para o registro de informações que necessitam de confiança, como no caso de uma transação de moeda. A rede do BlockChain é formada por mineradores que verificam e registram as transações no bloco. Ao invés dessas informações ficarem armazenadas em um computador central, no BlockChain, essa mesma informação fica armazenada em milhares de computadores espalhados pelo mundo inteiro, um claro exemplo de aplicação distribuída. Cada computador da rede fica com uma cópia integral do banco de dados, o que torna as informações inseridas nele extremamente seguras e confiáveis, porque não há um ponto único de ataque. Logo, não podemos ir a um computador central do BlockChain e roubar os registros de transações e modificá-los, porque cada computador dessa rede possui um registro dessas informações. Se você tentar modificar o banco de dados de um computador, ele será expulso pelo restante da rede (BASSOTTO, 2018). Computação em nuvem e o papel da virtualização em sistemas distribuídos O termo computação em nuvem (do inglês, cloud computing) se refere a uma tecnologia que possibilita acessar recursos e serviços via internet, sem a necessidade de instalações de softwares em seu computador. Dessa forma, é permitido que os usuários façam acessos por meio de qualquer dispositivo, seja ele um computador ou telefone celular. ______ 📝Exemplificando Um exemplo de utilização de serviços em nuvem é quando você edita um trabalho da universidade utilizando o Google Docs e esse trabalho fica armazenado na nuvem. Outro exemplo é quando você escuta uma música no Spotify, ou até mesmo assiste a um filme no Netflix. Todas essas situações trazem um contato com a computação em nuvem. Elas têm em comum o fato de não exigirem nenhuma instalação nem consumirem recursos do seu dispositivo, todas são serviços on-line. Para acessá-los, só precisamos de um navegador e ter conexão com a internet. ______ A figura abaixo ilustra múltiplos dispositivos acessando a nuvem, a qual contém diversos tipos de dados. Cloud computing. Fonte: Shutterstock. O papel da virtualização em sistemas distribuídos Dois tipos de virtualização são muito úteis no contexto de sistemas distribuídos, conforme Coulouris et al. (2013): · Virtualização de redes. · Virtualização de sistemas. Os autores observam, muito adequadamente, que a vantagem da criação e utilização de redes virtuais advém do fato de que uma rede virtual específica para um determinado tipo de aplicação pode ser criada sobre uma rede física real, de forma que a rede virtual possa ser otimizada para aquela aplicação em particular, sem a necessidade de alterar as características da rede física. _______ 📝Exemplificando Imagine que você está desenvolvendo um sistema distribuído de um serviço de streaming de vídeo que, obviamente, é composto por vários elementos, como banco de dados, servidor web, servidor de e-mail, servidor de autenticação, etc. Supondo que o arquiteto de sistemas da empresa optou por utilizar dois bancos de dados diferentes: um para armazenar informações gerais, como dados dos assinantes, datas de vencimento de assinaturas, etc., do tipo SQL; e outro para armazenar os vídeos em si, com características mais adequadas para otimizar a troca de informações, do tipo NoSQL. Esses dois bancos de dados não precisam (e, por questões de segurança, nem devem) saber da existência um do outro. Para atingir esse objetivo, tipicamente as empresas criam duas redes virtuais dedicadas, de forma que, além de estarem isoladas entre si, podem ser otimizadas de acordo com a natureza do banco de dados, prevalecendo a comunicação de segmentos UDP para o banco de dados NoSQL, por exemplo, em detrimento aos segmentos TCP. _______ Para Coulouris et al. (2013), a virtualização de sistemas é uma alternativa interessante por permitir emular o hardware de uma máquina física, permitindo que várias máquinas virtuais, cada uma com um sistema operacional, possam coexistir e se comunicar. Os autores ainda salientam que a principal vantagem da virtualização de sistemas está no fato de que aplicações já escritas e validadas, as quais dependem de um sistema operacional em específico, que necessitam se comunicar e interagir com outra aplicação em um sistema operacional diferente, podem assim fazê-lo através da virtualização dos sistemas operacionais, sem a necessidade de que a aplicação seja reescrita novamente ou recompilada. _______ 💭Reflita Pense na seguinte situação: na empresa que você trabalha, o sistema de planejamento de recursos, conhecido simplesmente por ERP (do inglês, Enterprise Resource Planning), utiliza um módulo de controle de estoque escrito pelo próprio time de desenvolvedores de sua empresa, na linguagem Asp.NET, que, por sua vez, utiliza funcionalidades específicas da plataforma Windows, não sendo 100% compatível com alternativas, como o .NET Core (recentemente aberto para a comunidade). Para economizar os gastos e, principalmente, aumentar a disponibilidade do sistema ERP utilizado pelos colaboradores da empresa, suas filiais e seus representantes comerciais, o Diretor Executivo, ou CEO (do inglês, Chief Executive Officer), decide migrar para uma solução em nuvem, de algum provedor de cloud computing de mercado. Por questões financeiras, o Diretor de TI, ou CIO (do inglês, Chief Information Officer), opta por utilizar um sistema operacional GNU/Linux. Como fazer para adaptar o módulo de controle de estoque? Reescrever o código seria uma opção, mas os desenvolvedores que fizeram esse módulo já não trabalham mais na empresa, e o código é muito extenso e complexo, o que significa que sua reescrita impactaria em um aumento significativo de tempo até que o “novo” ERP esteja disponível. Qual seria sua solução para esse problema? _______ Se você já utilizou ou leu a respeito de computação em nuvem, deve saber que, independentemente do tipo de serviço que você contrata e do provedor desse serviço, você já estará utilizando a virtualização em algum nível. Esses serviços são tipicamente categorizados como IaaS (do inglês, Infrastructure as a Service), PaaS (do inglês, Platform as a Service) e SaaS (do inglês, Software as a Service). Para entender melhor essa ideia, veja figura a seguir. Serviços em nuvem e níveis de virtualização. Fonte: elaborada pelo autor. Sincronização de relógios Sistemas formados por múltiplos computadores necessitam sincronizar suas ações entre si, e uma das maneiras mais utilizadas, dada sua simplicidade e popularidade, é A sincronização horária, por meio do protocolo conhecido como Network Time Protocol (NTP) (NTP, 2018). Esse protocolo, por sua vez, utiliza o protocolo de transporte de dados User Datagram Protocol (UDP), operando na porta 123. Essencialmente, esse protocolo é utilizado para sincronizaçãodo relógio das máquinas locais (desktops, notebooks, servidores) e demais dispositivos de rede. A referência horária é dada por sistemas de altíssima precisão, como os relógios atômicos (NTP, 2018). Dada a precisão desses sistemas, computadores conectados a eles pertencem a uma camada de servidores chamada de estrato 1 (os sistemas de alta precisão em si pertencem a uma camada topológica chamada de estrato 0). Segundo NTP (2018), como não existem muitos servidores no mundo conectados diretamente a relógios atômicos, outros servidores são conectados aos de estrato 1, os quais, por sua vez, formam uma segunda camada de servidores de horário, chamada de estrato 2, e essa hierarquia se estende até os servidores de estrato 15, conforme podemos ver na figura abaixo. Os computadores dos usuários são configurados para atualizarem a informação horária por meio da rede, consultando servidores de estratos com valores mais altos. Sistema de servidores NTP. Fonte: elaborada pelo autor. Aqui no Brasil, por exemplo, temos o Observatório Nacional (ON), que é o órgão oficial responsável pela geração, conservação e disseminação da Hora Legal Brasileira. Um aspecto muito interessante do protocolo NTP é que ele é projetado para verificar a latência (atraso, delay) entre a máquina cliente e a máquina servidora, e a implementação disso é muito simples: essencialmente, de tempos em tempos, a máquina cliente faz uma consulta a um servidor NTP para verificar em quanto seu relógio está atrasado (ou adiantado) em relação ao servidor horário de referência, processando a seguinte operação: (t4 - t1) - (t3 - t2) em que t1 é a hora, minuto, segundo e milésimos de segundo (também chamada de timestamp) da máquina cliente ao enviar uma requisição (através de um pacote, no contexto de redes de computadores) para o servidor NTP; t2 é o timestamp do servidor ao receber essa requisição; t3 refere-se ao timestamp em que um pacote de resposta a essa requisição é enviado ao cliente; e t4 é o timestamp em que o cliente recebe a resposta do servidor NTP. Esse cálculo, portanto, resulta em quanto o sistema operacional deverá atrasar (ou adiantar) o relógio da máquina local para que ela esteja sincronizada com a referência horária em questão, por exemplo, a Hora Legal Brasileira, em nosso caso. Um exemplo desse processo é ilustrado na figura a seguir. Exemplo de sincronização através do protocolo NTP. Fonte: elaborada pelo autor. Alguns serviços, como os de acesso remoto e de autenticação de usuários, podem não funcionar adequadamente, caso haja uma diferença muito grande no horário da máquina cliente (solicitante) em relação à máquina servidora (que roda e disponibiliza o serviço). Por esse motivo, é muito importante saber como habilitar a sincronização horária das máquinas utilizando o NTP. A configuração, bem como suas etapas, varia entre os sistemas operacionais e entre suas versões. 📝Exemplificando Um exemplo utilizando um sistema operacional Windows 10 a partir do procedimento a seguir: 1. Abra o Prompt de Comando (CMD), que pode ser acessado pelo menu iniciar, ou pelo campo de busca, digitando prompt ou cmd. 2. Na janela do CMD, insira o código a seguir e pressione a tecla “Enter”: w32tm /config /syncfromflags:manual /manualpeerlist:0.pool.ntp.org Apontando para o servidor NTP. Fonte: captura de tela do Prompt de Comando do Windows 10. Na figura abaixo, podemos observar que, ao final do comando, aparece a mensagem “O comando foi concluído com êxito”. Lembre-se: para executar os comandos, você deve estar como um usuário Administrador ou executar o CMD como Administrador. Agora que fizemos o apontamento para o servidor NTP que utilizaremos, devemos reiniciar o serviço de data e hora para aplicar as alterações. 3. Utilize os comandos net stop w32time e net start w32time para parar o serviço e iniciar, reiniciando-o, conforme podemos observar na figura a seguir: Reiniciando o serviço de data e hora. Fonte: captura de tela do Prompt de Comando do Windows 10. Após isso, forçaremos uma sincronização de data e hora para verificarmos se está tudo funcionando corretamente. Force uma sincronização por meio do comando w32tm /resync /rediscover, conforme observamos na figura a seguir: Sincronizando data e hora. Fonte: captura de tela do Prompt de Comando do Windows 10. Por meio da saída da figura acima, podemos observar a mensagem que será dada, informando que nossa configuração foi feita com sucesso. Um dos clientes da startup de tecnologia que você trabalha mostrou que a aplicação desenvolvida por sua empresa não está funcionando corretamente, porém você notou que isso ocorre pela falta de sincronismo entre os relógios de duas máquinas do cliente. Para que o cliente consiga fazer o procedimento nas máquinas que não estão sincronizadas, seu chefe solicitou a criação de um relatório técnico com os comandos necessários, passo a passo, para que o próprio cliente sincronize a máquina com as demais. Para ajudá-lo, ele informou que o sistema operacional da nova máquina é Windows. A primeira informação relevante para o relatório é o sistema operacional, pois, dependendo da escolha, o processo de configuração se difere. Nesse caso, você deixará registrado como configurar para o sistema Windows. A segunda informação importante no seu relatório é o conceito de servidor NTP, portanto, usando suas palavras e ilustrações, inclua esse item no documento. Agora vem a parte mais desafiadora para quem não tem familiaridade com o mundo da tecnologia: realizar a configuração da data e hora por meio dos comandos necessários. Para que tudo funcione corretamente, é preciso que o servidor NTP esteja instalado em todos os equipamentos, inclusive naquele que fará a configuração. Faça a configuração da seguinte forma: Abra o Prompt de Comando (CMD). Na janela do CMD, insira o código a seguir e pressione a tecla “Enter”: w32tm /config /syncfromflags:manual /manualpeerlist:0.pool.ntp.org. Utilize os comandos net stop w32time e net start w32time para parar o serviço e iniciar, reiniciando-o. Force uma sincronização através do comando w32tm /resync /rediscover. Com isso, fizemos o apontamento, reiniciamos o serviço e verificamos se a data e a hora estão sincronizadas. Que tal impressionar seu cliente e complementar seu relatório realizando uma pesquisa sobre a configuração para o sistema operacional Linux? Continue firme em seus estudos, pois ainda vem muita coisa interessante e útil pela frente. Assim finalizamos esta aula. Esperamos que o conhecimento adquirido seja de importância para seu crescimento profissional. Bons estudos e até a próxima! Introdução da aula O avanço da tecnologia utilizada em processadores tem permitido a geração de processadores para dispositivos cada vez menores, como smartwatches. Os smartphones possuem uma grande capacidade de processamento, permitem o acesso à internet e a execução de jogos e de vários outros aplicativos que demandam uso de processamento. Os notebooks e desktops também possuem processadores com múltiplos núcleos de processamento. Os sistemas operacionais são adaptados e atualizados periodicamente, para adquirir a capacidade de gerenciar essas alterações nos processadores. E quanto aos sistemas web, você sabe como devem ser implementados para utilizar essa capacidade de processamento? O processamento sequencial é suficiente para utilizar mais de um núcleo de processamento? Esta aula nos leva a refletir sobre como os sistemas distribuídos estão inseridos neste contexto de avanço das tecnologias e como os sistemas web são desenvolvidos. Os conceitos de processos e threads são utilizados para permitir a implementação de sistemas que melhor utilizem o processamento dos núcleos de processamento, que podem estar em uma mesma máquina ou em máquinas remotas. Quando os processos são executados em máquinas remotas, a comunicação torna-se necessária para realizar a troca de informação entre eles. Essa comunicação pode ocorrer somente entre dois processados ou entre todos os processos de um grupo. Sistemas web, como comércio eletrônico,correio eletrônico, máquinas de busca, entre outros, são exemplos de sistemas distribuídos. Eles possuem o lado do cliente (o usuário), que requisita um serviço, e o lado do servidor, que processa a requisição e devolve a resposta para o cliente. Mas, você sabe como ocorre essa “conversa” entre cliente e servidor em termos de sistema web? Será que cliente e servidor estão executando na mesma máquina ou em máquinas diferentes? O cliente é um processo, e o servidor, outro processo. Eles podem executar em uma mesma máquina ou em máquinas remotas. Considerando o exemplo de um sistema de máquina de busca, por exemplo, o buscador Google, você pode se interessar pela busca na internet por páginas com ocorrências do termo “pulseira inteligente”. Ao abrir um navegador na sua máquina (smartphone, notebook, desktop, servidor, entre outros), iniciará a execução de um processo. Ao digitar o termo e pedir para buscar, esse processo comunica-se via rede com um processo servidor, que estará em uma máquina remota e fará a busca de todos os endereços de páginas na internet onde o termo está ocorrendo. Em seguida, a resposta da busca retornará para o cliente (sua máquina). Para que todo o processamento seja realizado de forma rápida, várias máquinas são consultadas, as quais guardam informações e possuem processos executando para recuperar a informação. A comunicação entre dois processos (cliente e servidor) via rede ocorre através de uma interface de software denominada socket, que é uma interface entre a camada de aplicação e a de transporte. Um processo envia uma mensagem, a qual é empurrada via socket pela rede e chega ao outro processo, que a lê e realiza alguma ação. Para saber o caminho a ser percorrido na rede, o socket leva ao endereço do processo destino. Após a troca de várias mensagens, os sistemas web conseguem atender o usuário, gerando a informação solicitada, permitindo concluir uma compra on-line, realizar uma conversa entre duas ou mais pessoas, entre outras ações. Imagine que você foi contratado como trainee de uma empresa de transportes de mercadorias que atua em todo o Brasil. Essa empresa possui mais de 200 colaboradores, sendo 100 deles motoristas de caminhão. Foi atribuída a você a tarefa de auxiliar a equipe de desenvolvimento na elaboração de uma solução utilizando os conceitos de processos, threads e sockets, a fim de implementar um chat (aplicação de conversação) que permita que os motoristas troquem mensagens de texto. Neste contexto, elabore um relatório que responda a todas as questões a seguir e, após isso, crie uma apresentação da solução do problema: 1. Como você implementaria o chat no modelo cliente-servidor? 2. Para qual tipo de dispositivo deve ser implementada a parte da aplicação que tem o processo cliente? E para o processo servidor? 3. Como poderá ser implementada a comunicação realizada entre os colaboradores? Pense na linguagem de programação, na biblioteca ou API e como coordenar a troca das mensagens. Como o servidor poderá ser implementado para atender a um número maior de conexões? O entendimento sobre o funcionamento dos sistemas web, como os processos se comunicam e como implementar sistemas mais eficientes utilizando esses conhecimentos é de fundamental importância na formação do analista de sistemas. Portanto, vamos nos aprofundar um pouco mais nesses conceitos. Bons estudos! Processos e threads Os processadores atuais possuem mais de um núcleo de processamento e estão presentes em smartphones, notebooks, desktops, servidores, pulseiras inteligentes, entre outros. A utilização dos núcleos de processamento depende de como o sistema operacional escalona os programas para utilizá-los. Desta forma, a elaboração dos algoritmos precisa ser adaptada de forma que o sistema operacional consiga escalonar parte das computações para mais de um núcleo de processamento ao mesmo tempo e use os recursos de forma mais eficiente. Portanto, os conceitos de processos e threads são importantes para permitir a descrição de algoritmos que funcionem de forma eficiente. Em sistemas operacionais, um conceito muito importante é o de processo, o qual é definido como um programa em execução, e threads que são fluxos ou linhas de execução dentro de um processo (TANENBAUM; BOS, 2016). Como exemplo de processo, podemos considerar um editor de texto executando em um desktop ou um aplicativo de calendário executado em um smartphone. Um processo possui um espaço de endereçamento de memória que armazena o código executável, os dados referentes ao programa, a pilha de execução, o valor do contador de programa, o valor do apontador de pilha, os valores dos demais registradores do hardware e outros recursos, como informações sobre processos filhos, arquivos abertos, alarmes pendentes, tratadores de sinais, entre outras informações necessárias para a execução do programa. Muitas vezes, a construção de software usando um único processo pode não ser eficiente na utilização dos núcleos de processamento disponíveis nos processadores atuais, pois apenas um núcleo de processamento é utilizado. Por isso, existe a necessidade de construir aplicações paralelas e distribuídas, que permitam a execução simultânea de processos e/ou threads, deixando o software com execução mais rápida. O ato de gerenciar e executar múltiplas computações ao mesmo tempo, seja por troca de contexto no uso do núcleo de processamento ou pelo uso de diferentes núcleos de processamento é denominado concorrência. Por exemplo, uma máquina com processador contendo quatro núcleos de processamento executando dez programas diferentes necessita que o sistema operacional escalone fatias de tempo para que todos os programas consigam utilizar os núcleos de processamento por meio de revezamento. Estes programas estarão executando de forma concorrente, dando ao usuário a impressão de que cada programa está utilizando os recursos do computador de forma dedicada. Quando há execução de computações simultaneamente em diferentes núcleos de processamento, tem-se paralelismo. Assim, processos e threads podem ser executados de forma concorrente e paralela. Por exemplo, um navegador com duas abas abertas, cada aba sendo um thread executado em um núcleo de processamento diferente, representa uma situação de execução paralela. Um processo pode possuir um ou mais threads, permitindo que um programa execute mais de um trecho de código simultaneamente. Cada thread é um fluxo de controle sequencial isolado dentro de um programa capaz de utilizar CPU (Central Processing Unit). É composto de identificador (ID) de thread, contador de programa, conjunto de registradores e uma pilha de execução. Cada thread pode compartilhar com outros threads pertencentes ao mesmo processo a sua seção de código, seção de dados e outros recursos do sistema operacional, arquivos abertos e sinais. A figura abaixo ilustra cinco possíveis situações em que existem processos e threads sendo executados em um notebook. (A) Notebook executando um processo com um thread; (B) Notebook executando quatro processos com um thread cada; (C) Notebook executando um processo com quatro threads; (D) Notebook executando quatro processos com dois threads por processo; (E) Sistema distribuído com dois notebooks executando vários processos e threads. Fonte: elaborada pelo autor. Na imagem (A), há um processo com um único thread executado. O conjunto de instruções desse processo é executado de forma sequencial. Por exemplo, um programa que calcula a soma das notas inseridas pelo professor. A imagem (B) apresenta quatro processos, cada um com um único thread, e os processos podem executar simultaneamente em núcleos de processamento, de acordo com escalonamento do sistema operacional. Já na imagem (C), há um processo com quatro threads, e cada thread possui seu fluxo de controle, que pode ser executado concorrentemente a outros threads, pois há um único núcleo de processamento. Por exemplo, um programa que realiza a soma de um conjunto de dados, distribuindo os dados entre cada thread para que haja a soma parcialsimultânea da porção de dados recebido e, por fim, realiza a soma total. Vários processos com vários threads por processo são ilustrados na imagem (D), gerando a execução de vários fluxos de controle ao mesmo tempo e executando em núcleos de processamento diferentes. Por exemplo, vários programas, como navegador e editor de texto, , executando em um computador com quatro núcleos de processamento. Por último, na imagem (E), tem-se um sistema distribuído composto por máquinas interligadas via um switch. Cada máquina pode ter mais de um processo executando mais de um thread. Os sistemas distribuídos são construídos sobre sistemas operacionais e utilizam processos e threads para realizar a execução de um programa. A comunicação entre os processos e/ou threads precisa ser realizada de forma especial, usando bibliotecas específicas. Na paralelização de um programa utilizando threads que executam em uma mesma máquina, podem ser utilizadas bibliotecas, como OpenMP (OPENMP, 2021) ou Pthreads (Posix Threads) (BARNEY, 2021). Os programas podem ser desenvolvidos para serem executados utilizando mais de um processo e em máquinas remotas. A comunicação entre os processos deve utilizar bibliotecas de troca de mensagens, como Message Passing Interface (MPI) (OPENMPI, 2021) e de sockets, assunto que será abordado posteriormente. Você sabia que os programas que coloca para executar no seu notebook, no seu desktop ou mesmo no seu smartphone são processos? Mas, como pode-se criar um novo processo e finalizar (término de um processo)? A criação de processos pode ocorrer em uma das seguintes situações: · Pelo usuário, para iniciar a execução de um programa (via linha de comando ou duplo clique no mouse). · Por funções específicas que independem do usuário (chamadas de serviços (daemons) ou executando em background sem intervenção do usuário), por exemplo, na recepção e no envio de e-mails, serviços de impressão, etc. · Usando chamadas de sistema dentro de um programa. Nos sistemas operacionais UNIX e Unix-like (como o Linux), os processos são criados utilizando a chamada de sistema fork(). No sistema operacional Windows, a criação ocorre pela chamada CreateProcess() (TANENBAUM; STEEN, 2007). O término de processos pode ocorrer de algumas formas. Uma delas é quando o programa termina sua execução pela chamada exit no sistema operacional Unix-like, e ExitProcess no sistema operacional Windows; por algum erro ocorrido que não permitiu que o processo pudesse ser finalizado ou por um erro fatal; causado por algum erro no programa (bug), como divisão por 0 (zero), referência à memória inexistente ou não pertencente ao processo e execução de uma instrução ilegal (TANENBAUM; STEEN, 2007). Dentro de um processo, poderá existir tarefas que podem ser executadas de forma concorrente utilizando melhor os núcleos de processamento. A execução dessas tarefas pode ser realizada utilizando threads, que são escalonadas pelo sistema operacional para utilizarem os núcleos de processamento. A decisão de quando criar threads dentro de um processo depende de quais características o problema que está sendo resolvido possui, ou seja, suas subtarefas. Assim, podem ser criadas quando há subtarefas que possuem potencial de ficarem bloqueadas por um longo tempo; usam muitos ciclos de CPU; devem responder a eventos assíncronos; tenham importância maior ou menor do que outras tarefas e podem ser executadas em paralelo com outras tarefas. ______ 📝Exemplificando A criação de processo nas linguagens C/C++ é realizada no Linux com a chamada de sistema fork, utilizando duas bibliotecas: sys/types.h e unistd.h. Essa chamada de sistema deve ser inserida no código implementado pelo usuário, que, ao ser compilado e executado, gera uma chamada ao sistema operacional, o qual cria um processo filho com um número identificador único. O processo que gerou a execução do programa é denominado processo pai, e o processo criado com a chamada fork() é denominado processo filho. No momento da criação, o processo filho é uma cópia do pai e possui os mesmos atributos dele (variáveis, descritores de arquivos, dados, etc.). Após a criação do processo filho, ele é executado, e o que acontece em um processo não ocorre no outro, são processos distintos agora, cada um seguindo seu rumo, tornando-se possível mudar o valor de uma variável em um e isso não alterará o valor desta variável no outro processo. A função fork( ) retorna um número identificador do processo (PID – Process Identification). No trecho de código executado pelo processo filho, PID tem valor igual a 0 (zero). Dentro do processo pai, PID tem valor igual ao identificador do processo filho, retornado pelo sistema operacional. A função fork( ) retorna valor menor do que 0, caso ocorra algum erro na criação do processo. A função getpid( ) retorna o valor do identificador do processo em execução. A seguir, apresenta-se um código, no qual é criado um processo filho com a chamada fork( ): Processos cliente-servidor O modelo cliente-servidor é o modelo de computação distribuída em que um programa é dividido em duas partes: servidor e cliente (COULOURIS et al., 2013.; KUROSE; ROSS, 2013). O servidor é executado em um processo, e o cliente, em outro processo diferente, que pode estar na mesma máquina ou em uma máquina remota. O servidor tem acesso direto ao recurso de hardware ou software que o cliente quer usar. Na maioria dos casos, o cliente está localizado em diferentes máquinas clientes. Tipicamente, há um relacionamento muitos-para-um entre o servidor e os clientes, isto é, há, geralmente, um servidor atendendo às requisições de muitos clientes. O servidor é o mediador do acesso a grandes bases de dados, a um recurso de hardware caro ou a uma coleção importante de aplicações. O cliente faz requisições para ter acesso a dados e obter o resultado de um cálculo e outros tipos de processamento. A figura a seguir ilustra o funcionamento de um sistema cliente-servidor, no qual há um conjunto de processos cliente enviando requisições para o processo servidor, que é o responsável por realizar as computações necessárias e responder aos clientes. Supondo que o servidor implementa a soma de dois valores, um cliente envia dois valores, e o servidor realiza a soma e retorna o valor resultante. Modelo cliente-servidor. Fonte: elaborada pela autora. Outro exemplo é uma máquina de busca no modelo cliente-servidor, que é usada para localizar informação na internet ou em intranets corporativas e organizacionais. Neste caso, o processo cliente é executado no navegador para obter a palavra-chave ou frase sobre o tema que o usuário está interessado. O processo cliente envia a requisição para o servidor. O processo servidor, por sua vez, realiza uma ampla busca pela palavra-chave ou frase do usuário, pois este tem acesso direto à informação ou a outros servidores que têm acesso à informação. Posteriormente, o servidor retorna as informações ao cliente. Embora os processos cliente e servidor sejam programas separados em computadores diferentes, eles trabalham em uma única aplicação. Quando o processo pode funcionar como cliente e servidor ao mesmo tempo, temos um sistema Peer-to-Peer (P2P). ______ 🔁Assimile No contexto de comunicação entre um par de processos, o processo que inicia a comunicação é o cliente, e o processo que espera pela requisição é o servidor. Na web, o navegador é o processo cliente, e o servidor web é o processo servidor (KUROSE; ROSS, 2013). Comunicação entre processos e em um grupo Após a criação dos processos, eles são executados de forma independente e possuem regiões de memória independentes. Entretanto, há aplicações que necessitam trocar dados (comunicação) entre processos ou entre threads. Para haver comunicação entre processos, é necessária a utilização de mecanismos específicos. O sistema operacional implementa “canais” de comunicação entre processos em um mesmo computador (tais canais podem ser implícitos ou explícitos) ou em computadores diferentes. A figura abaixo ilustra a comunicação entre doisprocessos, que estão em uma mesma máquina, gerenciados pelo mesmo sistema operacional. A comunicação entre processos através de chamadas de sistema pode ocorrer com o uso de pipes ou alocação de memória compartilhada. A próxima figura ilustra o processo 1 na máquina 1 se comunicando com o processo 2 na máquina 2 através de chamadas a funções de uma biblioteca de passagem de mensagens, como MPI. Processos em máquinas diferentes se comunicando por passagem de mensagens. Fonte: elaborada pela autora. O modelo de passagem de mensagens entre processos possui a operação básica send-receive. Outras operações de comunicação, como broadcast, reduction, scatter e gather, são derivadas da básica. A operação send-receive ocorre somente entre dois processos (figura abaixo). Um processo envia o dado e o outro processo recebe o dado. Operação send-receive. Fonte: elaborada pela autora. A operação de broadcast é uma operação entre um grupo de processos conhecidos. Consiste no envio de um dado presente em um processo para os demais processos do mesmo grupo. Operação broadcast. Fonte: elaborada pela autora. Na figura acima, o processo 1 envia o dado para os demais processos do mesmo grupo de processos. Ao final da comunicação, todos os processos do grupo conhecem o dado. Para implementar aplicações que utilizem a troca de mensagens entre processos, existem bibliotecas, como sockets, sobre as quais trataremos posteriormente, e MPI (Message Passing Interface) (OPENMPI, 2021; TANENBAUM; STEEN, 2007). MPI é um padrão de comunicação que permite a troca de mensagens entre processos pertencentes a um grupo de processos criado no início da execução do programa. Cada processo recebe um identificador único dentro deste grupo, facilitando a comunicação entre pares de processos ou grupo de processos. É possível identificar qual é o processo emitente e o receptor da mensagem. Dentro de um mesmo processo, é possível criar threads, que podem se comunicar através de troca de mensagens ou acesso à memória compartilhada. Na figura abaixo, há quatro threads executando em um mesmo processo. Esses threads compartilham memória e trocam informação através do acesso à memória compartilhada. Para gerenciar o acesso à memória compartilhada, são utilizadas bibliotecas, como OpenMP (OPENMP, 2021) e PosixThreads (BARNEY, 2021). Threads de um mesmo processo acessando a memória compartilhada. Fonte: elaborada pela autora. Conceitos de sockets A padronização da interface da camada de transporte permitiu que os protocolos de troca de mensagens sejam utilizados pelos programadores no desenvolvimento de aplicações que envolvam mais de uma máquina. Uma mensagem enviada de um processo para outro deve passar pela rede, e uma forma de realizar a implementação dessa comunicação é utilizando a interface de software denominada socket. É uma interface entre a camada de aplicação e o protocolo da camada de transporte. “Socket é um terminal de comunicação para o qual uma aplicação pode escrever dados que devem ser enviados pela rede subjacente e do qual pode ler dados que chegam.” (TANENBAUM; STEEN, 2007, p. 85). Comunicação entre dois processos via socket. Fonte: elaborada pela autora. A figura acima ilustra a comunicação utilizando socket entre dois processos de máquinas diferentes. A seta vermelha indica a origem e o destino da mensagem. Para que o Processo 2 receba uma mensagem do Processo 1, é necessário que a mensagem trafegue pela rede. Como o Processo 1 é o processo emissor, é necessário que, quando a mensagem for enviada por ele, contenha o dado, o endereço e o identificador do processo receptor da mensagem. Na camada de rede da internet, o endereço é fornecido pelo IP (Internet Protocol), que identifica a máquina destino de forma única. O identificador do processo receptor é um número de porta. Aplicações mais utilizadas possuem um número de porta padrão, como é o caso do servidor web, que é identificado pela porta 80, e o servidor de e-mail, pela porta 25. A interface socket pode utilizar os protocolos de transporte TCP (Transmission Control Protocol) ou UDP (User Datagrama Protocol). Sockets utilizando TCP/IP possuem as primitivas sintetizadas no quadro abaixo. Primitivas da interface socket para TCP/IP. Fonte: adaptado de Tanenbaum e Steen (2007, p. 85). · Uma chamada socket retorna um descritor de arquivo que será utilizado em outras chamadas. · A chamada bind designa um endereço para o socket no servidor. · A chamada listen aloca espaço para a fila de chamadas recebidas ao mesmo tempo. · Accept é utilizada para bloquear a espera por uma conexão de entrada. · Connect bloqueia o responsável pela chamada e inicia o processo de conexão. · Send e receive são usadas para transmitir e receber dados em uma conexão full-duplex. · Quando ambos os lados executarem close, a conexão será encerrada. A implementação de programas no modelo cliente-servidor envolve a implementação de um processo cliente e um processo servidor, que utilizam sockets para comunicação. Os serviços de ssh (secure shell) e ftp (file transfer protocol) são exemplos de implementações que utilizam sockets. O programa ssh é usado para realizar conexão entre duas máquinas e possui um processo cliente denominado ssh e um processo servidor denominado sshd (ssh deamon). O programa ftp é usado para transferência de arquivo entre duas máquinas e possui um processo cliente denominado ftp e um processo servidor denominado ftpd (ftp deamon). Os sockets TCP são orientados à conexão e têm um canal exclusivo de comunicação entre cliente e servidor. Uma aplicação que faz transações bancárias é um exemplo de aplicação que pode usar sockets TCP. Várias linguagens de programação, como Java, PHP e Python, fornecem socket ao desenvolvedor API, para facilitar o desenvolvimento das aplicações. ______ 💭Reflita Atualmente, existem muitos jogos que você pode jogar com seus amigos, por exemplo, Minecraft, League of Legends e Among Us. Você já pesquisou como são implementados esses jogos? Como um jogador é capaz de visualizar os movimentos do outro jogador? É necessária a criação de processos e threads? Há comunicação entre processos ou compartilhamento de dados entre threads? Você se lembra do desafio proposto no início da aula? Agora, acompanhe aqui a resolução. 1. A implementação do chat com mensagens de texto pode ser realizada utilizando sockets e um modelo de comunicação entre processos cliente-servidor. No contexto desta atividade, o cliente e o servidor poderiam ter as seguintes características: · · Servidor: é o processo que centraliza todas as mensagens (requisições) de clientes recebidas via socket. Tem como responsabilidade o envio de mensagem com resposta a cada requisição recebida. Quando uma requisição chega ao servidor, é criado um thread para atender àquela requisição. · Cliente: o usuário cria uma instância do processo cliente que faz uma requisição ao servidor via socket. Na requisição do cliente, são informados o endereço do servidor e a respectiva porta. O servidor do chat utiliza sockets e aguarda por conexões de clientes. A cada cliente que requisita uma conexão, é criado um novo thread para controle dele. O cliente é formado por um processo principal, o qual habilita o console para envio de mensagens, porém há um thread que aguarda por mensagens que venham do servidor, as quais vieram de outros clientes. 2. Para qual tipo de dispositivo deve ser implementada a parte da aplicação que tem o processo cliente? E para o processo servidor? A parte cliente da aplicação deve ser implementada para smartphone com acesso via navegador ou aplicativo instalado localmente, já que permite acesso mais fácil por motoristas. Para haver conexão com o servidor, o smartphone deverá ter acesso à internet por rede de dados celulares ou rede sem fio. A parte servidor da aplicação deverá ser implementada para uma máquina que tenha maior capacidade de processamento e que deverá executar em alta disponibilidade (24 horas por dia, 7 dias por semana). 3. Como poderá ser implementada a comunicação realizadaentre os colaboradores? Pense na linguagem de programação, na biblioteca ou API e como coordenar a troca das mensagens. A comunicação poderá ser implementada utilizando API de sockets da linguagem adotada pela empresa para desenvolvimento, como C++, Python ou Java. A troca de mensagens é realizada passando pelo gerenciamento do servidor que coordena a ordem das mensagens. 4. Como o servidor poderá ser implementado para atender a um número maior de conexões? O servidor poderá ser implementado usando vários threads de execução para atender às requisições dos clientes. Nesta aula, você aprendeu sobre a utilização de processos e threads no contexto de sistemas distribuídos, como ocorre a comunicação entre processos, processos cliente e servidor e sockets. Agora, você é capaz de entender melhor as aplicações existentes, identificar quais são cliente-servidor e aplicar estes conceitos em aplicações em desenvolvimento de forma a ter melhor desempenho. Bons estudos! Você já pensou em como os serviços de streaming de vídeo mais populares da atualidade conseguem suportar uma quantidade enorme de acessos simultâneos? Ainda, quando não há tanta demanda assim, será que empresas de grande porte mantêm ligados centenas de servidores mesmo que não estejam em uso? Já pensou no consumo de energia dessas máquinas ociosas? É exatamente nesta aula que você notará que entender sobre escalabilidade, neste caso, ajuda as empresas responsáveis por esses serviços a maximizarem seu faturamento, evitando uso desnecessário de recursos, sem comprometer a usabilidade e a consequente satisfação de seus clientes. Curioso para descobrir como? Então, daremos seguimento aos nossos estudos. Você esteve no papel de um arquiteto de sistemas de uma empresa que estava desenvolvendo um sistema distribuído para controle de manutenção preventiva de veículos e identificou os principais objetivos que esse sistema deve atingir. Agora, é o momento de avançar no projeto, pesquisando e apresentando frameworks atuais, utilizados por grandes empresas no segmento de serviços em TI, e garantir que o sistema esteja apto a ser comercializado. Prepare um relatório e uma apresentação com exemplos e descrições desses frameworks. É sempre bom unir a teoria estudada com as práticas do mercado de trabalho, para que sua formação seja o mais completa possível e, desta forma, você esteja preparado para pleitear as melhores oportunidades. Objetivos dos sistemas distribuídos, Abertura e Concorrência Os sistemas distribuídos, normalmente, possuem alguns objetivos para atender determinados requisitos. Alguns são considerados desafios importantes que os profissionais da área devem considerar. Segundo Tanenbaum e Steen (2008), esses objetivos são: · Abertura. · Concorrência. · Escalabilidade. · Heterogeneidade. · Segurança. · Tolerância a falhas. · Transparência. Entretanto, eles devem ser analisados mais como desafios a serem atingidos, uma vez que nem sempre o sistema distribuído conseguirá atingir todos de maneira integral. A seguir, descreveremos a que se refere cada uma dessas metas na visão de Tanenbaum e Steen (2008), embora os itens Segurança, Escalabilidade, Tolerância a Falhas e Heterogeneidade mereçam uma atenção especial. Abertura No contexto de sistemas distribuídos, refere-se a quanto o sistema é modularizado ou, em outras palavras, quanto é fácil integrar e alterar tecnologias e frameworks sem que o sistema seja comprometido. Você já deve ter ouvido falar em micro serviço, não é verdade? Esse nome é a maneira atual (hype) de dizer que o sistema possui uma grande abertura. Importante observar que, independentemente do que o termo "abertura" possa passar, é uma coisa positiva em sistemas distribuídos. É importante ter em mente esse conceito, pois, à primeira vista, um sistema mais "aberto" parece ser uma coisa negativa, no sentido de estar mais vulnerável a falhas e, na verdade, em sistemas distribuídos, isso não é verdade. Segurança não tem relação nenhuma com essa abertura, mas isso é um assunto a ser detalhado em uma próxima oportunidade. Por exemplo, se o sistema utiliza tecnologias não-proprietárias, dizemos que a abertura desse tal sistema é maior. Concorrência Refere-se à capacidade de o sistema poder ser acessado e utilizado de maneira simultânea, concorrente (ao mesmo tempo), por vários usuários. Aqui, cabe novamente a ressalva de que, no contexto de sistemas distribuídos, o termo concorrência não tem uma conotação negativa (como ocorre, por exemplo, no comércio), apenas refere-se a um sistema que dá suporte a acessos simultâneos. Por exemplo, várias pessoas podem acessar um website de comércio eletrônico, certo? Pois bem, isso é um acesso concorrente. Escalabilidade Escalabilidade é um termo comum em redes de computadores e está relacionado à capacidade de o sistema poder ser escalável, ou seja, ampliado ou reduzido para suportar, por exemplo, uma maior quantidade de acessos simultâneos ou realizar uma tarefa mais rapidamente (ao ampliarmos a capacidade de processamento desse sistema). Perceba como algumas metas podem estar inter-relacionadas nos sistemas distribuídos, como é o caso da escalabilidade e da concorrência. Por exemplo, quando uma empresa de games necessita aumentar a quantidade de servidores de um determinado jogo on-line para possibilitar uma maior quantidade de jogadores em uma partida multiplayer, ela está escalando o sistema (nesse exemplo, aumentando a escala dele). ______ 📝Exemplificando Imagine um site de comércio eletrônico no período de promoções, por exemplo, no dia da Black Friday. O sistema deverá ser escalável para permitir picos de acesso simultâneo, dessa forma, uma das maneiras é aumentar a quantidade de nós/servidores, para que não inviabilize o negócio, deixando o sistema indisponível. ______ Segundo Tanenbaum e Steen (2008), um sistema cujo desempenho aumenta com o acréscimo de hardware e software, proporcionalmente à capacidade acrescida, é chamado escalável. É importante notar, entretanto, que um sistema dito escalável permite que se aumente ou diminua a quantidade de recursos. Você deve estar se perguntando: por que eu diminuiria a capacidade do meu sistema? ______ 📝Exemplificando Imagine a seguinte situação: você criou uma aplicação web que distribui conteúdo em vídeo para preparar estudantes para fazerem a prova do ENEM. Você roda essa aplicação, de maneira replicada, em um conjunto de servidores em nuvem de algum provedor de cloud computing conhecido do mercado, digamos, com dez nós. Apesar de a ideia ser excelente, você nota que a quantidade de usuários que utiliza sua plataforma cai drasticamente entre os meses de novembro e junho, uma vez que os estudantes, normalmente, começam a se preparar para esse exame – que ocorre anualmente entre outubro e novembro – a partir de julho, quando estão de férias. Supondo que você paga para esse provedor de cloud computing R$ 150,00 mensais, para que este disponibilize os dez nós de maneira contínua. Não seria interessante que, nos meses de menor demanda, você diminuísse a quantidade de servidores pela metade, por exemplo, e pagasse a quantia de R$ 75,00 mensais nesse período? Nesse cenário, sua economia seria de R$ 600,00, que você poderia investir em outros projetos. Esse é um exemplo típico de escalabilidade “para baixo”. ______ Dentre os termos relacionados ao escalonamento, temos dois muito utilizados: escalonamento horizontal e escalonamento vertical. ______ 🔁Assimile O escalonamento horizontal possibilita o aumento de máquinas, tais como servidores, assim há uma divisão da carga de trabalho entre eles, não sobrecarregando um servidor específico. No sistema e-commerce, em que temos os picos de acessos dos clientes simultaneamente, esse tipo de escalonamento é muito utilizado em sistemas distribuídos e em nuvem. Já o escalonamento vertical permite aumentar recursos de processamento, como CPU e memória em máquinas existentes. Quando se deseja maior desempenho, ou na ocorrência de falhas de uma CPU, essa pode ser uma abordagem importante. ______ Doisaspectos importantes a serem levados em consideração em relação à escalabilidade são em termos geográficos e administrativos. Escalabilidade em termos geográficos refere-se ao sistema, o qual, apesar de se apresentar como único para o usuário, está rodando em várias réplicas, em dois ou mais data centers geograficamente distintos. Podemos, por exemplo, utilizar um determinado provedor de cloud computing que possua data centers no estado de São Paulo, no Brasil, e no estado do Arizona, nos EUA. A figura abaixo ilustra tal cenário. Exemplo de escalabilidade geográfica. Fonte: elaborada pelo autor. O benefício desse tipo de configuração é fornecer uma melhor experiência, em termos de conectividade e latência (atrasos na rede), para os usuários. Aqueles que estão mais próximos do Hemisfério Norte podem acessar a aplicação através dos data centers nos EUA, enquanto os usuários do Hemisfério Sul podem acessar a aplicação através dos data centers no Brasil. Outra vantagem é que, na ocorrência de um desastre, por exemplo, um furacão passar pelo Arizona, que comprometa o data center, todos os usuários poderão acessá-lo de outra localidade, incluindo os usuários mais próximos ao data center atingido (ainda que a usabilidade, do ponto de vista desses usuários, seja ligeiramente comprometida, devido a uma maior distância desse data center). Escalabilidade em termos administrativos, refere-se ao escopo administrativo, que é afetado pela escalabilidade geográfica e é um conceito bastante simples de ser compreendido, embora muitas vezes ignorado. Imagine que, no cenário da figura acima, os links de comunicação do lado dos EUA sejam fornecidos por provedores de internet daquela região, ao passo que os links de comunicação no lado do Brasil sejam fornecidos por provedores de internet daqui. Caso o link no lado dos EUA fique indisponível, não adiantará entrar em contato com o provedor de internet daqui do Brasil, pois é uma empresa diferente da que fornece o serviço nos EUA, administrativamente falando. Portanto, o escopo administrativo foi inerentemente ampliado, o que significa que o responsável pelo sistema distribuído terá mais trabalho para administrá-lo, incluindo, por exemplo, a necessidade de abrir um chamado de suporte técnico em outro idioma. ______ 📝Exemplificando A escalabilidade pode ser alterada, isto é, aumentada ou diminuída, de maneira automatizada, sem a intervenção do desenvolvedor, por meio de ferramentas, como Chef e Ansible. Podemos exemplificar a função de ambas as ferramentas em um cenário de um portal de notícias, que tem, durante a madrugada, baixa demanda de acessos. As ferramentas exercem o papel de diminuir automaticamente os recursos utilizados. Em outro exemplo, quando sai uma notícia muito esperada e os acessos ao portal sobem drasticamente, as ferramentas exercem o papel de aumentar os recursos disponibilizados para garantir o bom funcionamento. O termo heterogeneidade vem de heterogêneo, ou seja, algo desigual, que apresenta estrutura, função ou distribuição diferente. Portanto, aplicando isso ao conceito de computação, quando temos heterogeneidade, estamos falando de um sistema que contenha em sua composição máquinas (nós) de sistemas operacionais, recursos (hardware) e até mesmo fabricantes diferentes. Esse é um dos aspectos mais frequentes de um sistema que utiliza arquitetura distribuída. Geralmente, o sistema é composto por máquinas de diversas características diferentes que se comunicam para manter o funcionamento. Dessa forma, o sistema distribuído é capaz de funcionar em uma arquitetura heterogênea, tanto em termos de hardware quanto de software. Em termos de hardware, significa que o sistema distribuído consegue operar em nós com características de hardware diferentes, por exemplo, entre máquinas com diferentes valores de memória principal (RAM), memória de armazenamento (HD, SSD, etc.) e capacidade de processamento (clock dos processadores). Em termos de software, significa que o sistema distribuído suporta, por exemplo, diferentes sistemas operacionais, com alguns nós utilizando MS-Windows, enquanto outros utilizam alguma distribuição GNU/Linux. Isso pode parecer difícil de ser alcançado, mas existe um elemento que facilita nosso trabalho, o middleware, o qual, como o nome sugere, é uma camada de software que fica situada entre a sua aplicação e o sistema operacional. Não se preocupe se esse termo e seu papel não estiverem claros ainda, pois detalharemos esse assunto em uma aula posterior. Por exemplo, quando um website roda em máquinas com diferentes sistemas operacionais ou características de hardware (por exemplo, uma máquina do tipo servidor que possui mais memória RAM que outra máquina dentro do mesmo sistema distribuído), dizemos que se trata de um sistema distribuído heterogêneo. Os protocolos de redes são fundamentais para que essa comunicação entre máquinas diferentes ocorra, porém, na maioria das aplicações distribuídas, precisamos também de um middleware. O middleware pode ser considerado um conjunto de padrões e funcionalidades que atua como uma camada central entre a nossa plataforma, o sistema operacional e as nossas aplicações. Essa camada central permite que em um sistema distribuído rodem diferentes aplicações em diferentes plataformas e que todas elas consigam se comunicar adequadamente Existem vários frameworks utilizados para implementação de plataformas de middleware, e os mais conhecidos são: · CORBA: framework de implementação de middleware baseado na linguagem de programação C++. · .NET Remoting: framework de implementação de middleware, baseado no ambiente de programação .NET, que pode utilizar várias linguagens diferentes, por exemplo, Visual Basic, C#, entre outras. · Akka.NET: framework de implementação de middleware, baseado no ambiente de programação .NET, que pode utilizar várias linguagens diferentes, como Visual Basic, C#, entre outras. · Java RMI: framework de implementação de middleware, baseado na linguagem de programação JAVA. · JAX-WS: framework de implementação de middleware, baseado na linguagem de programação JAVA. Segurança Sem dúvida, um dos aspectos mais importantes no projeto de sistemas distribuídos é a segurança. Tipicamente, seja qual for a aplicação desenvolvida, sendo um sistema distribuído, funcionará em uma plataforma com várias máquinas, chamadas de nós, que replicam tal aplicação e, conforme já sabemos, a comunicação entre essas máquinas sempre ocorre por meio de redes de comunicação, tipicamente cabeadas. É muito importante sempre considerar aspectos de segurança no projeto de sistemas distribuídos. Segundo Coulouris et al. (2013), em termos de sistemas distribuídos, podemos pensar em dois níveis: o da confidencialidade e o da integridade dos dados. A confidencialidade dos dados refere-se ao acesso ao dado por indivíduos ou sistemas não autorizados, e a integridade dos dados refere-se, além do acesso, à modificação do dado. Conforme os autores, os pontos de atenção em relação à segurança no projeto de sistemas distribuídos são: · Portas são expostas: sistemas distribuídos são construídos com base em um conjunto de processos que oferecem serviços e compartilham informação. As portas de comunicação pelas quais esses serviços se comunicam são, intrinsicamente, abertas (para que clientes possam acessar tais serviços) e, dessa forma, um hacker pode enviar mensagem a qualquer uma delas. · Redes de computadores não são seguras: remetentes de mensagens podem ser falsificados e endereços IP podem estar duplicados, de forma que alguém malicioso possa receber as mesmas mensagens de um destinatário válido. · A validade das chaves criptográficas deve ser limitada: quanto mais tempo uma mesma chave estiver válida e ativa, maiores são as chances de estar comprometida, por ter maiores chances de ser conhecida (e explorada) por uma quantidade maior de pessoas e sistemas. · Algoritmos de criptografia podem ter falhas: na atualidade, a melhor prática é divulgar publicamente os algoritmos de criptografia para que a comunidadee as entidades especialistas possam validá-lo e sugerir melhorias, de forma que a privacidade esteja garantida pela chave criptográfica, e não pela inacessibilidade ao algoritmo utilizado. · Hackers podem ter acesso a recursos poderosos: o custo dos recursos computacionais tem diminuído cada vez mais, de forma que máquinas poderosas estão acessíveis para a maioria da população. Assim, sempre considere que ataques podem ocorrer de inúmeras fontes e podem explorar vulnerabilidades, utilizando, inclusive, ataques do tipo força-bruta (que tentam descobrir senhas por tentativa e erro, com simples “chutes”). Tolerâncias a falhas e Transparência Tolerância a falhas refere-se à capacidade de o sistema distribuído se autorrecuperar na ocorrência de uma ou mais falhas. As falhas em um sistema computacional podem ocorrer em vários momentos ao longo do uso de um sistema, por uma série de razões, as quais serão detalhadas mais adiante. Aproveitando, você sabia que, no nosso idioma, existe uma palavra para expressar essa ideia de “capacidade do sistema distribuído se autorrecuperar na ocorrência de uma ou mais falhas”? Isso mesmo, apenas uma palavra: resiliência. Então, da próxima vez que quiser passar essa ideia de maneira mais concisa, utilize-a. Quando falamos de aspectos no projeto de sistemas distribuídos, temos que falar de resiliência de processos, pois é um dos principais objetivos a serem atingidos em uma aplicação distribuída. A resiliência de processos está relacionada com o sistema ter uma comunicação confiável entre as camadas de cliente e servidor. Sua ideia básica é de que os processos da nossa aplicação sejam replicados em grupos, isso faz com que o sistema tenha uma proteção contra falhas relacionadas a processos. Para conseguir criar projetos tolerantes a falhas, temos que ter em nossos sistemas uma detecção de falhas, assim como conseguir mascarar todas as falhas apresentadas e a replicação de nosso sistema, para que ela seja imperceptível. Só podemos atingir estas características de acordo com questões de projetos, e a mais importante, neste caso, é verificar qual grupo de processos que a nossa aplicação deverá conter. Para isso, entenderemos o que são os grupos simples e os grupos hierárquicos e como esses processos são associados a eles. Quando falamos de resiliência de processos, organizamos em grupos os processos que são considerados idênticos. Portanto, quando uma mensagem é enviada a um grupo de nosso sistema, a ideia é que todos os processos membros desse grupo recebam a mensagem. Se ocorrer uma falha em um dos processos no tratamento da mensagem, outro processo desse grupo deve tratar a mensagem no lugar do processo com falha. Em um sistema distribuído, temos grupos dinâmicos, ou seja, os processos podem se mover entre os grupos que são criados. Um processo de um cadastro de usuário do site XYZ pode enviar uma mensagem para a realização do cadastro a um grupo de servidores sem precisar quantos existem e quem são eles. Grupo simples e grupo hierárquico Quando falamos de grupos simples, todos os processos são iguais e todas as decisões são tomadas entre todos os processos, ou seja, de forma coletiva. A grande vantagem deste tipo de grupo é que não há um ponto único para falha. Mesmo que ocorra falha ou caia algum processo, o grupo continua mantendo o serviço em funcionamento. Portanto, a execução do sistema não é centralizada em um só ponto. A desvantagem que encontramos nesse tipo de grupo é que a tomada de decisão tende a demorar mais, porque cada decisão deve ser priorizada pelos processos, tendo uma votação antes da tomada de decisão. Já os grupos hierárquicos, como o nome mesmo já diz, são baseados em uma hierarquia, logo existem processos considerados mais importantes e que controlam toda execução. Nesses grupos, temos um processo chamado “coordenador”, e os demais chamamos de “operários”. Sempre que chega uma nova requisição no sistema, ela é enviada ao processo coordenador, que decide o melhor operário para executá-la. A grande vantagem desse tipo de grupo é que as decisões são centralizadas, portanto temos mais agilidade na tomada de decisão, o que gera um retorno mais rápido. Já a grande desvantagem apontada é que, caso ocorra uma falha no processo coordenador, o serviço todo para. Podemos observar, na figura abaixo, a estrutura dos grupos apresentados e como seus processos se comunicam. Estrutura dos grupos e comunicação dos processos. Fonte: elaborada pelo autor. Podemos observar que, na comunicação simples, os processos se comunicam entre si e decidem em conjunto qual é o processo mais adequado para executar determinada ação durante o funcionamento de um sistema. Já na comunicação hierárquica, os processos estão divididos entre “coordenador” e “operários”, em que o processo coordenador definirá o processo operário mais adequado para executar determinada ação durante o funcionamento de um sistema. Transparência Por fim, transparência refere-se, novamente, ao ponto de vista do usuário, o quão transparente o sistema é, ou seja, quanto o cliente “desconhece” do funcionamento interno do sistema, e isso é uma característica positiva: quanto menos o usuário necessitar saber da implementação e do funcionamento do sistema, ou seja, quanto mais transparente o sistema for, melhor para o usuário. Na tabela abaixo, podemos observar os tipos de transparência, segundo Tanenbaum e Steen (2008): Tipos de transparência. Fonte: elaborada pelo autor. Retomando o contexto apresentado no início desta aula, você continua trabalhando no sistema de controle de manutenção preventiva para várias frotas de veículos de grandes transportadoras no estado de Minas Gerais. Seu papel nesse projeto é orientar toda sua equipe para utilização de sistemas distribuídos, para que, ao final, o produto seja robusto e funcional. Agora é hora de avançar no projeto, pesquisando e apresentando frameworks atuais, utilizados por grandes empresas no segmento de serviços em TI, para que o sistema esteja apto a ser comercializado. Prepare um relatório e uma apresentação com exemplos e descrições desses frameworks. É muito importante que a equipe enxergue também as dificuldades em se implementar um sistema distribuído. Assim, para que isso aconteça, identifique, de acordo com o material apresentado nesta aula, três desafios que podem surgir ao implementá-lo. Pense também em como você pode justificar esta resposta, ou seja: por que esses seriam desafios para que o sistema distribuído atinja seus objetivos? Além disso, você deve apresentar soluções para a escalabilidade do seu sistema distribuído, para isso, faça um relatório comparando três frameworks atuais que facilitam atingir a escalabilidade desejada em sistemas distribuídos e aponte a melhor opção para esse projeto. Ao final, crie uma apresentação para sua equipe, com os três desafios escolhidos e a comparação dos três frameworks pesquisados. Para solucionar essa tarefa, utilize os conteúdos apresentados nesta aula. Sugerimos basear-se nos aspectos de projetos: segurança, escalabilidade, resiliência e heterogeneidade. Para enriquecer sua apresentação, fale sobre os desafios encontrados para atingir êxito nos aspectos de projetos escolhidos. Para a pesquisa e comparação dos frameworks, você pode consultar as seguintes documentações: · Java RMI. · CORBA. · AKKA.NET. · JAX-WS. Após a comparação dos frameworks, você deve escolher o que melhor auxilia a escalabilidade do projeto, não se esquecendo de justificar sua escolha para impressionar a equipe. Você pode comparar as linguagens de programação utilizadas por cada um dos frameworks, verificando sua popularidade, o conteúdo disponível para aprendizado na internet, os requisitos mínimos para execução e desenvolvimento na linguagem, entre outros aspectos. Você também pode comparar os recursos necessários para execução de cada um dos frameworks, descobrindo, assim, qual é mais viável para este tipo de sistema. Com o conteúdo estudado nesta aula, você está apto a entender os aspectos mais relevantes de um projetode implantação de um sistema distribuído. Percebeu como é importante definir esses objetivos em um projeto de sistemas distribuídos? Agora, continuaremos os estudos e seguiremos em frente com mais conceitos de sistemas distribuídos. Questão 1 Sem dúvida, um dos aspectos mais importantes no projeto de sistemas distribuídos é a segurança. Tipicamente, seja qual for a aplicação desenvolvida, sendo um sistema distribuído, esta funcionará em uma plataforma com várias máquinas, chamadas de nós, que replicam a tal aplicação e, conforme já sabemos, a comunicação entre essas máquinas sempre ocorre por meio de redes de comunicação, tipicamente cabeadas. A partir dessa análise, questões referentes a segurança desse sistema devem ser levadas em consideração. Em termos de sistemas distribuídos, podemos pensar em níveis. COULOURIS, G. et al. Sistemas Distribuídos. Porto Alegre: Bookman, 2013. Considerando as informações apresentadas, analise as afirmativas a seguir: I. A confidencialidade dos dados refere-se ao acesso ao dado, por indivíduos ou sistemas não autorizados. II. A integridade dos dados refere-se à quando, além de ser acessado, o dado foi modificado. III. A tolerância a Falhas é a capacidade de o sistema sobreviver à falha de alguns dos seus elementos. Considerando o contexto apresentado, assinale a alternativa correta. Sua resposta Apenas as afirmativas I e II estão corretas. Questão 2Correta A escalabilidade é outro aspecto importantíssimo de um sistema distribuído, é um termo comum em termos de redes de computadores, e está intimamente ligada ao tamanho da rede. Um sistema cujo desempenho aumenta com o acréscimo de hardware e software, proporcionalmente à capacidade acrescida, é chamado escalável. Dois aspectos importantes de serem levados em consideração em relação à escalabilidade são em termos geográficos e administrativos. TANENBAUM, Sistemas Distribuídos -Princípios e Paradigmas 2ª Edição, São Paulo: Editora Pearson, 2008. Considerando as informações apresentadas, analise as afirmativas a seguir: I. A escalabilidade em termos geográficos refere-se ao sistema que, apesar de apresentar-se como único para o usuário, está rodando em várias réplicas, em dois ou mais datacenters geograficamente distintos. II. O benefício desse tipo de configuração na escalabilidade em termos geográficos é fornecer uma melhor experiência em termos de conectividade e latência (atrasos na rede). III. A escalabilidade em termos administrativos refere-se ao escopo administrativo, que é afetado pela escalabilidade geográfica. Considerando o contexto apresentado, assinale a alternativa correta. Sua resposta As afirmativas I, II e III estão corretas. Questão 3Correta Um jogo multiplayer é um exemplo de aplicação onde há um servidor e múltiplos clientes. Portanto, existe a necessidade de comunicação entre processos e em algumas jogadas é necessário enviar mensagens para mais de um processo de uma vez só. Considerando este exemplo de aplicação e os conceitos de comunicação entre processos, avalie as alternativas e marque a alternativa CORRETA. Sua resposta Na comunicação de grupo de processos, com uma única operação pode-se enviar uma mensagem a vários processos do mesmo grupo em máquinas diferentes. Questão 4Correta Um dos aspectos mais importantes no projeto de sistemas distribuídos é a segurança. Tipicamente, seja qual for a aplicação desenvolvida, sendo um sistema distribuído, esta funcionará em uma plataforma com várias máquinas, chamadas de nós, que replicam a tal aplicação e, a comunicação entre essas máquinas sempre ocorre por meio de redes de comunicação, tipicamente cabeadas. A partir dessa análise, questões referentes a segurança desse sistema devem ser levadas em consideração. Em termos de sistemas distribuídos, podemos pensar em dois níveis de segurança: Sua resposta o da confidencialidade e o da integridade dos dados. Questão 5Correta A segurança é um tema altamente complexo, e existem várias disciplinas que abordam diferentes aspectos dessa interessante área de estudo, mas, em linhas gerais, o projeto de sistemas distribuídos em termos de segurança remete a um exercício de equilíbrio entre custo e ameaças. Há alguns pontos de atenção em relação a segurança, no projeto de sistemas distribuídos. Fonte: COULOURIS, G. et al. Sistemas Distribuídos. Porto Alegre: Bookman, 2013. Considerando o contexto, avalie as afirmativas a seguir: I. Sistemas distribuídos são construídos com base em um conjunto de processos que oferecem serviços e compartilham informação. As portas de comunicação nas quais esses serviços se comunicam são, intrinsecamente, fechados (para que clientes não acessem tais serviços) e, dessa forma, um hacker dificilmente consegue enviar mensagem a qualquer uma dessas portas. II. Na atualidade, a melhor prática é de divulgar publicamente os algoritmos de criptografia para que a comunidade e entidades especialistas possam validar o algoritmo e sugerir melhorias, de forma que a privacidade esteja garantida pela chave criptográfica, e não pela inacessibilidade ao algoritmo utilizado. III. O custo dos recursos computacionais tem diminuído cada vez mais, de forma que máquinas poderosas estão acessíveis para a maioria da população. IV. Ataques podem ocorrer de inúmeras fontes, e podem explorar vulnerabilidades utilizando inclusive ataques do tipo força-bruta. Considerando o contexto apresentado, assinale a alternativa correta. Sua resposta Apenas as afirmativas II, III e IV estão corretas. UNIDADE 4 A Virtualização & A Conteinerização na prática, como instalar e configurar máquinas com diferentes propósitos. Você já parou para pensar em quantos sistemas operacionais diferentes existem? Será que há um único sistema que pode ser instalado em uma máquina do tipo cliente e em uma do tipo servidor? Além disso, qual é a melhor forma de testar e se familiarizar com esses diferentes sistemas operacionais? Nesta unidade, vamos entender conceitos muito importantes e como aplicá-los de maneira prática, para que você consiga responder às questões anteriores e muitas outras. Talvez você já tenha ouvido falar de máquinas virtuais, mas será que já ouviu sobre conteinerização? Ainda que sim, de maneira prática, como você pode conteinerizar uma aplicação web, por exemplo? Se respondeu não a alguma dessas perguntas, não se preocupe! A ideia aqui é mostrar que, caso você estude com afinco, pesquise e faça todas as atividades sugeridas, aprenderá a implementar e configurar contêineres para sistemas distribuídos. Uma importante empresa do ramo de tecnologia que presta serviços a praticamente todos os bancos corporativos está com uma vaga aberta de trainee DevOp e, por isso, deu início a um processo seletivo. Interessado em ingressar nessa empresa, você está disputando a vaga e, na última etapa do processo seletivo, será preciso pôr seus conhecimentos à prova. Você será capaz de atingir todos os objetivos conforme a necessidade da empresa? Na primeira aula desta unidade, você entenderá quais são os princípios e as melhores práticas relacionadas à ideia de virtualização. Já na segunda aula, será apresentado ao – relativamente novo – conceito de contêineres e entenderá o motivo de muitas empresas de grande porte, que possuem sistemas distribuídos altamente escaláveis, estarem migrando cada vez mais para esse tipo de solução. Por fim, você terá a oportunidade de colocar em prática conceitos importantes sobre conteinerização, por meio do uso de uma ferramenta largamente utilizada no mercado de trabalho. Chegou a hora de prosseguir com os estudos dos sistemas distribuídos, o que vai lhe proporcionar conhecimentos e oportunidades no mercado de trabalho. Lembre-se de que, quanto mais você se dedicar, mais poderá aproveitar os ensinamentos transmitidos neste material. A importância de softwares como o VirtualBox e o VMWare vai muito além do simples fato de testar ou “dar uma olhada” na nova versão de um sistema operacional. Na situação-problema à qual você será exposto, terá quecriar uma máquina virtual com uma configuração previamente definida, de forma que será necessário entender os principais parâmetros que devem ser ajustados para tal. Caso não saiba como fazer isso, a máquina nem passará da fase inicial de boot do sistema. Imagine que você está participando de um processo seletivo para uma oportunidade muito interessante e bem remunerada na área de DevOps da maior empresa nacional de portal de notícias, cujos clientes que consomem o conteúdo disponibilizado por essa empresa são bancos, em sua maioria. Na entrevista, além da Gerente de RH, também está participando o Coordenador de Infraestrutura, que será o seu futuro gestor. Inicialmente, o Coordenador pede para você criar uma máquina virtual e testá-la: neste contexto, crie uma máquina virtual com o software VirtualBox. Esse tipo de procedimento é rotineiro nesta empresa que necessita de máquinas para execução de diversos serviços de tecnologia. Utilize o seu conhecimento atrelado ao conteúdo da aula para solucionar a situação-problema apresentada acima. Objetivo da virtualização A virtualização se torna cada vez mais popular com o passar dos anos e é amplamente utilizada nos ambientes corporativos e, em alguns casos, até domesticamente. O grande objetivo da virtualização é fornecer uma versão virtual de tecnologias essenciais em computação, por exemplo, redes, armazenamento, hardware, entre outros. Além disso podemos também, virtualizar aplicações. Segundo Dawson e Wolf (2011, [s.p.]), a “virtualização desacopla as tarefas e a parte funcional das aplicações da infraestrutura física necessária para seu funcionamento, permitindo uma flexibilidade e agilidade sem precedentes em termos de armazenamento, servidores e desktops”. ______ 🔁Assimile Atualmente, é possível fornecer uma versão virtual de tecnologias essenciais em computação. Por exemplo, para um site permanecer no ar por 24 horas, não precisamos ter um servidor web/aplicação físico mantendo seu funcionamento, podemos ter um servidor virtual ou máquina virtual, como são chamadas, tipo de servidor que substitui ou emula o funcionamento de um servidor físico. ______ Quando virtualizamos recurso de hardware, como memória RAM, processador, placas de vídeo, placa de rede, entre outros, temos uma máquina virtual que funciona com os recursos de hardware em formato virtual. Sabendo disso, podemos instalar um sistema operacional sobre outro sistema, ou seja, sobre nossa máquina física podemos ter várias máquinas virtuais. Esses recursos de hardware são representados por softwares na virtualização. A mesma coisa também pode ser feita com a rede: é possível criar uma infraestrutura lógica de rede sobre uma rede física. Nela podemos personalizar e configurar de formas diferentes da rede física, conforme nossas necessidades. Também é possível ter em nossa residência uma rede física “A” composta pelas redes lógicas “B” e “C”. Quando utilizamos virtualização, representamos os dispositivos físicos por meio de entidades de software, assim, nossos servidores e workstations se tornam o que chamamos de máquinas virtuais, ou VMs. A parte de armazenamento de dados é conhecida como Software Defined Storage (SDS), ou armazenamento definido por software. Já a parte de rede é chamada de Software Defined Networking (SDN), ou rede definida por software. Unindo todos esses elementos com um conjunto de máquinas virtuais, temos um Software Defined Data Center (SDDC), ou data center definido por software. Portanto, as máquinas virtuais são abstrações de hardware de computadores que permitem que uma única máquina física aja como se fosse várias máquinas diferentes. Assim, podemos ter vários sistemas operacionais distintos rodando em uma só máquina. A virtualização contém três componentes principais, conforme o Portal Redhat (2018): · Hospedeiro: como chamamos a máquina física em que existem máquinas virtuais. · Convidado: como são chamadas as máquinas virtuais ou computadores virtualizados. · Camada de virtualização: o software que permite criar sistemas convidados sobre sistemas hospedeiros. Podemos observar na figura abaixo a interação dos três componentes principais da virtualização e exemplos de como são compostos: Elementos de máquinas virtuais. Fonte: elaborada pelo autor. Para o usuário final, não faz diferença se a máquina acessada é física ou virtual, pois as duas funcionam da mesma forma, o que acaba sendo imperceptível. Nesse cenário de virtualização podemos ter em um mesmo servidor uma máquina virtual com o sistema operacional Windows Server, uma máquina virtual com Linux e uma máquina com FreeBSD, por exemplo. Os principais fatores que levam à utilização de virtualização são: · Diminuição de espaço físico: muitas vezes, o ambiente corporativo não tem espaço físico para suportar servidores, com todos requisitos necessários, como a refrigeração adequada para eles. · Rapidez na implantação: máquinas virtuais são implantadas mais rapidamente do que máquinas físicas. · Redução de custos administrativos: os custos administrativos para se manter uma máquina física são bem maiores do que os custos referentes às máquinas virtuais. · Economia de energia elétrica: como podemos ter várias máquinas virtuais funcionando sobre apenas uma máquina física, consequentemente, economizaremos energia, tendo menos máquinas alimentadas. · Aproveitamento da capacidade de computação e performance: é possível aproveitar melhor os recursos de um servidor físico dividindo-os em várias máquinas virtuais. Virtualbox Existem vários softwares nos quais é possível criar e administrar máquinas virtuais, e os mais populares são VirtualBox, VM Ware e Hyper-V Microsoft. Nesta aula vamos utilizar o VirtualBox©, fabricado pela Oracle®. Esse software tem uma licença do tipo GNU General Public License (Licença Pública Geral GNU), GNU GPL ou simplesmente GPL. A licença GPL permite a utilização e o estudo do software de maneira livre para quaisquer fins. O download do VirtualBox pode ser realizado no site do VirtualBox (VIRTUALBOX, 2018), escolhendo a versão adequada para o seu sistema operacional. No mesmo site há uma extensa documentação que nos auxilia com todo processo de manipulação da ferramenta, assim como informações sobre a tecnologia de virtualização (ORACLE, 2018). Após o download do instalador, devemos selecionar a opção “Next”. Agora devemos escolher quais elementos da instalação queremos e qual será o local de instalação. No nosso caso deixaremos tudo conforme o padrão. Lembrando que você deve ter 175MB livres em seu HD para a instalação do VirtualBox. Após essas configurações devemos selecionar a opção “Next”, conforme a figura que segue: Instalando o VirtualBox. Fonte: captura de tela do VirtualBox. Agora devemos escolher opções referentes a atalhos do VirtualBox e selecionar “Next” novamente. Feito isso, é necessário selecionar “Install” para iniciar nossa instalação. Agora devemos aguardar alguns minutos, o tempo de instalação varia de máquina para máquina. Ao término, é preciso deixar marcada a opção que abre o Virtualbox após a instalação e selecionar “Finish”. Podemos observar na figura a seguir a interface do Oracle VM VirtualBox, em que temos várias opções. A opção “Novo” é a que permite criar nossas máquinas virtuais. Com elas são habilitadas as opções de “Configurações” sobre a máquina selecionada: “Descartar” e “Iniciar”. Tela inicial do Virtualbox. Fonte: captura de tela do Virtualbox. Dentro da opção “Novo” definimos todas as configurações de nossa máquina virtual, como seu nome, sistema operacional, quantidade de memória RAM, capacidade de disco rígido, processamento, entre outras. O papel da virtualização em sistemas distribuídos Dois tipos de virtualização são muito úteis no contexto de sistemas distribuídos, conforme Coulouris et al. (2013): · Virtualização de redes; · Virtualização de sistemas. Esses autores observam, muito adequadamente, que a vantagem da criação e da utilização de redes virtuais advém do fato de que uma rede virtual específica para um determinado tipo de aplicaçãopode ser criada sobre uma rede física real, de forma que a virtual possa ser otimizada para aquela aplicação em particular, sem a necessidade de alterar as características da rede física. ______ 📝Exemplificando Imagine que você está desenvolvendo um sistema distribuído de um serviço de streaming de vídeo que, obviamente, é composto por vários elementos, como banco de dados, servidor web, servidor de e-mail, servidor de autenticação etc. Suponha que o arquiteto de sistemas da empresa tenha optado por utilizar dois bancos de dados diferentes, um para armazenar informações gerais, como dados dos assinantes, datas de vencimento de assinaturas etc., do tipo SQL, e outro para armazenar os vídeos em si, com características mais adequadas para otimizar a troca de informações, do tipo NoSQL. Esses dois bancos de dados não precisam (e, por questões de segurança, nem devem) saber da existência um do outro. Para atingir esse objetivo, tipicamente as empresas criam duas redes virtuais dedicadas, de forma que, além de estarem isoladas entre si, podem ser otimizadas de acordo com a natureza do banco de dados, prevalecendo a comunicação de segmentos UDP para o banco de dados NoSQL, por exemplo, em detrimento dos segmentos TCP. ______ Para Coulouris et al. (2013), a virtualização de sistemas é uma alternativa interessante por permitir emular o hardware de uma máquina física, permitindo, assim, que várias máquinas virtuais, cada uma com um sistema operacional, coexistam e se comuniquem. Os autores ainda salientam que a principal vantagem da virtualização de sistemas está no fato de que as aplicações já escritas e validadas, que dependem de um sistema operacional em específico e que necessitam se comunicar e interagir com outra aplicação em um sistema operacional diferente, podem assim fazê-lo, através da virtualização dos sistemas operacionais, sem a necessidade de que a aplicação seja reescrita ou recompilada. ______ 💭Reflita Pense na seguinte situação: na empresa em que você trabalha, o sistema de planejamento de recursos, conhecido simplesmente por ERP (do inglês Enterprise Resource Planning), utiliza um módulo de controle de estoque escrito pelo próprio time de desenvolvedores da companhia, na linguagem Asp.NET que, por sua vez, utiliza funcionalidades específicas da plataforma Windows, não sendo 100% compatível com alternativas como o .NET Core (recentemente aberto para a comunidade). Para economizar nos gastos e, principalmente, aumentar a disponibilidade do sistema ERP utilizado pelos colaboradores da empresa, suas filiais e seus representantes comerciais, o Diretor Executivo, ou CEO (do inglês Chief Executive Officer), decide migrar para uma solução em nuvem, de algum provedor de cloud computing de mercado. Por questões financeiras, o Diretor de TI, ou CIO (do inglês Chief Information Officer), opta por utilizar um Sistema Operacional GNU/Linux. Como fazer para adaptar o módulo de controle de estoque? Reescrever o código seria uma opção, mas os desenvolvedores que fizeram esse módulo já não trabalham mais na empresa, e o código é muito extenso e complexo, o que significa que sua reescrita impactaria em um aumento significativo de tempo até que o “novo” ERP esteja disponível. Qual seria sua solução para esse problema? ______ Se você já utilizou ou leu a respeito de computação em nuvem, deve saber que, independentemente do tipo de serviço que você contrata e do provedor desse serviço, você já estará utilizando a virtualização em algum nível, e esses serviços são tipicamente categorizados como IaaS (do inglês Infrastructure as a Service), PaaS (do inglês, Platform as a Service) e SaaS (do inglês, Software as a Service). Para entender melhor essa ideia, veja a figura abaixo. Serviços em nuvem e níveis de virtualização. Fonte: elaborada pelo autor. Arquitetura de virtualização A maioria das pessoas, quando ouve falar de virtualização, pensa em um sistema operacional “dentro” de um software como, por exemplo, o VirtualBox da Oracle, instalado em uma máquina física obviamente com um sistema operacional instalado. Partindo desse contexto, podemos destacar algumas características: esse sistema operacional instalado “dentro” da máquina física refere-se a uma máquina virtual, pois é similar à sua máquina física, porém, puramente emulada via software. O software que permite emular uma máquina física é, de maneira genérica, chamado de hypervisor e é responsável por desacoplar a máquina física da virtual, bem como alocar os recursos da máquina física, de acordo com a necessidade da máquina virtual, conforme artigo da VMWare, uma das empresas mais conhecidas na área de virtualização (VMWARE, [s.d.]). ______ 📝Exemplificando Exemplos populares de hypervisors são o VMWare Player, da VMWare e o VirtualBox, da Oracle. Existem várias outras opções de hypervisors disponíveis no mercado, não tão populares, mas ainda assim bastante utilizadas, como o caso do QEMU (abreviação para Quick Emulator), que é o hypervisor utilizado pelo Android Studio (IDE oficial da Google para desenvolvimento de aplicativos Android), para emular o sistema operacional Android e poder testar os aplicativos em máquinas físicas com sistemas operacionais MS-Windows, GNU/Linux e macOS, conforme artigo do portal de desenvolvedores da Google: Start the emulator from the command line (ANDROID, 2019). ______ Podemos instalar várias máquinas virtuais em uma única máquina física, limitando-se, é claro, às capacidades de processamento, RAM e armazenamento da máquina física. As máquinas físicas são tipicamente chamadas de hosts (hospedeiros), e as máquinas virtuais são tipicamente chamadas de guests (convidados), embora não seja tão comum a utilização dos nomes traduzidos para o nosso idioma. A figura a seguir ilustra esses elementos. Elementos de máquinas virtuais. Fonte: elaborada pelo autor. ______ ⭐Dica Você pode fixar seu conhecimento acessando a documentação do VirtualBox, que auxilia em todo processo de manipulação da ferramenta, assim como fornece informações sobre a tecnologia de virtualização. Oracle® VM VirtualBox®. User Manual (ORACLE, 2018) Conclusão Retomando a situação apresentada na introdução desta aula, considere que você está participando de um processo seletivo para uma oportunidade como trainee na área de DevOps da maior empresa nacional de portal de notícias, cujos clientes que consomem o conteúdo disponibilizado por essa empresa são bancos, em sua maioria. Na entrevista, você será submetido a algumas atividades práticas sobre virtualização, definidas pelo Coordenador de Infraestrutura. Sua primeira atividade é criar uma máquina virtual. Crie uma máquina virtual com o software VirtualBox, com sistema operacional GNU/Linux, distribuição Ubuntu Desktop, nas configurações padrão, e acesse o website glassdoor (GLASSDOOR, 2021), a partir da máquina virtual recém-criada, utilizando o navegador Firefox, da Mozilla. A primeira coisa que devemos fazer é realizar o download do sistema operacional Ubuntu na versão Desktop que foi solicitada, pode ser feito no site do Ubuntu (UBUNTU, 2019). Agora, no VirtualBox, devemos ir até a opção “Novo”, conforme a figura abaixo: Criando uma máquina virtual. Fonte: captura de tela do VirtualBox, elaborada pelo autor. Agora, devemos definir um nome para nossa máquina virtual, o tipo de sistema operacional e a versão. É necessário também estabelecer a quantidade de memória RAM que será usada pela máquina virtual. O próximo passo é selecionar a criação de um novo disco virtual. Caso existam discos virtuais prontos, também podemos utilizá-los. Na próxima figura criamos um novo: Criando um disco virtual. Fonte: captura de tela do VirtualBox, elaborada pelo autor. Agora que as configurações estão definidas e a máquina virtual já aparece na lista, vamos até a opção “Configurações”, representada pelo ícone de uma engrenagem, para apontar o caminho de nossa imagem (iso) que contém o sistema operacional. Podemos observar na figura abaixo que a opção “Configurações” está habilitada: Definindo as configurações da máquinavirtual. Fonte: captura de tela do VirtualBox, elaborada pelo autor. A figura abaixo mostra como apontamos o caminho da imagem de instalação do sistema operacional. Para isso ocorrer, devemos criar um leitor de CD virtual e indicar a imagem como se fosse um CD-ROM. Acessamos o menu “Armazenamento”, depois “Vazio” e, então, o ícone de um novo CD para localizar nossa imagem. Caminho da imagem de instalação do sistema operacional. Fonte: captura de tela do Ubuntu, elaborada pelo autor. Após a seleção, o local em que estava escrito “Vazio” passa ter o nome da imagem do Ubuntu. Depois do apontamento do caminho da imagem, devemos pressionar o botão “OK” e, então, o botão “Iniciar”, representado pelo ícone de uma seta na cor verde. Feito isso, será aberta uma nova janela de execução da máquina virtual. Agora, devemos pressionar a tecla “Enter” do teclado para iniciar nossa máquina via CD, assim, teremos a opção de instalar nossa máquina, seguindo as etapas de instalação até a conclusão. Depois de finalizar a instalação, podemos ver a execução da máquina virtual. Agora, só resta ir até o site do Mozilla Firefox, realizar o download e a instalação e acessar o site glassdoor, conforme solicitado. O desenvolvimento de um software, seja ele desktop, web ou um app para smartphone, envolve a utilização de diversos recursos, por exemplo, um sistema gerenciador de banco de dados, um (ou mais) ambiente integrado de desenvolvimento, uma (ou mais) linguagem de programação etc. Ao fazer suas escolhas e implementar a solução, o próximo passo é disponibilizá-la, mas, nesse momento, muitos problemas de incompatibilidade podem ocorrer. Uma frase típica é “mas no meu computador funcionou!”. Será que existem soluções para evitar esse tipo de problema? Existem e começaremos a explorá-las! Você já ouviu falar de uma das implementações mais utilizadas de contêineres no mundo, o Docker? Se não, aproveite a oportunidade. Sabia que há várias vagas de emprego requisitando conhecimentos dessa implementação aqui no Brasil e mundo afora? Não perca o foco! Você se lembra da sua entrevista para a tão cobiçada vaga na área de DevOps? Avançando mais uma etapa, o coordenador pergunta se, na sua opinião, existem tecnologias similares, porém, mais eficientes que a virtualização, para rodar aplicações sem interferir no sistema operacional da máquina física, e você logo se lembra dos contêineres. Sendo assim, deverá criar um relatório técnico indicando o uso de uma tecnologia atual que traga vantagens e diminua o consumo de recursos para a criação de um novo ambiente que execute um sistema ERP que será implementado daqui a alguns meses na empresa. Os ERPs são sistemas integrados de gestão empresarial, que interligam todos os dados e processos de uma empresa dentro do sistema. Portanto é um dos mais importantes para um bom funcionamento de uma companhia, o que quer dizer que, quanto melhor for executado, mais pontos o profissional que planejou sua execução vai ganhar com os seus superiores. Então, chegou a hora de impressionar o coordenador em busca da vaga que você almeja, está pronto? Conceito de conteinerização Uma das tecnologias mais populares que temos atualmente é o uso de contêineres para a execução de sistemas dos mais variados tipos. Isso ocorre devido à facilidade e à flexibilidade que advêm do uso dos mesmos. O contêiner funciona como uma tecnologia que dá o suporte para o funcionamento de uma aplicação e pode ser considerado a emulação de nossa aplicação. Quando a aplicação é executada através de um contêiner, ela tem todas as bibliotecas e os elementos necessários para o funcionamento disponíveis dentro do contêiner. Uma maneira simples para entender o que são os chamados contêineres é imaginar que eles permitem a criação de ambientes virtuais isolados e independentes para serem utilizados por aplicações, similar ao resultado do uso de máquinas virtuais. Entretanto, um grande diferencial está no fato de que os contêineres são mais leves que as máquinas virtuais, por possuírem uma arquitetura mais otimizada. ______ 🔁Assimile O contêiner traz muitas facilidades e é considerado uma das principais tendências de TI. Sua utilização simplifica a aplicação da metodologia DevOps e facilita o desenvolvimento. Grandes empresas, como a Google, usam essa tecnologia. ______ Se fosse necessário desenvolver um sistema em linguagem C para o cadastro de produtos do estoque de uma loja de varejo, poderíamos criar um contêiner que tivesse todas as bibliotecas essenciais para o funcionamento do sistema e, assim, nossa aplicação seria virtualizada através de um contêiner, sem a necessidade de um sistema operacional, pois, neste caso, já precisaríamos de uma máquina virtual. Conforme pode ser visto na figura a seguir, uma grande vantagem de contêineres em relação às máquinas virtuais é que não há, obrigatoriamente, a necessidade de instalar um sistema operacional completo, visto que as plataformas de conteinerização aproveitam bibliotecas compartilhadas com o sistema operacional hospedeiro. Por essa razão, os contêineres ocupam menos espaço em disco e consomem menos RAM e processamento que as máquinas virtuais e, assim, possibilita a utilização de mais contêineres em uma mesma máquina física, favorecendo o uso de uma arquitetura mais modular para as aplicações. Comparação das arquiteturas de máquinas virtuais versus contêineres. Fonte: elaborada pelo autor. ______ 💭Reflita Agora que conhecemos algumas vantagens dos contêineres em relação às máquinas virtuais, quais benefícios uma empresa que executa aplicações em máquinas virtuais poderia adquirir migrando a execução de suas aplicações para contêineres? Você acredita que seria benéfica essa migração? ______ Duas das principais características a favor da conteinerização são o baixo acoplamento entre os contêineres e a facilidade de migração entre provedores de cloud computing. Ambas se devem ao fato de que a ideia do contêiner é “empacotar” a sua aplicação em um módulo que é facilmente instalado em qualquer sistema operacional que suporte o uso de contêineres (e os principais sistemas operacionais utilizados em servidores possuem esse suporte). No lugar do hypervisor, quando tratamos de máquinas virtuais, temos os chamados contêiner engines (por vezes chamados de contêiner daemons). Existem várias implementações para esses engines, como o Docker, o LXD, o Rkt, o Mesos e o Windows Server Containers, mas o mais popular entre eles é o Docker, sobre o qual aprenderemos na próxima aula. Porém, para começar a ter ideia do que se trata, quando falamos do Docker, estamos na realidade falando de uma empresa – chamada Docker – que foi responsável pela popularização dos contêineres, por meio de eventos e divulgação de material técnico. Essa companhia criou sua própria implementação que, coincidentemente, é chamada de Docker, cuja instalação, configuração e gerenciamento (e, consequentemente, curva de aprendizado) é relativamente mais simples comparando com outras implementações (DOCKER, 2018). Linux Container Existem implementações que podem ser consideradas contêineres de sistema, por exemplo, os Linux. Essas tecnologias têm um comportamento muito parecido ao de uma máquina virtual, mas, na verdade, são equivalentes a novas instâncias do sistema utilizando todas as técnicas disponíveis para isso. Os contêineres Linux funcionam compartilhando o kernel da máquina real onde estão em funcionamento. Uma limitação encontrada nos contêineres é que, quando estão compartilhando o kernel da máquina física ou até mesmo virtual em que estão hospedados e em execução, tratam-se de contêineres Linux rodando em máquinas Linux com o mesmo kernel do host, ou seja, mesmo que você substitua todas as bibliotecas e frameworks utilizados pelo seu contêiner, o kernel será sempre o mesmo do host que o hospeda. Segundo Linux Container (2018), o projeto Linux container é o guarda-chuva por trás do Linux Containers, que possuem as gerações LXC, LXD e LXCFS. O LXC é uma interface de espaço de usuário para os recursos de contençãode kernel do Linux. Por meio de uma API poderosa e ferramentas simples, permite que usuários do Linux criem e gerenciem facilmente contêineres de sistema ou aplicativo. O LXD é um gerenciador de contêineres de próxima geração, que oferece uma experiência de usuário semelhante às máquinas virtuais, mas usando contêineres do Linux. Já o LXCFS é um sistema de arquivos simples do userspace projetado para contornar algumas limitações atuais do kernel do Linux. ______ 📝Exemplificando Podemos até mesmo testar um ambiente com contêineres Linux pelo Portal Linux Containers (LINUX CONTAINER, [s.d.]). Esse portal disponibiliza toda a documentação com comandos utilizados no LXC e no LXD. Conforme mencionado, podemos praticar alguns comandos e testar ambos os ambientes através do menu “try it online”, como podemos observar na figura abaixo: Área de treinamento do portal Linux Containers. Fonte: captura de tela do portal Linux Containers. Dentro da opção de treinamentos, é possível usar o “Terminal”, disponível para executar alguns comandos e observar seu comportamento. Utilizamos o comando abaixo para criar o contêiner através da implementação Linux Containers: lxc launch ubuntu MeuPrimeiroConteiner Pode-se observar o contêiner com o nome “MeuPrimeiroConteiner” sendo criado no terminal e dando o retorno conforme é mostrado na figura a seguir. Criando um contêiner por meio do portal Linux Containers. Fonte: captura de tela do portal Linux Containers. Feito isso, é possível consultar a lista de contêineres criados no terminal utilizando o comando abaixo: lxc list Pode-se observar na figura a seguir que o contêiner criado anteriormente já aparece como resultado em nossa listagem. Além disso, informações como o status da máquina e os números de seus respectivos IPV4 e IPV6 também aparecem, como podemos ver a seguir: Listando os contêineres criados através do portal Linux Containers. Fonte: captura de tela do portal Linux Containers. É possível executar comandos dentro de um contêiner utilizando o comando abaixo: lxc exec nomedocontainer – comando Há opções de iniciar, parar e excluir contêineres usando os comandos: lxc start lxc stop lxc delete Além das informações do contêiner exibidas através da listagem que foi vista anteriormente, podemos observar uma série de informações sobre nosso contêiner como consumo de memória RAM, consumo de redes, entre outros dados. Para isso, utilizamos o comando de sintaxe a seguir: lxc info nomedocontainer O papel da conteinerização em sistemas distribuídos Os sistemas distribuídos fazem uso extensivo dos contêineres no contexto de microsserviços. A ideia dos microsserviços está associada a empresas que possuem sistemas altamente dinâmicos e ao termo modularidade. Um portal de notícias por exemplo, é composto por vários elementos, como um (ou mais) banco de dados, um (ou mais) framework front-end utilizado para desenvolver interfaces, framework back-end para desenvolver a parte dinâmica do sistema, frameworks para gerenciar mensagens entre servidores e clientes (por exemplo, o RabbitMQ) etc. Caso o sistema possua uma arquitetura monolítica, ou seja, uma forte dependência entre esses elementos, será muito difícil substituir alguns dos elementos citados anteriormente sem causar uma interrupção completa no sistema. Por outro lado, em uma arquitetura baseada em microsserviços, esses componentes têm um baixo acoplamento entre si, ou seja, o grau de dependência entre os componentes é baixo, de forma que, caso você tenha de fazer uma substituição, terá um impacto bem menor na indisponibilidade do seu sistema, e os contêineres serão artefatos fundamentais para atingir esse baixo acoplamento, pois cada um dos elementos pode ser criado e implantado em um contêiner separado. Dentre as vantagens de um sistema distribuído baseado em microsserviços, podemos apontar que quanto menores são as partes, mais fácil entendê-las. Além disso, cada microsserviço pode ser executado e escalado de maneira concorrente e independente entre si. Outra vantagem decorrente disso é que, como esses elementos possuem um baixo acoplamento entre si, um projeto de grande porte pode ser trabalhado de maneira razoavelmente independente entre as equipes de trabalho. A figura a seguir ilustra uma aplicação monolítica em relação a uma aplicação baseada em microsserviços. Exemplo de aplicações baseadas em microsserviços. Fonte: elaborada pelo autor. ______ 🔁Assimile Atualmente, existe uma grande tendência de empresas migrarem de aplicações monolíticas para aplicações orientadas a microsserviços, por vantagens como escalabilidade e independência entre seus elementos (também conhecido como baixo acoplamento). ______ Como veremos na próxima aula (parte prática), apesar de a criação e o controle de um contêiner ser feita com simples comandos, podemos observar pela figura acima que uma aplicação é composta por não apenas um, mas vários microsserviços, cada um representando um ou mais contêineres. Gerenciar dezenas ou centenas de contêiner, de maneira isolada, pode ser uma tarefa muito trabalhosa, razão pela qual as empresas utilizam alguma ferramenta para criar, gerenciar e remover contêineres. Esse tipo de ferramenta é conhecido no mercado de trabalho como ferramenta de orquestração de contêineres. Acredita-se que a ideia esteja relacionada ao fato de que, em uma orquestra, um maestro coordena os músicos de maneira que o objetivo conjunto (obra tocada) seja o melhor possível. Nessa analogia, as ferramentas de orquestração realizam o mesmo papel do maestro, em que os músicos seriam os contêineres. Atualmente, a ferramenta de orquestração mais popular e, portanto, mais solicitada no mercado de trabalho é o Kubernetes, da Google, que serve para orquestrar contêineres criados com o Docker. Importante notar que o próprio framework do Docker possui uma ferramenta de orquestração nativa, instalada automaticamente com o Docker. Essa ferramenta é chamada de Swarm. Em alguns aspectos, inclusive pelo fato de ser uma ferramenta totalmente integrada com o Docker, o Swarm é a mais indicada para um primeiro contato com o conceito de orquestração de contêineres. O Swarm foi integrado ao Docker a partir da versão 1.12.0, com o chamado swarm mode, em junho de 2016, conforme noticiado no blog oficial do Docker (DOCKER, [s.d.]) A figura abaixo ajudará a entender os componentes do Swarm e como eles estão relacionados aos contêineres. Arquitetura do Swarm do Docker. Fonte: elaborada pelo autor. Na figura acima, o retângulo destacado em lilás representa o que o Docker chama de Swarm, que nada mais é que um cluster (conjunto de computadores interligados que funcionam como um grande sistema), formado por vários nós, que podem rodar uma aplicação – no exemplo, o servidor web Nginx – de maneira integrada e distribuída. Para que os nós possam estar integrados, de maneira que, caso uma instância do Nginx falhe por conta de um dos nós escravos estar indisponível, esta ser automaticamente instanciada em outro nó, é necessário que exista um nó mestre que faça essa gestão. Podem existir vários nós com a função de mestre do cluster (que o Docker chama de manager), para que, caso o nó mestre falhe, outro nó mestre assuma seu lugar. Os nós escravos (que o Docker chama de worker) rodam a quantidade de instâncias (frequentemente chamadas de réplicas) solicitadas pelo nó mestre e, para tal, é preciso que exista um contêiner “dentro” de cada nó escravo, o que está representado pelo retângulo laranja. Vamos retomar a situação apresentada na introdução desta aula? Continuando o processo seletivo para aquela tão cobiçada vaga na área de DevOps, o coordenador o submete a um teste, no qual você deve criar um relatório para indicar uma tecnologia que otimize o desempenho de um sistema ERP, que logo será implementado na empresa. Vamos auxiliá-lo com a resolução dessa situação-problema. Depois de analisar o cenário de tecnologias atuais, foi decidido que criar um ambiente com contêineres é a melhor opção para impressionar o coordenador, devido à popularidadee às vantagens dessa tecnologia. Portanto, para justificar essa escolha, abaixo estão citadas as vantagens que o uso de contêiner deve trazer na execução de um sistema de ERP: 1. Como um dos principais fatores é a economia de recursos, é possível justificar a escolha apontando a melhor eficiência na execução do sistema e grande economia de recursos, ainda mais se a equipe de desenvolvimento utilizar a arquitetura de microsserviços. 2. Com o uso de contêineres, pode-se automatizar implantações e atualizações do novo sistema. Como o sistema de ERP é novo na empresa, é normal que tenha muitas atualizações até que chegue a uma versão estável que satisfaça todas equipes, e o uso de contêineres vai facilitar muito as atualizações. 3. Garantia da escalabilidade do sistema ERP nos contêineres de maneira ágil e otimizada. 4. Capacidade de orquestrar contêineres em múltiplos hosts. 5. Conforme apontado na primeira vantagem, o uso de contêiner permite o uso do hardware de forma otimizada, ou seja, faz com que a redução do consumo de recursos seja evidente. Através do apontamento destas vantagens, o coordenador terá a certeza de que você entende muito bem do que está falando e com certeza vai avançá-lo para a próxima etapa da entrevista! Chegamos ao fim da aula e agora você já sabe o que é contêiner e logo mais estará apto para utilizar essa importante tecnologia! Bons estudos! Você já pensou de que maneira são orquestrados os serviços quando acessamos um website? Uma das principais plataformas de conteinerização utilizadas atualmente é o Docker, principal assunto desta aula. Aqui vamos trabalhar com a instalação do Docker no sistema operacional GNU/Linux Ubuntu e aprender alguns dos principais comandos que podem ser utilizados na plataforma Docker. Você já parou para pensar em quais comandos devem ser usados para que essa orquestração de serviços funcione adequadamente? Quando falamos de sistemas distribuídos, é inevitável falar sobre virtualização e conteinerização. Na prática, essas tecnologias são frequentemente utilizadas por grandes empresas. Você concluiu seu curso e está participando de um processo seletivo para uma oportunidade como trainee na área de DevOps da maior empresa nacional de portal de notícias, cujos clientes que consomem o conteúdo disponibilizado por essa empresa são bancos, em sua maioria. Você está se saindo muito bem no processo seletivo e agora será submetido ao teste final, uma atividade prática com Docker. O coordenador está gostando de seu desempenho nos testes e diz que, caso você consiga orquestrar o servidor web Apache em um cluster simples, a vaga será sua. Desta forma: 1. Crie um cluster com cinco réplicas do servidor web Apache utilizando o Docker Swarm; 2. Verifique em quais nós do cluster esse serviço está rodando; 3. Acesse a página de boas-vindas desse servidor Apache através do(s) endereço(s) IPv4 de cada nó onde esse serviço web estiver rodando. Para completar o desafio, nessa aula você verá, em detalhes, como se utiliza o Docker, incluindo comandos específicos a serem utilizados, tanto para configuração, quanto para constatação de que o serviço de Apache está funcionando de maneira adequada. Ficou curioso? Vamos lá! Conceito e instalação do Docker O Docker é uma famosa plataforma genérica de conteinerização. Conforme já estudamos, o conceito de conteinerização é parecido com virtualização, porém é considerado “mais leve”. Contêineres são muito populares atualmente devido à facilidade e à flexibilidade que advêm de seu uso. Portanto, agora chegou a hora de colocar a mão na massa e aprender a utilizar essa famosa ferramenta. Instalação do Docker Vamos fazer a instalação do Docker em uma das distribuições populares GNU/Linux, o sistema operacional Ubuntu, cuja versão utilizada foi a 14.04.5 LTS. Para isso, devemos seguir os passos a seguir. Todo o procedimento deve ser feito com um usuário com permissões de administrador. Nesse caso, utilizaremos o root através do comando sudo su. Você também pode instalar o Docker no sistema operacional Windows, fazendo o download da versão mais atual no Portal Docker (DOCKER, [s.d.]). O processo de instalação é bem simples, é preciso somente avançar as etapas do instalador. ______ 🔁Assimile Todos os procedimentos utilizados para instalação foram retirados da documentação oficial do Docker, (DOCKER, [s.d.]). As ferramentas de tecnologia atualizam-se a tal velocidade que somente acompanhando a documentação oficial é possível manter-se atualizado. Portanto, como um profissional engajado, procure sempre pelas fontes oficiais das ferramentas. Antes de instalar a ferramenta, devemos remover versões anteriores do Docker que possam estar instaladas, usando o comando: sudo apt-get remove docker docker-engine docker.io Caso não tenha nenhuma versão instalada, será exibida a mensagem que foi impossível encontrar o pacote docker-engine. Antes de instalar o Docker CE pela primeira vez em uma nova máquina host, você precisa configurar o repositório do Docker, atualizando os pacotes de sua máquina. Depois, você pode instalar e atualizar o Docker do repositório. Portanto, execute os comandos que vão atualizar a máquina: sudo apt-get update O comando acima tem o objetivo de realizar uma atualização de pacotes do Ubuntu. Na execução desse comando, o tempo pode variar de acordo com os pacotes que precisam ser atualizados, da velocidade da máquina e da conexão com a internet. Através do comando abaixo atualizamos os pacotes necessários para a instalação do Docker. Para obter uma instalação bem-sucedida, é bom ter os programas utilizados nela em suas últimas versões: sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common Após atualizar os repositórios, vamos adicionar o repositório de instalação do Docker, usando o seguinte comando: curl -fsSL https://download.docker.com/linux/ubuntu/gpg| sudo apt-key add - Nesse comando, estamos fazendo o apontamento do caminho de instalação oficial do Docker que o Ubuntu deve acessar quando queremos efetuar a instalação. Após o apontamento da URL indicando o local para download o Docker para Ubuntu, será possível adicionar o repositório no próximo comando: sudo add-apt-repository \ "deb [arch=amd64]https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" O comando utiliza a permissão considerada admin nos sistemas operacionais da família Linux, através da palavra sudo. Depois de usar a permissão de usuário do sudo, utilizamos o add-apt-repository para adicionar o repositório, que pode ser comparado a uma loja de aplicativos, responsável pelo download do Docker na versão Ubuntu. O restante do comando é o caminho do repositório. Após adicionar o repositório para download do Docker, como mostra a figura a seguir, devemos mais uma vez atualizar o apt-get, conforme o comando seguinte para aplicar as alterações: sudo apt-get update Saída do comando que adiciona o repositório de instalação do Docker. Fonte: captura de tela elaborada pelo autor. Agora vamos utilizar o comando de instalação do Docker. Lembrando que, para que esse comando funcione, devemos seguir as etapas de apontar o repositório em que o Docker está disponível e adicionar esse repositório em nossa lista. No comando utilizamos o sudo para usar a permissão admin do sistema e o apt-get install para a fazer a instalação, por último o nome do programa que vamos instalar, no caso, o Docker (docker-ce). sudo apt-get install docker-ce Com todas as configurações feitas para atualizar os pacotes necessários e adicionar o repositório que contém o Docker, agora é possível fazer a instalação. Veja na figura abaixo o comando sendo aplicado no terminal e também o início da sua execução. Saída do comando que faz a instalação do Docker. Fonte: captura de tela elaborada pelo autor. Iniciando e testando o Docker Para ver se o Docker foi instalado corretamente, devemos iniciar o serviço do Docker e verificar se ele está em execução. Podemos fazer isso com os seguintes comandos: sudo service dockerstart service docker status O comando sudo utiliza a permissão de usuário administrador para execução do restante da linha, e as instruções service docker start iniciam o serviço Docker que foi instalado anteriormente. Após a inicialização do Docker, utilizamos o comando service docker status que mostra o status do serviço, ou seja, se ele está em execução ou parado. Caso ocorra algum erro ao iniciar e testar o Docker, você deve executar os dois comandos seguintes e tentar novamente: sudo apt-get update sudo apt-get upgrade Esses comandos utilizam a permissão de usuário administrador através do sudo e, além disso, executam uma atualização de pacotes essenciais para o bom funcionamento do sistema operacional, assim como o bom funcionamento dos serviços que rodam através dele, como o Docker. Agora que instalamos e verificamos seu funcionamento, o sistema está apto a receber as especificidades que queremos criar. Para isso, é possível usar o Docker Swarm. Essa ferramenta é nativa e permite a criação de clusters de Docker. Nesse cenário, é possível agrupar vários hosts em um mesmo pool de recursos, o que facilita o deploy de contêineres (DIEDRICH, 2018). Esse framework é integrado ao Docker Engine a partir da versão 1.12.0, com o chamado “swarm mode”. ______ ⭐Dica Você pode consultar o site, a documentação e todos os repositórios oficiais do Docker no Portal Docker, (DOCKER, [s.d.]). Uma alternativa à instalação do Docker é o portal Play With Docker, plataforma pela qual é possível testar o Docker utilizando seus comandos diretamente via navegador, mediante um cadastro (PLAY WITH DOCKER, [s.d.]). ______ 📝Exemplificando Após a criação do login na plataforma, teremos acesso a uma interface para criação de instâncias como clusters e nós. Através do botão Add new instance, podemos criar nós para o nosso cluster e, então, é possível entrar com comandos na plataforma. Vamos conhecer um dos principais comandos para depois interagirmos com a plataforma. A figura a seguir exibe a interface após a criação de um nó: Plataforma Play With Docker. Fonte: captura de tela elaborada pelo autor. ______ Através dos comandos listados abaixo podemos simular algumas características de sistemas distribuídos com Docker, como criação de nós dos tipos mestre (manager) e escravo (worker) dentro do nosso cluster, gerenciamento de contêiner, réplica de serviços etc. Comando executado fora do(s) nó(s) e comando executado dentro do(s) nó(s) Manager Agora vamos ver alguns comandos que são executados fora dos nós do ambiente Docker. Um dos mais importantes é o de criação de um novo manager para o cluster. Através do comando, criamos um manager chamado de mestre: docker-machine create --driver virtualbox mestrext O começo desse comando significa que estamos criando uma nova máquina através do Docker. Utilizaremos docker-machine create como driver no VirtualBox e daremos o nome de mestre para nossa máquina. Agora, vamos fazer a criação de uma nova máquina: o comando segue o mesmo padrão do anterior, mas desta vez vamos chamar a máquina de “escravo1”. Ela será um worker para o cluster, conforme comando abaixo: docker-machine create --driver virtualbox escravo1 Podemos verificar o IP de qualquer uma das máquinas de nosso cluster utilizando o comando docker-machine ip e, a seguir, consultamos o IP de nossa máquina chamada “mestre”: docker-machine ip mestre Um dos comandos Linux mais populares utilizados para acesso de máquinas/servidores é o ssh, que significa “Secure Shell”, em que fazemos um acesso ou uma conexão através desse protocolo de rede criptográfica, que aplica mais segurança aos serviços de redes. Na utilização do Docker o mesmo comando é usado com o objetivo de acessar os nós criados que, em nosso ambiente, possuem os nomes “mestre” e “escravo1”. docker-machine ssh mestre docker-machine ssh escravo1 É possível verificar os nós (nodes) criados através do comando “ls”. Podemos criar um escravo para o cluster com hardware diferente do padrão. Também pode-se ver no comando a seguir que a máquina chamada “escravo5” que definimos a memória com o valor de 512 MB através da instrução virtualbox-memory “512” e um disco rígido de 5 GB através da instrução virtualbox-disk-size “5000”: docker-machine create --virtualbox-memory "512" --virtualbox-disk-size "5000" --driver virtualbox escravo5 Comando executado dentro do(s) nó(s) Manager Vamos ver os alguns comandos executados dentro do manager de nosso ambiente Docker. O comando a seguir pode ser utilizado para iniciar o cluster através do framework Swarm, de gerenciamento de contêineres. docker swarm init --advertise-addr Podemos consultar os nós que fazem parte do cluster utilizando o comando node ls: docker node ls Às vezes precisamos verificar informações sobre um nó específico. Para isso, utilizamos o comando Docker inspect. O exemplo a seguir contém informações sobre o nó chamado “escravo1”: docker inspect escravo1 A seguir, é possível observar um exemplo de criação de um novo serviço (tarefa) para o cluster. Nesse caso, criamos um serviço Web através do popular servidor web nginx, que contém 3 réplicas: docker service create --name WEB --publish 85:80 --replicas=3 nginx:1.12.1 No parâmetro name definimos um nome para a execução do serviço, em nosso caso, WEB. Através do parâmetro publish definimos uma porta de execução para o Docker e uma para o servidor web Nginx, no caso, “85” e “80” e, por último, definimos que o serviço terá 3 réplicas e utilizará o Nginx na versão 1.12.1. Agora que criamos nosso serviço de internet chamado WEB, podemos utilizar o comando ps seguido do nome do serviço para verificar suas informações. Portanto, o comando a seguir mostra informações sobre um serviço específico aqui denominado como WEB: docker service ps WEB É possível usar os comandos a seguir para alterar a versão das instâncias do Nginx. No primeiro comando atualizamos, através do comando update, a versão do Nginx para 1.13.5 (anteriormente estávamos com a versão 1.12.1). Após isso, utilizamos o comando ps com o parâmetro -f que significa filter ou find, que pode ser considerado um filtro para a busca, em que usamos a palavra-chave Running para descobrir qual serviço está em execução e se sua versão foi mesmo atualizada. O resultado dos comandos está ilustrado na figura a seguir. docker service update --image nginx:1.13.5 WEB docker service ps -f "desired-state=Running" WEB Plataforma Play With Docker. Fonte: captura de tela elaborada pelo autor. Caso quiséssemos desfazer nossa atualização de versão das instâncias do Nginx, podemos utilizar o comando update como parâmetro rollback aplicado sobre o serviço WEB. Com isso, teremos a volta da versão das instâncias do Nginx para a versão anterior. Que pode ser consultado através do mesmo comando ps utilizado no exemplo anterior, conforme a seguir: docker service update --rollback WEB docker service ps -f "desired-state=Running" WEB Caso seja necessário parar algum nó e seus serviços, podemos utilizar o comando update seguido do parâmetro availability drain e o nome do nó que desejamos parar, como em nosso exemplo, o nó denominado como escravo2: docker node update --availability drain escravo2 Quando executamos esse comando, tanto o nó quanto os serviços que estão em execução serão parados. Comando executado dentro do(s) nó(s) Worker e comando executado dentro de cada um dos nós (Managers e Workers) Saída do comando docker swarm init. Fonte: captura de tela elaborada pelo autor. 3. Agora que os nós estão criados e seus papéis definidos, para criar o serviço que estará rodando (de maneira distribuída, replicada) do servidor web Apache, digite o seguinte comando no nó mestre: docker service create --name WEB --publish 80:80 --replicas=5 httpd Esse comando cria 5 instâncias de um servidor web Apache, que responderá na porta mapeada (80, nesse caso) e, para facilitar sua monitoração, demos um nome “amigável” a este serviço: WEB. 4. Para saber em quais nós as 5 réplicas desse serviço estão sendo executadas, digite o seguinte comando: docker serviceps WEB No caso da figura abaixo, podemos ver que 2 instâncias estão rodando no nó 1, e as outras 3 estão rodando no nó 2. Porta mapeada aparece como um hyperlink. Fonte: captura de tela elaborada pelo autor. 5. Por fim, precisamos acessar a página de boas-vindas desse servidor Apache através do(s) endereço(s) IPv4 de cada nó em que esse serviço web estiver rodando. Reparou que, ao criar o serviço, a porta que você mapeou aparece na parte superior, como um hyperlink? Caso não tenha percebido, veja a porta 80, destacada em vermelho na figura 24. Para acessar a página de boas-vindas, basta clicar nessa porta, em cada um dos nós onde esse serviço está rodando (no caso, nós 1 e 2 do cluster), para vermos a famosa mensagem “It works!” do Apache. Porta mapeada aparece como um hyperlink. Fonte: captura de tela elaborada pelo autor. Esta sequência de comandos que utilizamos para orquestrar um servidor web Apache em 3 nós é a configuração utilizada em sistemas distribuídos, para que os acessos a um website sejam balanceados e, caso ocorra algum problema em um dos nós que mantêm a aplicação, o outro nó assume a execução. ______ 💭Reflita Parou para pensar em quantas aplicações esses conceitos podem ser aplicados? E quantas melhorias as implantações desses conceitos podem trazer a um sistema web? Nesta aula você conheceu alguns comandos Docker e aprendeu a fazer uma configuração de cluster e de nós para servidor web. Vamos retomar a situação apresentada na introdução desta aula? Mais um passo e a tão cobiçada vaga naquela grande empresa será sua! O coordenador está gostando de seu desempenho nos testes e diz que, caso você consiga orquestrar o servidor web Apache em um cluster simples, será contratado! Desta forma: 1. Crie um cluster com cinco réplicas do servidor web Apache utilizando o Docker Swarm. 2. Verifique em quais nós do cluster esse serviço está rodando. 3. Acesse a página de boas-vindas desse servidor Apache através do(s) endereço(s) IPv4 de cada nó onde esse serviço web estiver rodando. Para resolver esse desafio, primeiramente você deve estar logado na plataforma de playground do Docker, conforme orientações já apresentadas anteriormente. Uma vez que obteve acesso à plataforma, você deverá seguir os passos abaixo: 1. Como não foi especificada a quantidade de nós do cluster, crie o mesmo com 3 nós, que serão suficientes para analisar o cluster sem comprometer a usabilidade da plataforma de testes do Docker. Sendo assim, adicione 3 nós, que farão parte do cluster, através do botão Add new instance. 2. No nó que você deseja que seja o mestre, digite o seguinte comando: docker swarm init --advertise-addr Este comando define o nó como manager do cluster. Repare que, ao executá-lo, é apresentada uma saída com a mensagem: “Para adicionar um worker ao swarm, execute o seguinte comando”, conforme pode ser visto (em inglês) na figura abaixo. Sendo assim, copie a saída que foi apresentada a você (que vai ser diferente da destacada em amarelo na figura abaixo), pois esse comando deverá ser executado em cada um dos demais nós do cluster, adicionando-os como workers desse cluster. Saída do comando docker swarm init. Fonte: captura de tela elaborada pelo autor. 3. Agora que os nós estão criados e seus papéis definidos, para criar o serviço que estará rodando (de maneira distribuída, replicada) do servidor web Apache, digite o seguinte comando no nó mestre: docker service create --name WEB --publish 80:80 --replicas=5 httpd Esse comando cria 5 instâncias de um servidor web Apache, que responderá na porta mapeada (80, nesse caso) e, para facilitar sua monitoração, demos um nome “amigável” a este serviço: WEB. 4. Para saber em quais nós as 5 réplicas desse serviço estão sendo executadas, digite o seguinte comando: docker service ps WEB No caso da figura abaixo, podemos ver que 2 instâncias estão rodando no nó 1, e as outras 3 estão rodando no nó 2. Porta mapeada aparece como um hyperlink. Fonte: captura de tela elaborada pelo autor. 5. Por fim, precisamos acessar a página de boas-vindas desse servidor Apache através do(s) endereço(s) IPv4 de cada nó onde esse serviço web estiver rodando. Reparou que, ao criar o serviço, a porta que você mapeou aparece na parte superior, como um hyperlink? Caso não tenha percebido, veja a porta 80, destacada em vermelho na figura abaixo. Para acessar a página de boas-vindas, basta clicar nessa porta, em cada um dos nós onde esse serviço está rodando (no caso, nós 1 e 2 do cluster), para vermos a famosa mensagem “It works!” do Apache. Porta mapeada aparece como um hyperlink. Fonte: captura de tela elaborada pelo autor. Questão 1Correta De acordo com Coulouris et al (2013) os sistemas distribuídos funcionam de forma eficaz em muitas escalas diferentes e que pode variar de uma pequena intranet até a Internet. A escalabilidade de um sistema distribuído é caracterizada se o sistema permanece eficiente quando há um aumento significativo no número de recursos e no número de usuários. COULOURIS, G. F; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas distribuídos: conceitos e projeto. 5. ed. Porto Alegre, RS: Bookman, 2013. Com relação ao contexto sobre sistemas distribuídos, analise o excerto a seguir, completando suas lacunas. O middleware é a camada de ____________ entre o sistema operacional e o hardware que interliga todas as máquinas que fazem parte de um sistema distribuído. Esse middleware nada mais é o do que implementação, através de algum ____________, de um modelo de comunicação entre máquinas conhecido genericamente por RPC. Em outras palavras, o RPC é uma forma de comunicação entre máquinas mais granular que a comunicação via ____________. Para implementar um RPC deve ser utilizado uma linguagem de programação com uma biblioteca pronta para essa comunicação. A linguagem Java é um grande exemplo que pode ser utilizado com RPC através de sua biblioteca ____________. Assinale a alternativa que preenche corretamente as lacunas. Sua resposta - comunicação / framework / sockets / RMI. Questão 2Correta Uma ameaça que é frequente em sistemas distribuídos voltados para internet (web) é a invasão dos servidores webs, que armazenam os arquivos e objetos que são parte do sistema. Este tipo de invasão ocorre através de portas acesso. O que acontece em muitas empresas, é que as vezes há algum servidor mais vulnerável, com suas portas de acesso liberadas para alguns casos que acabam sendo alvo para invasões, através dessa porta de entrada todo o sistema web é contaminado. Com relação ao contexto apresentado, analise o excerto a seguir, completando suas lacunas. Uma das formas de se proteger contra essa grande ameaça é utilizar um serviço baseado no _________ de transferência de arquivos, que utiliza _________ para envios de novos arquivos. Esse recurso é muito utilizado quando se falamos em ambientes web. Outra forma de se proteger é implantando o _________ de acesso seguro, como principal forma de proteção ao acesso dos servidores. Assinale a alternativa que preenche corretamente as lacunas: Sua resposta protocolo FTP / autenticação / protocolo SSH Questão 4Correta RPC (Remote Procedure Call) é uma tecnologia de comunicação entre processos que permite a um programa de computador chamar um procedimento em outro espaço de endereçamento, geralmente em outro computador, conectado pela rede. Agora, avalie as seguintes asserções e a relação proposta entre elas: I. O RPC pode ser implementado sobre diferentes tipos de protocolos de transporte. PORQUE II. É indiferente a maneira como uma mensagem é transmitida entre os processos. A respeito dessas asserções, assinale a opção correta. Sua resposta As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I. Questão 5Correta Todo sistema distribuído implementado têm, como um dos principais e mais importantes, aspectos de projeto a segurança. Um sistema distribuído possui uma série de componentes de hardwaree software, físicos ou virtualizados, que se comunicam para a execução das aplicações distribuídas. Por contadisso vários tipos de ameaças podem afetar a segurança dos sistemas, como por exemplo o Cavalo de Tróia (Trojan Horse). Assinale a alternativa que apresenta a melhor definição de Cavalo de Tróia. Sua resposta É um programa oferecido aos usuários através de um sistema que mostra ser capaz de utilizar uma função útil, mas que tem uma segunda intenção que vem oculta através de uma função.