Professional Documents
Culture Documents
Objetivos da Unidade
Introdução da Unidade
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
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.
Exemplo de layout (planta baixa) para instalação de infraestrutura de rede. Fonte: Flickr.
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.
______
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
1995: Começam as operações dos ISPs. A NSFNET volta a ser uma rede de pesquisas
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.
Exempl
os de representação de sinal analógico na forma de onda senoidal. Fonte: Stallings
(2016, p. 76).
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. 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.
Exemplos de representação de sinal digital. Fonte: Comer (2016, p. 90).
Os sinais são transmitidos em um sistema de comunicação por meio de dois meios: guiados
e não guiados.
Guiados: 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: 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.
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).
Cla
ssificação de redes de computadores por escala. Fonte: adaptado de 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.
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.
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.
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.
A figura a seguir apresenta um modelo ilustrativo de topologia de rede em malha.
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.
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 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.
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.
Exemplo de cabo
de rede de par trançado nas categorias Cabo UTP (à esquerda) e cabo STP (à
direita). Fonte: elaborada pelo autor.
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.
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 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).
Exemplos de roteadores de rede (roteador de rede cabeada e roteador wireless).
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.
Interf
ace do Packet Tracer.
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.
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.
Ligação de cabos.
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.
Exemplo de interface.
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.
Exemplo de interface de rede.
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.
Exe
mplo de comando PING.
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 controlados via 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.
Simulação de topologia de 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.
Dispositivos de rede.
Introdução da aula
Qual é o foco da aula?
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
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.
Encapsulamento
Conceito de encapsulamento de dados representado nas camadas de referência. Fonte: Kurose; Ross
(2013, p. 40).
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.
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.
Protocolos de redes
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.
Re
lação do conjunto de protocolos TCP/IP.
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.
Mapa mental com os principais protocolos do modelo TCP/IP.
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.
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).
P
arte da hierarquia de servidores DNS. Fonte: Kurose; Ross (2013, p. 99).
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.
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.
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 ao
host 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).
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.
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.
Referências bibliográficas
COMER, D. E. Redes de computadores e internet. Porto Alegre: Bookman, 2016.
Disponível em: https://bit.ly/2KcQwCt. Acesso em: 11 nov. 2020.
Introdução da Unidade
Objetivos da Unidade
Introdução da Unidade
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
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
sistema computacional 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.
Topologia de estudo para configuração de HTTP e DNS. Fonte: elaborada pelo
autor.
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.
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.
Flag: MF, usado para o deslocamento dos datagramas e sua reconstrução; DF, utilização
para autorização de fragmentação.
Tempo de vida: TLL (Time to Live). Indica o “tempo de vida” que o pacote possui a
cada salto pelos nós da rede.
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.
______
➕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 classe C, de 192.0.0.0 até 223.255.255.255.
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.
Exemplo de configuração de número IP, máscara de sub-rede e gateway. Fonte:
captura de tela do prompt de comando do sistema operacional elaborada pelo
autor.
Má
scaras de sub-rede. Fonte: elaborado pelo autor.
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 em trê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.
3. O cliente DNS envia uma consulta com o nome do host para um servidor DNS.
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.
Servid
or DNS em uma rede. Fonte: elaborada pelo autor.
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.
Exe
mplo de configuração de DNS. Fonte: captura de tela elaborada pelo autor.
3. Solicitação DHCP.
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.
Ethernet e IPV6
Introdução da aula
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.
Objetivos gerais de aprendizagem
Introdução da aula
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:
To
pologia de rede para análise dos domínios de colisão e broadcast. Fonte: elaborada
pelo autor.
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.
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.
Padrões de redes definidos pelo IEEE 802. Fonte: adaptado de Tanenbaum (1997, p.
254).
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.
Cabeamento
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.
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.
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.
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.
Rede em topologia com domínio de colisão.
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.
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.
______
🔁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.
192.168.0.1 = 11000000.10101000.00000000.00000001
Separe os números binários em grupos de quatro dígitos:
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:
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.
Exe
mplo de topologia para implementação de técnica de túnel 6to4.
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.
Compar
ação entre os protocolos IPv4 e IPv6.
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.
Conclusão
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:
Topol
ogia 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.
Reuniões: um roteador.
Visitantes: um roteador.
Introdução da aula
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.
Gerência de desempenho
______
🔁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.
______
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.
Exempl
o de utilização do comando ping. Fonte: captura de tela do prompt de comando do
sistema elaborada pelo autor.
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.
Exemplo de utilização do comando tracert. Fonte: captura de tela do prompt de
comando do sistema operacional elaborada pelo autor.
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.
Exemplo de utilização do comando ipconfig. Fonte: captura de tela do prompt de
comando do sistema operacional elaborada pelo autor.
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.
O tráfego é em rajadas.
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.
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 mecanismo de QoS que
define como as classes podem ser especificadas para o cabeçalho IPv4 ou IPv6,
para especificar a classe de um datagrama.
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.
4. SLAView.
5. Zenoss.
_____
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).
Topo
logia de rede do escritório de contabilidade com implantação de sniffer. Fonte:
elaborada pelo autor.
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.
Tela do sniffer Wireshark com informações de monitoramento de pacotes da rede.
Fonte: captura de tela da ferramenta Wireshark elaborada pelo autor.
Referências Bibliográficas
UNIDADE 3
- Sistemas Distribuídos
Introdução da Unidade
Objetivos da Unidade
Introdução da Unidade
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 sistemas distribuí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.
Introdução da aula
Qual é o foco da aula?
Introdução da aula
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
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.
Exe
mplos dos principais objetivos de um sistema distribuído.
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:
Comun
icaçã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.
Represent
açã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.
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.
Exem
plo de jogo multijogador on-line. Fonte: Shutterstock.
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 camada oculta, 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.
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.
Arquitetura descentralizada
C
omo funciona a BlockChain. Fonte: Shutterstock.
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).
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.
Servi
ços em nuvem e níveis de virtualização.
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ção do 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.
Apont
ando 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:
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
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
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
Mo
delo 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).
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 dois processos, 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.
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.
Pri
mitivas 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.
Conclusão
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:
o 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.
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).
Introdução da aula
Nesta aula, exploraremos com maior detalhamento alguns dos principais aspectos de projeto
em sistemas distribuídos, nomeadamente: segurança, escalabilidade, resiliência e
heterogeneidade, que são diferenciais em relação aos sistemas puramente de rede, mas que
não sejam sistemas distribuídos.
Objetivos gerais de aprendizagem
Introdução da aula
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
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
Heterogeneidade e Segurança
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 comunidade e 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.
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.
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.
Conclusão
AKKA.NET.
JAX-WS.
- A Virtualização e a Conteinerização
Virtualização
Introdução da Unidade
Objetivos da Unidade
Introdução da Unidade
Olá, estudante! Boas-vindas a mais uma unidade. Agora que já conhecemos os papéis que as
diferentes máquinas podem assumir, vamos verificar, 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.
Introdução da aula
Qual é o foco da aula?
Introdução da aula
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á que criar 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.
Elemen
tos 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.
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:
Tela
inicial
do
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.
Elemen
tos 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:
Camin
ho 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.
Conteinerização
Introdução da aula
Qual é o foco da aula?
Nesta aula, vamos ter a oportunidade de conhecer uma tecnologia muito requisitada no
mercado de trabalho atualmente: os contêineres.
Objetivos gerais de aprendizagem
Introdução da aula
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.
Com
paraçã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ção de 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:
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:
Conclusão
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 à popularidade e à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!
Simulando sistemas distribuídos com Docker
Introdução da aula
Nesta aula, veremos detalhes específicos para utilização do Docker, abordando questões de
configuração e uso do Apache.
Objetivos gerais de aprendizagem
Introdução da aula
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á!
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.
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 docker start
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.
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.
Plataforma Play With Docker. Fonte: captura de tela elaborada pelo autor.
1. 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.
P
orta mapeada aparece como um hyperlink. Fonte: captura de tela elaborada pelo
autor.
2. 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
Conclusão
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.
1. 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.
Po
rta 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.
Referências Bibliográficas
ANDROID Studio. Start the emulator from the command line. Developers. Última
atualização em: 2019. Disponível em: https://bit.ly/3oV6O1g. Acesso em: 7 fev. 2019.
COULOURIS, G. et al. Sistemas Distribuídos. Porto Alegre: Bookman, 2013.
DAWSON, P e WOLF, C. (Portal). Virtualization Key Initiative Overview. 22 jul. 2011.
Disponível em: https://gtnr.it/3txpRSK. Acesso em: 03 nov. 2018.
DIEDRICH, C. Docker Swarm. Disponível em: https://bit.ly/3ju0xIU. Acesso em: 9 jul.
2021.
DOCKER, C. Docker Containerization Unlocks the Potential for Dev and Ops. 2018.
Disponível em: https://dockr.ly/2YTojVl. Acesso em: 10 dez. 2018.
DOCKER (Portal). Swarm mode. [s.d.] Disponível em: https://dockr.ly/3ryJY18. Acesso
em: 10 dez. 2018.
GLASSDOOR. Website. 2021. Disponível em: https://bit.ly/39NgR4i. Acesso em: 9 jul.
2021.