Aula 6 - Comunicação

Propaganda
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Aula 6 –
NOMEAÇÃO E COMUNICAÇÃO
1. INTRODUÇÃO
A comunicação entre processos é o “coração” de um Sistema Distribuído. Isto definirá
como se realizarão os processos de troca de informações em as diferentes máquinas.
Na comunicação entre processos é desejável obter modelos onde a complexidade da
comunicação seja transparente para o desenvolvedor, ou seja, o desenvolvedor não deve se
preocupar em como a comunicação se dá e sim no seu resultado.
Outro aspecto importante da comunicação é a nomeação, utilizado para que um processo
possa identificar outro na rede.
2. COMUNICAÇÃO
2.1. Modelo Cliente-Servidor
Neste modelo os servidores implementam um serviço específico, os clientes solicitam ao
servidor um determinado serviço e espera pela resposta.
Figura 1 - Comportamento requisição-resposta
1
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
2.2. Protocolos em Camadas
Figura 2 - Camada, interface e protocolos do RM OSI
- Camada Física: Camada responsável pelo envio de bits. Trata da padronização das
interfaces elétrica, mecânica e de sinalização. Seus protocolos são dependentes do meio de
transmissão do link.
- Camada de Enlace: Camada responsável pelo envio de frames entre os links. Nela um
datagrama pode ser manipulado por diferentes tipos de protocolos da camada de enlace: Ethernet
(CSMA/CD), PPP. Cada protocolo diferente pode ou não implementar um conjunto de serviços.
Ex.: Entrega confiável da informação.
- Camada de Rede: Redes de longa distância são constituídas de muitos nós com
diferentes caminhos entre eles. Para definir como definir um caminho entre um par origem-destino
é utilizado o roteamento, que é a principal tarefa da camada de rede. Nesta camada também está
o Internet Protocol, protocolo sem conexão, onde pacotes são roteados de forma independente best-effort service.
- Camada de Transporte: Camada responsável pela comunicação lógica entre diferentes
processos sendo executados em diferentes hosts (fim-a-fim). Os protocolos da camada de
transporte não estão implementados nos roteadores. Esta camada pode fornecer os seguintes
serviços: multiplexing/demultiplexing, transmissão confiável, garantias de banda, retardo, etc. Esta
camada apresenta dois protocolo de transporte na Internet: TCP e UDP. O primeiro orientado a
Conexão, confiável, porém “lento”. O segundo sem conexão, “rápido”, porém não confiável.
- Camada de Aplicação: Esta camada define os protocolos que dão suporte a uma
aplicação para redes. Ex.: Aplicação WEB (HTTP), Aplicação e-mail (SMTP). Os protocolos
definem os tipos de mensagens trocadas e sua sintaxe.
- Camada de Middleware: Camada de software que é situada logicamente entre uma
camada de nível mais alto, composta de usuários e aplicações e uma camada subjacente, que
consiste de facilidades básicas de comunicação. O funcionamento do middleware depende de
autenticação, comprometimento e comunicação de alto nível.
2
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 3 - Modelo de referencia adaptado para comunicação em rede
2.3. Sockets
Os sockets são responsáveis por possibilitar a troca de informações entre processos
operando em hosts diferentes. É o ponto final de uma comunicação full-duplex entre dois
processos. O socket é a porta entre o processo da aplicação e o protocolo de transporte.
Na pilha de protocolos TCP/IP as mensagens são enviadas através da utilização de
sockets.
Figura 4 - Sockets
2.3.1. SOCKETS JAVA
Para comunicação distribuída à linguagem Java fornece três tipos diferentes de Sockets:
3
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Sockets orientados a conexão (TCP): Implementados com a Classe Socket
- Sockets sem Conexão (UDP): Implementados com a classe DatagramSocket
- Sockets sem Conexão Multicast: Implementado com a classe MulticastSocket
Neste processo de comunicação as informações são strings de bytes, sem significado
aparente.
(Vide
implementação
de
um
socket
em
Java
no
endereço
http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html).
Na comunicação não existe a transparência de distribuição. Toda comunicação está
explícita, através de procedimentos send e receive. As funções mais sofisticadas devem ser feitas
na camada de aplicação.
Diante deste contexto é necessário oferecer uma comunicação de mais alto nível
denominado Middlware de comunicação, que independe da aplicação.
2.4. Middleware de Comunicação
Middlewares são softwares que em sistemas distribuídos ajudam a prover:
- Portabilidade
- Habilitam a mudança de um sistema ou componente de um ambiente (incluindo hardware
e software) para outro sem alterar o sistema ou componente que está sendo transferido
-Transparência
- Interoperabilidade
Eles fornecem interfaces de programação padronizadas para habilitar comunicação
interprocessos entre computadores remotos. Estas interfaces proporcionam portabilidade e
transparência.
Os middleware de comunicação podem ser de três tipos:
- Chamadas de Procedimento Remoto
- Comunicação orientada a Mensagens
- Comunicação orientada a fluxo
2.4.1. TIPOS DE COMUNICAÇÃO (MIDDLEWARE)
2.4.1.1. Quanto a Persistência
- Persistente: Mensagem é armazenada pelo middleware de comunicação durante o tempo
que for necessário para entregá-la ao receptor.
- Transiente: Mensagem é armazenada somente durante o tempo em que a aplicação
remetente e a aplicação receptora estiverem executando.
2.4.1.2. Quanto a Sincronização
- Assíncrona: O remetente continua sua execução imediatamente após ter apresentado
sua mensagem para transmissão
4
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Síncrona: O remetente é bloqueado até saber que sua requisição foi aceita. Durante a
comunicação o middleware avisa que se encarregará da transmissão. O bloqueio permanece até
que a requisição seja entregue ao receptor e o receptor retorne uma resposta.
2.4.1.3. Quanto a Granularidade
- Discreta: Partes se comunicam por mensagens e cada mensagem forma uma unidade de
informação completa.
- Fluxo: Várias mensagens, sendo que as mensagens estão relacionadas uma com as
outras pela ordem ou pela relação temporal.
2.5. Chamada de Procedimento Remoto (RPC)
A comunicação usando sockets é considerada uma forma de comunicação de baixo nível
entre processos ou threads distribuídos. Um dos motivos é que os sockets só permitem a troca de
um fluxo não estruturado de bytes entre os threads. É de responsabilidade da aplicação cliente ou
servidor impor uma estrutura aos dados.
Um método alternativo aos sockets é a chamada de procedimento remota, RPC. O RPC
permite a processos chamar procedimentos localizados em outros hosts. O desenvolvedor não
precisa se preocupar mais com detalhes de implementação de rede, ou seja, não é mais
necessária a utilização de sockets.
A vantagem de RPC ao Sockets é que RPC gerencia o canal de comunicação, por isso os
programas podem ser escritos de modo que a localização de um procedimento seja transparente;
Em tese tudo é muito simples, contudo este modelo implementa algumas complicações,
tais como:
- Arquiteturas de duas máquinas podem ser diferentes
- Espaços de endereçamentos diversos
- Passagem de parâmetros
A idéia básica por trás do RPC é fazer com que uma chamada de procedimento remoto
pareça com uma chamada local. Isto representa o princípio da transparência. Esta transparência é
alcançada por meio do uso de stubs.
O stub do cliente é responsável por empacotar os parâmetros em uma mensagem e enviar
a mensagem para a máquina do servidor. Quando a resposta chega, o resultado é copiado para o
cliente, e controle volta para o servidor.
- O stub do servidor é responsável por desempacotar parâmetros, chamar o procedimento
do servidor e retornar resposta para máquina do cliente.
5
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Transporte de mensagens na rede
Figura 5 - Funcionamento do Stub
2.5.1. ETAPAS DO FUNCIONAMENTO DO RPC
- Um processo do cliente chama um procedimento local conhecido como stub cliente;
- O stub do cliente empacota as informações, constrói uma mensagem (marshaling) e
chama o Sistema Operacional;
- O Sistema Operacional envia a mensagem para Sistema Operacional remoto;
- O Sistema Operacional remoto repassa a mensagem para o stub do servidor;
- O stub do servidor desempacota parâmetros e chama procedimento servidor;
- O procedimento do servidor executa e retorna o resultado desejado;
- O stub do servidor empacota resultado em uma mensagem e chama o Sistema
Operacional;
- O Sistema Operacional remoto envia mensagem para Sistema Operacional da máquina
cliente;
- O Sistema Operacional do cliente passa a mensagem para stub cliente;
- O stub cliente desempacota resultado, repassando-o para o cliente.
A função do stub do cliente é pegar seus parâmetros, empacotá-los em uma mensagem e
enviá-los ao stub do servidor (montagem de parâmetros - parameter marshaling).
Em todo este processo os stubs interagem com o kernel dos sistemas operacionais na qual
estão hospedados os processos clientes.
6
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 6 - RPC entre um cliente e servidor
O conceito de chamada de Procedimento Remoto esconde todos os detalhes do código de
rede dentro dos procedimentos STUB.
Isso facilita aos programas de aplicações, cliente e servidor, e principalmente ao
programador, não precisar conhecer os detalhes de rede como: sockets, ordem de byte na rede,
dentre outros. Facilmente permite a construção de aplicações distribuídas.
RPC encontra-se entre a camada de aplicação e apresentação do modelo OSI.
2.5.2. PROBLEMAS
- O RPC trabalha com TCP ou UDP, logo diferentes níveis de confiabilidade.
- Como o processo de emissão da RPC e de seu correspondente Stub cliente reside em
diferentes espaços de endereçamento de memória a passagem de ponteiros como parâmetros é
dificultada, logo limitando a transparência e a capacidade da RPC.
- O desempenho e segurança levam ao desenvolvimento de protocolos adicionais, logo
não é uma boa solução para comunicação distribuída.
Em suma o RPC permite a um cliente o acesso a um serviço remoto por meio de uma
simples chamada a um procedimento local, possibilitando que programas clientes sejam escritos
de modo simples. Estes podem localizar automaticamente o servidor e estabelece a comunicação
entre software cliente e software servidor.
7
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
3. NOMEAÇÃO
O processo de nomeação é o principal responsável pela transparência nas comunicações
entre os nós de um sistema distribuído, uma vez que cada nó constitui uma entidade.
3.1. Nomes, Identificadores e Endereços
Em sistemas distribuídos entidades pode ser qualquer coisa, sejam elas máquinas,
impressoras, processos, usuários, páginas web, mensagens, etc.
3.1.1. ENDEREÇO
O acesso a uma entidade se dá através de um ponto de acesso, ou simplesmente,
endereço.
Exemplo:
Servidor e seu número IP
Um endereço pode ser utilizado como uma maneira de nomear, identificar uma entidade. O
problema é que uma entidade pode facilmente mudar seu ponto de acesso.
Dessa forma, para nomear entidades, sem utilizar especificamente seu endereço, ou seja,
nomeá-las independentemente da sua posição física (localização) deve usar identificadores ou
nomes amigáveis a seres humanos.
É comum estabelecer nomes de países, de jogadores de futebol do passado ou de deuses
mitológicos. É mais fácil ao usuário entender que “Afrodite” não está disponível do que
“XPTO001X” está indisponível.
3.1.2. IDENTIFICADORES
Os identificadores são cadeias aleatórias de bits, com algumas propriedades:
- Um identificador referencia, no máximo, 01(uma) entidade;
- Cada entidade é referenciada por, no máximo, um identificador;
- Um identificador sempre referencia a mesma entidade, isto é, nunca é reutilizado.
Exemplo:
Identificadores de entidades em sistemas P2P baseados no sistema Chord.
3.1.3. NOMES AMIGÁVEIS
São nomes representados por uma cadeia de caracteres, como pathnames, domínios de
Internet, números de processos, etc.
8
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Exemplo:
http://www.ricardobarcelar.com.br
Diante desses conceitos é necessário resolver a questão dos nomes e identificadores para
endereços. Solução para isto é a utilização de um Sistema de Nomeação.
3.2. Sistema de Nomeação
Um sistema de nomeação, em princípio mantém uma vinculação nome-endereço que na
forma mais simples é uma tabela de pares (nome, endereço). Contudo, em sistemas que
abrangem redes de grande porte, uma tabela centralizada não vai funcionar devido aos muitos
recursos a nomear.
Existem três classes diferentes de nomeação:
- Nomeação Simples
- Nomeação Estruturada
- Nomeação Baseada em Atributo
3.2.1. NOMEAÇÃO SIMPLES
A nomeação simples é aplicada a identificadores. São representados por cadeias
aleatórias de bits, conhecidos como nomes simples. Estes nomes não contêm sequer uma
informação sobre como localizar o ponto de acesso de uma entidade associada, tornando-se um
problema na localização do ponto de acesso (endereço).
Para localizar uma entidade quando se tem somente o nomes simples em redes locais é
possível utilizar soluções como:
- Broadcasting e multicasting
- Localização Nativa
- Tabelas de Hash Distribuídas (DHT)
3.2.1.1. Broacasting e multicasting
São aplicáveis somente a redes locais. Seu funcionamento consiste em enviar uma
mensagem broadcast que contém o identificador da entidade. Máquinas com ponto de acesso
para a entidade enviam uma mensagem que contém o endereço procurado.
Essa estratégia é ineficiente quando a rede cresce, visto que largura de banda da rede é
desperdiçada, e com grande número de mensagens de requisição aumenta a probabilidade de
colisões de mensagens, diminuindo o throughput do sistema.
O multicast também pode ser utilizado para localizar entidades em uma rede ponto-aponto, na qual somente um grupo restrito de máquinas recebe a requisição como, por exemplo,
em um banco de dados replicado.
Um endereço multicast pode também estar associado a uma entidade replicada, na qual
para cada requisição para o endereço multicast, a réplica responde com seu endereço IP.
9
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 7 - Multicast
3.2.1.2. Localização Nativa
Outra solução é a localização nativa, que consiste em uma abordagem para suportar
entidades móveis em redes de grande escala. Nesta solução é monitorada a localização corrente
de uma entidade.
Um exemplo em que a abordagem da localização nativa é usada é em Mobile IP. Nesta
abordagem cada host móvel usa um endereço fixo e toda a comunicação é dirigida inicialmente ao
agente nativo do host móvel (situado na rede local do endereço do host). Ao mudar de rede, o
host recebe um endereço externo (care-of-adress) e registra no agente nativo. Quando o agente
nativo recebe um pacote para o host móvel ele consulta a localização corrente do hospedeiro. Se
estiver na rede local o pacote repassado, senão o pacote é envida por um túnel até a localização
corrente do hospedeiro.
10
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 8 – Princípio do Mobile IP
As desvantagens dessa estratégia é que para se comunicar com uma entidade móvel, em
primeiro lugar um cliente tem que contatar a localização nativa, que pode estar em um lugar
completamente diferente gerando grande latência de comunicação.
3.2.1.3. Tabelas de hash distribuídas (DHT)
Esta é outra forma de resolver um identificador para o endereço da entidade associada.
Este modelo é bem representado pelo sistema Chord, na qual existem “nós” organizados
logicamente em um anel. O sistema Chord é extremamente simples no que se refere à
funcionalidade que provê. A única função que oferece é mapear chaves e seus respectivos objetos
em nós do sistema.
O sistema Chord usa um espaço de identificadores de m1 bits para designar nós e
entidades específicas (arquivos, processos). Assim, uma entidade com chave k cai sob a
jurisdição do nó que tenha o menor identificador id >= k. Esse nó é denominado sucessor de k e
denotado por succ(k).
Para resolver com eficiência uma chave k para o endereço de succ(k) utiliza-se uma das
abordagens abaixo:
- Abordagem linear: Cada nó p monitora o sucessor succ(p+1) e o predecessor pred(p).
Ao receber uma requisição para a chave k, p repassa a requisição para os seus vizinhos, a menos
que pred(p) < k <= p, caso em que o nó p retorna o próprio endereço.
Esta é uma estratégia não escalável.
1
Número m bits é usualmente 128 ou 160
11
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Caso 1) Suponhamos que p = 4 receba uma requisição para k = 7 → succ(p+1) → repassa
a requisição ao nó = 9.
Caso 2) Suponhamos que p = 4 receba uma requisição para k = 3 → como pred(4) = 1<
3<=4 → retorna o próprio endereço.
Figura 9 – Sistema Chord
- Tabela de Derivação (Finger Table): Diferente da abordagem linear para a consulta de
chaves, cada nó Chord mantém uma tabela de derivação de no máximo, m entradas.
Denotando a tabela de derivação de p por Ftp, temos: Ftp[i]=succ(p+2 i -1), ou seja, a iésima entrada aponta para o primeiro nó que sucede p por no mínimo 2 i -1.
Para encontrar uma entidade k, as referências na tabela de derivação são usadas como
atalhos para nós existentes no espaço de identificadores. A distância do atalho em relação ao nó
p aumenta exponencialmente à medida que o índice na tabela de derivação cresce. Para
consultar uma chave k, o nó p repassará a requisição ao nó q com índice j na tabela de derivação
de p, ou seja, q = Ftp [ j ] <= k <= Ftp [j+1]
Exemplo:
Considere a resolução de k=26, a partir do nó 1.
1) Nó 1 consultará k=26 → verifica que o valor é maior do que FT1[5].
2) Requisição será repassada para o nó 18.
12
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
3) O nó 18 selecionará o nó 20, porque FT18[2] < k<= FT18[3].
4) Por fim, requisição é repassada do nó 20 para o nó 21 e deste para 28
O problema dessa solução é que a organização lógica dos nós em uma rede de
sobreposição (orvelay) pode levar a uma escolha errada no roteamento de mensagens, portanto k
e succ(k+1) podem estar muito longe fisicamente.
Existem três solução para este problema, a saber:
- Identificar nós com base na topologia, de modo que dois nós próximos tenham
identificadores que também estejam próximos um do outro.
- Roteamento por proximidade que consiste em manter mais de um sucessor e repassar a
requisição para o mais próximo.
- Seleção de vizinho por proximidade. Ao escolher um vizinho (não em Chord), pegue o
mais próximo.
3.2.2. NOMEAÇÃO ESTRUTURADA
Nomes simples são bons para máquinas, mas não são convenientes para a utilização de
seres humanos. Como alternativa os sistemas de nomeação comumente suportam nomes
estruturados.
Exemplo:
Nomeação de arquivos, hosts na Internet
Nomes são organizados em um espaço de nomes que podem ser representados como
um grafo dirigido, com dois tipos de nós:
- Nó-folha: contém informações da entidade
- Nó de diretório: entidade que se refere a outros nós
Cada nó de diretório possui uma tabela de diretório<nome aresta, nome nó>.
Figura 10 – Gráfico de nomeação geral com um único nó-raiz
Sistemas de nomeação possuem, na maioria, um nó raiz, onde cada caminho no grafo de
nomeação pode ser referenciado pela sequência dos labels nas arestas.
N:<label1, label2, ..., labeln>
13
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Onde N se refere ao primeiro nó do caminho. Tal sequência é denominado nome de caminho, que
pode ser:
- Nome de caminho absoluto: primeiro nó no caminho é a raiz
- Nome de caminho relativo: primeiro nó pode ser qualquer nó.
3.2.2.1. Resolução de nomes
Os espaços de nomes oferecem um mecanismo para armazenar e recuperar informações
sobre entidades por meio de nomes. Dado um nome de caminho, deve ser possível consultar
qualquer informação armazenada no nó referenciado por aquele nome.
O problema é que para resolver um nome, precisa-se de um nó de diretório inicial. Para
isso existem algumas soluções:
- Mecanismo de fechamento: Trata da seleção do nó inicial em um espaço de nomes a
partir do qual a resolução de nomes deve começar.
Exemplo:
- www.ricardobarcelar.com.br: início da resolução é feito através do servidor de nome DNS
- /home/publico/arquivos: início da resolução ocorre no servidor local NFS
Vide Figura 10 – Gráfico de nomeação geral com um único nó-raiz
3.2.2.2. Alias (Apelidos)
Define outro nome para a mesma entidade, ou seja, vários nomes absolutos para o mesmo
nó (hard link).
Exemplo:
O nome de caminho /home/steen/Keys, que referencia um nó que contém o nome de
caminho absoluto /Keys.
Vide Figura 10 – Gráfico de nomeação geral com um único nó-raiz
3.2.2.3. Implementação de um Espaço de Nomes
Este é um serviço que permite que usuários e processo adicionem, removam e consultem
nomes. Um serviço de nomeação é implementado por servidores de nomes e devem prover:
- Escalabilidade
- Manutenção descentralizada
- Tolerância a falhas, robustez
- Escopo global: Nomes possuem o mesmo significado em todos os lugares
Um espaço de nomes, em geral, é organizado em hierarquia de três camadas:
- Camada global (Raiz e seus filhos)
- Camada administrativa (Nós de diretórios)
- Camada gerencial (Mantido por administradores e usuários finais)
14
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 11 - Repartição do espaço de nomes DNS
A resolução de nomes pode ser:
- Resolução Iterativa: servidor responde somente o que sabe: o nome do próximo
servidor que deve ser buscado. O cliente procura iterativamente os outros servidores.
- Resolução Recursiva: servidor passa o resultado para o próximo servidor que encontrar.
Para o cliente, existe somente uma mensagem de retorno: o endereço do nome ou 'não
encontrado'.
Figura 12 – Comparação entre resolução recursiva e iterativa de nomes
3.2.2.3. Domain Name System (DNS)
O DNS é usado para realizar o mapeamento entre nome e endereço IP. Para isso ele
utiliza uma base de dados distribuída implementada na hierarquia de muitos servidores de
15
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
nomes. O protocolo da camada de aplicação permite que hospedeiros, roteadores, servidores de
nomes e comuniquem para resolver nomes (tradução endereço/nome).
A razão de não se centralizar o DNS é não impor um ponto único de falha, diminuir o
volume de tráfego, evitar base de dados centralizada e distante e proporcionar uma melhor
manutenção da base de dados, além do que possibilita uma estrutura escalável.
Figura 13 – Base de dados Hierárquica e distribuída
Se procurado no servidor local não for possível resolver o nome, a requisição deverá ser
remetida ao servidor raiz. Este é responsável por:
- procurar o servidor oficial se o mapeamento for desconhecido
- obter a tradução
- devolver o mapeamento ao servidor local
São 13 os servidores raiz “espalhados” pelo mundo.
Figura 14 – Servidores raiz
16
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
3.2.3. NOMEAÇÃO BASEADA EM ATRIBUTO
Este modelo descreve uma entidade em termos de pares <atributo, valor>.
A premissa é que uma entidade tem um conjunto associado de atributos. Quando um
usuário especifica quais valores um determinado atributo deve ter, ele restringe o conjunto de
entidades nas quais está interessado.
Cabe ao sistema de nomeação retornar uma ou mais entidades que atendam à descrição
do usuário.
Sistemas de nomeação baseado em atributos também são conhecidos como serviços de
diretórios.
Uma abordagem comum para tratar serviços distribuídos de diretórios é combinar
nomeação estruturada com nomeação baseada em atributos. Esta abordagem tem sido adotada
no serviço Active Diretory da Microsoft. Muitos desses sistemas usam, ou dependem, do protocolo
leve de acesso a diretório (Lightwight Diretory Access Protocol – LDAP).
3.2.3.1. LDAP
O LDAP é um protocolo padrão IETF, projetado para operar em Internet. Sua definição
considera o LDAP como um gateway para os servidores de diretório X.500. Pelo fato de utilizar a
pilha TCP/IP, em lugar da mais complexa pilha OSI, permite uma implementação mais eficiente e
simplificada de forma a poder executar em máquinas de diferentes portes, tais como PCs, PDAs,
equipamentos Wireless, entre outros.
O LDAP torna possível gerenciar usuários, grupos, dispositivos, e outros objetos, evitando
a necessidade de gerenciar aplicações de diretórios específicos (tais como de correio eletrônico).
É um padrão suportado por diferentes plataformas que torna a aplicação independente de
fabricantes ou plataformas específicas de sistema operacional ou rede.
Reduz o custo pelo fato de diminuir o número de diretórios distintos a serem gerenciados e
economiza tempo de desenvolvimento pelo fato de não ser necessário construir bases de dados
específicas para gerenciamento de usuários e grupos.
O LDAP cria 4 (quatro) modelos:
- Modelo de informação: define os tipos de dados que podem ser colocados no diretório.
- Modelo de nomes: define como os dados do diretório são organizados e referenciados.
- Modelo funcional: define como acessar e atualizar as informações no diretório.
- Modelo de segurança: define como as informações no diretório são protegidas de
acessos não autorizados.
Este modelo ainda define uma forma de referenciarmos as informações, assim, uma
entrada possui somente um único nome dado por um DN (Distinguished names). Um DN é uma
concatenação de RDN (Relative Distinguished names), por exemplo, um DN poderia ser expresso
como: OU = Recursos, Ou = Servidores, Cn = Web Server. Um RDN para o DN acima poderia ser
Ou = Recursos ou Cn = Web Server.
Eis uma série de chaves geralmente utilizadas:
- uid (userid): identificador único obrigatório
- cn (common name): apelido da pessoa
- givenname: nome
- Sn (surname): apelido da pessoa
17
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- o (organization): empresa da pessoa
- u (organizational unit): serviço da empresa na qual a pessoa trabalha
- mail: endereço de correio eletrônico da pessoa
Figura 15 - Árvore LDAP
18
Download