2º TRABALHO EM GRUPO (Resumo)

Você também pode gostar

Você está na página 1de 19

Helton Conorio Lucas

Leonardo Nuro Ferrão

Lígia Muquissirima Chale

Orlando Cardoso João Canivete

Sidney Jerónimo Mpula

Comunicação entre processos distribuídos

(Licenciatura em informática)

Universidade Rovuma

Nampula

2024
Helton Conorio Lucas

Leonardo Nuro Ferrão

Lígia Muquissirima Chale

Orlando Cardoso João Canivete

Sidney Jerónimo Mpula

Comunicação entre processos distribuídos

Trabalho de Sistemas Distribuídos,


apresentado à Faculdade de
Engenharia e Ciências Tecnológicas
para fins avaliativos, sob a
orientação do docente:

Eng. Pedro Luís Fernando

Universidade Rovuma

Nampula

2024
Índice
1. Introdução...........................................................................................................................5

1.1. Tema.............................................................................................................................6

1.2. Objectivos.....................................................................................................................6

2.1.1 Objectivo geral......................................................................................................6

2.1.2 Objectivos específicos..........................................................................................6

2.1.3 Metodologia do trabalho.......................................................................................6

2. Referencial Teórico.............................................................................................................7

2.2 Comunicação entre Processos Distribuídos.................................................................7

2.3 Protocolos de Rede em Camadas.................................................................................7

2.4 Modelos OSI e TCP/IP.................................................................................................7

2.5 Interação entre Camadas..............................................................................................7

2.6 Funcionamento das Camadas Relativo aos Sistemas Distribuídos..............................8

3. Comunicação Cliente-Servidor...........................................................................................8

3.1 Como ocorre a comunicação?......................................................................................8

3.2 Categorias dos Sistemas Cliente-Servidor 2.1. Cliente Magro (Thin Client)..............8

3.3 Cliente Gordo (Fat Client)............................................................................................9

3.4 Cliente Híbrido (Semi-Fat Client)................................................................................9

3.5 Comunicação em Sistemas Cliente-Servidor...............................................................9

3.6 Interface Socket............................................................................................................9

3.7 Tipos de Sockets...........................................................................................................9

3.8 Arquitetura Cliente-Servidor........................................................................................9

3.9 Endereçamento no Modelo Cliente-Servidor...............................................................9

3.10 Primitivas Comuns e suas Características................................................................9

3.10.1 Primitivas de Conexão..........................................................................................9

3.10.2 Primitivas de Envio e Recebimento....................................................................10

3.10.3 Primitivas de Encerramento................................................................................10


3.11 Características Gerais das Primitivas de Comunicação..........................................10

4. Comunicação em Grupo em Sistemas Distribuídos..........................................................10

4.1 Implementação da Comunicação...............................................................................10

4.2 Definição de Grupo....................................................................................................10

4.3 Aplicações de Comunicação em Grupo.....................................................................10

4.4 Organização dos Grupos............................................................................................11

4.5 Tipos de Grupos.........................................................................................................11

4.6 Grupo Fechado e Aberto............................................................................................11

4.7 Endereçamento...........................................................................................................11

4.8 Atomicidade...............................................................................................................11

4.9 Sincronização.............................................................................................................12

5. Comunicação Par a Par (P2P)...........................................................................................12

5.1 Arquitetura.................................................................................................................12

5.2 Diferenças entre Arquitetura Par-a-Par e Cliente-Servidor........................................13

5.3 Indexação...................................................................................................................13

5.4 Busca..........................................................................................................................13

5.5 Integridade e Proteção................................................................................................14

5.6 Exemplos de Comunicação Par a Par.........................................................................14

6. Comunicação entre Processos Distribuídos......................................................................14

6.1 Formas de Comunicação:...........................................................................................14

6.2 Características:...........................................................................................................15

6.3 RPC Semânticas:........................................................................................................15

6.4 RMI Semânticas:........................................................................................................15

6.5 Componentes:.............................................................................................................15

6.6 Componentes Principais:............................................................................................16

7. Conclusão..........................................................................................................................17

8. Referencias Bibliográficas................................................................................................18
1. Introdução
Os ambientes computacionais distribuídos, a comunicação entre processos é um elemento
essencial para garantir o funcionamento eficiente e coordenado dos sistemas. Diversos
paradigmas de comunicações surgiram para atender às diferentes necessidades e arquitecturas,
abrangendo desde a comunicação entre processos distribuídos até a interacção entre clientes e
servidores, passando pela comunicação em grupo e redes peer-to-peer (P2P). Essas
modalidades de comunicação estabelecem os fundamentos para a troca de informações em
ambientes distribuídos, permitindo a coordenação de recursos e a execução de operações de
forma colaborativa e descentralizada.
1.1. Tema
Segundo MARCONI e LAKATOS (2001), tema é o assunto que se deseja provar ou
desenvolver. Pode surgir de uma dificuldade prática enfrentada pelo coordenador, da sua
curiosidade científica, de desafios encontrados na literatura de outros trabalhos ou da própria
teoria, neste contexto constitui como tema desse trabalho o seguinte:

Comunicação entre processos distribuídos (Protocolo de rede em Camadas)

1.2. Objectivos
Para a realização deste trabalho, foram traçados os seguintes objectivos:

2.1.1 Objectivo geral

O objectivo geral é compreender a comunicação entre processos distribuídos, especialmente


nos protocolos de rede em camadas como OSI e TCP/IP, explorando sua interacção e como
essa estrutura facilita o funcionamento e a escalabilidade dos sistemas distribuídos.

2.1.2 Objectivos específicos

Os objectivos específicos deste trabalho são:

1. Analisar as camadas dos modelos OSI e TCP/IP.

2. Investigar o funcionamento das camadas em sistemas distribuídos.

3. Investigar a interacção entre as camadas.

2.1.3 Metodologia do trabalho

No presente trabalho, de entre várias serão usadas as seguintes metodologias:

 Revisão bibliográfica que constitui na leitura de várias obras que falam sobre assuntos
relacionados com o tema do presente trabalho;
2. Referencial Teórico
2.2 Comunicação entre Processos Distribuídos
A comunicação entre processos distribuídos é crucial para a operação de sistemas
distribuídos, permitindo a troca de informações e a coordenação entre computadores
independentes que se apresentam como um único sistema coerente aos usuários finais
(Tanenbaum, 2018). Essa comunicação é vital para a cooperação e funcionamento
harmonioso dos sistemas.

2.3 Protocolos de Rede em Camadas


Os protocolos de rede em camadas organizam a comunicação de rede em diferentes níveis
funcionais, como formalizado pelo modelo OSI da ISO. Cada camada desempenha uma
função específica e se comunica com as camadas adjacentes, facilitando o desenvolvimento,
manutenção e interoperabilidade dos sistemas de rede. O modelo OSI tem sete camadas,
desde a física até a de aplicação, cada uma oferecendo serviços à camada superior e usando os
serviços da camada inferior (Tanenbaum, 2011).

2.4 Modelos OSI e TCP/IP


O modelo OSI e o TCP/IP são frameworks usados para descrever a transmissão de dados em
redes de computadores. O modelo OSI, desenvolvido pela ISO, possui sete camadas, cada
uma com funções específicas, enquanto o modelo TCP/IP, amplamente utilizado na internet,
tem quatro camadas: aplicação, transporte, internet e interface de rede. O TCP/IP é uma
implementação prática que precedeu sua formalização como padrão (Tanenbaum, 2011;
Forouzan, 2007).

2.5 Interação entre Camadas


A interacção entre camadas é fundamental na arquitectura de redes, permitindo que cada
camada ofereça serviços para a camada superior e utilize os serviços da camada inferior. Na
pilha TCP/IP, por exemplo, a camada de aplicação interage com a de transporte para garantir
a entrega confiável de dados. Essa colaboração entre camadas é essencial para a comunicação
eficiente e a interoperabilidade dos sistemas de rede (Tanenbaum, 2011; Comer, 2015).
2.6 Funcionamento das Camadas Relativo aos Sistemas Distribuídos
Em sistemas distribuídos, a organização em camadas ajuda a gerenciar a complexidade do
sistema, oferecendo serviços bem definidos e promovendo a modularidade e extensibilidade
do software (Tanenbaum & van Steen, 2007). As principais camadas são:

 Camada de Aplicação: Fornece serviços de rede directamente úteis para aplicativos


finais, permitindo a comunicação entre aplicativos independentemente da localização
e do tipo de hardware/software (Tanenbaum & van Steen, 2007).

 Camada de Transporte: Garante a transferência confiável e eficiente de dados entre


hosts, lidando com confiabilidade, controle de fluxo e congestionamento (Tanenbaum
& van Steen, 2007).

 Camada de Rede: Responsável pelo roteamento de pacotes de dados através da rede,


determinando o melhor caminho para alcançar o destino (Tanenbaum & van Steen,
2007).

 Camada de Enlace de Dados: Proporciona uma interface para a transmissão


confiável de dados entre dispositivos directamente conectados, lidando com erros de
transmissão (Tanenbaum & van Steen, 2007).

 Camada Física: Lida com a transmissão física de bits através de meios de


comunicação, garantindo a transmissão confiável de dados (Tanenbaum & van Steen,
2007).

3. Comunicação Cliente-Servidor
O modelo cliente-servidor é uma interacção onde o cliente solicita informações e o servidor as
fornece. O cliente envia uma solicitação que o servidor processa e responde.

3.1 Como ocorre a comunicação?


A comunicação pode ocorrer via protocolos de rede (TCP e UDP), APIs ou conexões directas.
Este modelo é vital para aplicações e serviços online, permitindo a interacção eficiente e
segura entre dispositivos.

3.2 Categorias dos Sistemas Cliente-Servidor 2.1. Cliente Magro (Thin Client)
O servidor realiza a maior parte do processamento, com o cliente servindo apenas como
interface. Exemplo: navegador Web.
3.3 Cliente Gordo (Fat Client)
O cliente tem capacidade de processamento e armazenamento, executando operações
independentes do servidor. Exemplo: software de edição de vídeos.

3.4 Cliente Híbrido (Semi-Fat Client)


Combina características dos modelos magros e gordo, com o cliente executando algumas
operações localmente e dependendo do servidor para outras. Exemplo: WhatsApp, Facebook.

3.5 Comunicação em Sistemas Cliente-Servidor


A comunicação geralmente é baseada em protocolos padronizados como HTTP, SMTP, e
FTP, que definem regras para envio, recepção e interpretação de dados entre cliente e
servidor.

3.6 Interface Socket


Um socket é uma interface de comunicação de rede, combinando um endereço IP e um
número de porta, permitindo comunicação bidireccional.

3.7 Tipos de Sockets


 TCP (Transmission Control Protocol): Protocolo confiável, orientado a conexão,
garantindo entrega ordenada e sem erros. Exemplo: cliente de e-mail.

 UDP (User Datagram Protocol): Protocolo rápido, sem conexão, não garante entrega
ordenada ou sem erros. Exemplo: jogos online, transmissões ao vivo.

3.8 Arquitetura Cliente-Servidor


O servidor fornece serviços e informações, enquanto o cliente faz solicitações e recebe
respostas. A comunicação é feita via sockets.

3.9 Endereçamento no Modelo Cliente-Servidor


 Endereço IP: Identificação única para máquinas na rede.

 Porta: Número associado a aplicações ou serviços para comunicação.

 Conexão: Estabelecida via sockets entre cliente e servidor para troca bidireccional de
dados.

3.10 Primitivas Comuns e suas Características


Primitivas de comunicação são operações de baixo nível para troca de informações.

3.10.1 Primitivas de Conexão

 CONNECT: Cliente inicia conexão.


 ACCEPT: Servidor aceita conexão.

3.10.2 Primitivas de Envio e Recebimento

 SEND: Envia dados.

 RECEIVE: Recebe dados.

3.10.3 Primitivas de Encerramento

 DISCONNECT: Encerra conexão.

3.11 Características Gerais das Primitivas de Comunicação


 Síncronas vs Assíncronas: Operações síncronas esperam a conclusão, enquanto
assíncronas permitem continuidade de outras tarefas.

 Bloqueantes vs Não-Bloqueantes: Bloqueantes aguardam a conclusão, não-


bloqueantes permitem outras tarefas.

 Bidireccionais vs Unidireccionais: Bidireccionais enviam e recebem dados,


unidireccionais apenas enviam ou recebem.

4. Comunicação em Grupo em Sistemas Distribuídos


Nos sistemas distribuídos, a comunicação em grupo é crucial para a troca coordenada e
colaborativa de mensagens entre processos distribuídos, aplicada em diversas áreas como
mensagens instantâneas e controle industrial. Implementada por protocolos e algoritmos
específicos, ela garante a entrega confiável e ordenada de mensagens (Tanenbaum & Steen,
2007).

4.1 Implementação da Comunicação


 Multicast: Envio de pacotes para todos os processos do grupo simultaneamente.

 Broadcast: Envio de pacotes para todas as máquinas, mas só os processos do grupo os


utilizam.

 Unicast: Envio de mensagens ponto a ponto para cada membro do grupo.

4.2 Definição de Grupo


Um grupo é um conjunto de processos cooperantes que fornecem um serviço, coordenando a
troca de mensagens entre si e com processos externos (Tanenbaum & Steen, 2007).

4.3 Aplicações de Comunicação em Grupo


 Servidores altamente disponíveis e confiáveis.
 Replicação de bancos de dados.

 Conferências multimídia.

 Jogos distribuídos.

Essas aplicações requerem alta disponibilidade, confiabilidade e tolerância a falhas.

Tipos de Grupos

Processos em grupos distintos comunicam-se através de mensagens, entregues de forma


confiável e ordenada, permitindo interações cooperativas entre diversos usuários (Tanenbaum
& Steen, 2007).

4.4 Organização dos Grupos


Grupos podem ser estruturados de diferentes formas (Tanenbaum & Steen, 2007):

 Modelo de Árvore: Hierárquico, com um processo raiz encaminhando mensagens.

 Modelo de Grafo: Interconectado, permitindo comunicação direta entre membros.

4.5 Tipos de Grupos


 Grupos Pares: Todos os processos são iguais e decisões são coletivas.

 Grupos Hierárquicos: Um processo coordenador e subordinados.

4.6 Grupo Fechado e Aberto


 Grupos Fechados: A adesão é controlada e restrita.

 Grupos Abertos: Qualquer processo pode ingressar, mas são mais vulneráveis a
ataques (Tanenbaum & Steen, 2007).

Nos grupos fechados, apenas membros podem enviar mensagens; nos abertos, qualquer
processo pode enviar mensagens.

4.7 Endereçamento
Endereçar membros do grupo é fundamental para entrega precisa de mensagens. Pode ser
feito por número de máquina, por processo, ou por nomes ASCII de um servidor de nomes.
Processos escolhem endereços aleatoriamente em um grande espaço de números, com um
servidor de nomes mantendo a consistência (Coulouris et al., 2013).

4.8 Atomicidade
Atomicidade garante que uma operação em múltiplos nós seja completada com sucesso por
todos ou nenhum nó. Protocolos como Paxos ou Raft asseguram que todos os nós cheguem a
um acordo sobre o resultado, mantendo a consistência dos dados. Transações distribuídas
usam commit de duas ou três fases para garantir atomicidade (Birman, 2001).

4.9 Sincronização
Sincronização coordena a ordem de execução de eventos entre nós distribuídos (Birman,
2001):

 Relógios Lógicos: Ordenação lógica de eventos sem um relógio físico global


(algoritmo de Lamport).

 Ordenação Causal: Garantia de ordem de eventos com relação de causa e efeito


(Vector Clocks).

 Acordo Distribuído: Consenso entre nós sobre uma decisão comum (protocolos
Paxos e Raft).

 Bloqueio Distribuído: Acesso coordenado a recursos compartilhados.

 Coordenação de Transações Distribuídas: Protocolos 2PC e 3PC garantem ACID


em transações.

Essas técnicas asseguram cooperação eficaz e manutenção da consistência e integridade dos


dados.

5. Comunicação Par a Par (P2P)


A comunicação é o ato de emitir, transmitir e receber mensagens por meio de métodos
convencionados, seja por linguagem falada ou escrita, sinais, signos, símbolos ou
equipamentos especializados (Ferreira, 2004). A comunicação P2P é uma arquitetura de rede
onde cada nó coopera para fornecer serviços entre si, sem a necessidade de um servidor
central.

5.1 Arquitetura
Arquitetura é a estrutura e organização lógica de um sistema computacional (Ferreira, 2004).
A comunicação P2P é uma arquitetura descentralizada onde dispositivos se comunicam
diretamente, sem depender de servidores centralizados (O'Reilly, 2001). Cada dispositivo
pode agir como cliente e servidor, permitindo troca direta de informações (Jones & Smith,
2005). Essa arquitetura oferece maior robustez e escalabilidade, eliminando pontos únicos de
falha (Adams, 2009).
5.2 Diferenças entre Arquitetura Par-a-Par e Cliente-Servidor
 Par-a-Par:

 Informação distribuída.

 Conexão através de rede.

 Transferência de informações sempre ativa.

 Não requer clientes e servidores fixos.

 Todos os nós são iguais.

 Cliente-Servidor:

 Informação concentrada.

 Conexão através de servidor.

 Solicitações não satisfeitas se o servidor está inoperante.

 Requer um servidor e pelo menos um cliente.

 Funções limitadas para servidor e clientes.

5.3 Indexação
Indexar é ordenar em forma de índice (Ferreira, 2004). A indexação em sistemas P2P é
essencial para que dispositivos encontrem recursos disponíveis (Adamic, 2003). Abordagens
como tabelas de hash distribuídas (DHTs), como o Kademlia DHT, permitem armazenamento
e busca eficiente de chaves na rede (Kleinberg, 2000). DHTs ajudam a otimizar a busca em
grandes redes P2P (Newman, 2010). DHTs são sistemas distribuídos descentralizados que
fornecem um serviço de lookup similar a uma tabela hash, escalando para grandes números de
nós e gerenciando chegadas e saídas contínuas (Wikipédia, s.d.).

5.4 Busca
Buscar é localizar determinado item de informação em um conjunto de dados (Ferreira, 2004).
A busca em sistemas P2P é uma área de pesquisa ativa, com diferentes abordagens para
melhorar eficiência e precisão em redes descentralizadas (Johnson et al., 2008). Algoritmos de
busca como BFS e DFS podem ser adaptados para redes P2P, permitindo descoberta eficiente
de recursos (Taylor & Brown, 2007).
5.5 Integridade e Proteção
Integridade e proteção de dados em sistemas P2P são críticas, especialmente em ambientes de
baixa confiança (Stallings, 2011). Criptografia e assinaturas digitais garantem segurança e
autenticidade das informações trocadas (Smith, 2014). Mecanismos de controle de acesso e
sistemas de reputação são utilizados para mitigar riscos e garantir integridade dos dados
(Brown & Miller, 2006).

5.6 Exemplos de Comunicação Par a Par


Exemplos de comunicação P2P incluem compartilhamento de arquivos, VoIP e jogos online
(Williams et al., 2004). Exemplos conhecidos:

 BitTorrent: Compartilhamento de arquivos entre usuários (Garcia & Martinez, 2008).

 Blockchain: Rede P2P para transações de criptomoedas e registros distribuídos


(Nakamoto, 2008).

Esses exemplos mostram a diversidade de aplicações e serviços possíveis com a arquitetura


P2P, demonstrando sua flexibilidade e adaptabilidade.

6. Comunicação entre Processos Distribuídos


Comunicação entre processos distribuídos refere-se à troca de informações entre processos em
sistemas distribuídos, ou seja, diferentes dispositivos interconectados em uma rede (Dollimore
e Kindberg, 2012).

6.1 Formas de Comunicação:


 Sockets: Comunicação padrão via rede, permitindo troca de mensagens entre
processos em diferentes máquinas.

 RPC (Remote Procedure Call): Permite que um processo chame funções em outro
processo remoto como se fossem locais (implementações: gRPC, CORBA, XML-
RPC).

 Mensagem Assíncrona: Troca de mensagens de forma assíncrona, permitindo que


processos continuem executando outras tarefas enquanto esperam respostas
(exemplos: RabbitMQ, Kafka, MQTT).

 Middleware: Camada de software que abstrai e gerencia a comunicação entre


processos distribuídos (exemplos: CORBA, JMS, ESB).
 Web Services: Comunicação baseada em padrões da web como HTTP, XML e
SOAP, usada para integração de sistemas em diferentes plataformas.

 Invocação Remota de Método (RMI)

Definição: RMI (Remote Method Invocation) permite que um objeto em um processo


invoque métodos de um objeto em outro processo (Coulouris, Dollimore e Kindberg, 2012).

6.2 Características:
 Semelhante a RPC, mas para objetos distribuídos: Utiliza conceitos de
programação orientada a objetos e referências de objeto como parâmetros em
invocações remotas.

 Componentes principais: Cliente e servidor, onde o servidor disponibiliza serviços


para acesso remoto e o cliente os utiliza conforme necessário (Castro, Raeder e Nunes,
2007).

 Semântica de Invocação

6.3 RPC Semânticas:


 At-Most-Once: Chamada remota executada no máximo uma vez, evitando
duplicações (exemplo: sistema de pagamento online).

 At-Least-Once: Chamada executada pelo menos uma vez, podendo haver múltiplas
execuções em caso de falhas (exemplo: sistema de email).

 Maybe: Não garante execução da chamada, adequada para operações onde o


desempenho é mais importante que a confiabilidade (exemplo: sistema de
monitoramento de tráfego online).

6.4 RMI Semânticas:


 At-Most-Once: Garante que o método remoto seja invocado no máximo uma vez
(exemplo: sistema de reserva de passagens aéreas).

 Exactly-Once: Assegura execução do método remoto exatamente uma vez, mesmo


em face de falhas (exemplo: sistema de transação bancária online).

 Implementação de RMI/RPC

6.5 Componentes:
 Módulo de Comunicação: Transmite mensagens entre cliente e servidor,
empacotando e desempacotando informações.
 Módulo de Referência Remota: Facilita a transformação entre referências de objeto
local e remoto, criando referências de objeto remoto quando necessário.

 Serventes: Instâncias de classes que fornecem o corpo de objetos remotos, tratando


requisições repassadas pelo esqueleto.

 CORBA (Common Object Request Broker Architecture)

Definição: Middleware que facilita a comunicação entre objetos distribuídos em diferentes


sistemas e linguagens de programação, promovendo interoperabilidade (Orfali e Harkey,
1997).

6.6 Componentes Principais:


 ORB (Object Request Broker): Facilita a comunicação entre objetos, localizando
objetos destino e transmitindo informações para invocações de métodos remotos.

 JRMI (Java Remote Method Invocation)

Definição: Extensão do modelo Java RMI que permite invocação de métodos em objetos
distribuídos, simplificando a comunicação entre objetos Java em diferentes JVMs (Gosling,
Joy e Steele, 1996).
7. Conclusão
A comunicação entre processos distribuídos é um campo vasto e dinâmico, que continua a
evoluir à medida que novas tecnologias e demandas surgem. Desde a comunicação cliente-
servidor tradicional até os sistemas peer-to-peer descentralizados, as soluções de comunicação
reflectem a diversidade de cenários e requisitos encontrados em ambientes distribuídos. A
capacidade de escolher e implementar adequadamente os protocolos e mecanismos de
comunicação certos é essencial para garantir o desempenho, a segurança e a confiabilidade
dos sistemas distribuídos, possibilitando a interacção eficiente entre processos e a realização
de operações distribuídas de forma transparente para os usuários. Nesse sentido, o estudo e a
compreensão contínua das diferentes modalidades de comunicação entre processos
distribuídos são fundamentais para impulsionar a inovação e enfrentar os desafios que surgem
nesse ambiente complexo e interconectado.
8. Referencias Bibliográficas
Gonçalves, A. (2019). Sistemas Distribuídos. FCA Editora.

Tanenbaum, A. S. (2018). Sistemas Distribuídos: Princípios e Paradigmas. Pearson Portugal.

Tanenbaum, A. S. (2011). Redes de Computadores. Pearson Education.

Forouzan, Behrouz A. "Comunicação de Dados e Redes de Computadores". Editora McGraw-


Hill, 2007.

Comer, D. E. (2015). Redes de Computadores e a Internet: Uma Abordagem Top-Down.


Pearson.

Trabalho dos Colegas

Você também pode gostar