O DNS (Domain Name System) e um esquema de gerenciamento de
nomes, hierárquico e distribuído. O DNS define a sintaxe dos nomes usados na
Internet, regras para delegação de autoridade na definição de nomes, um
banco de dados distribuído que associa nomes a atributos (entre eles o endereço
IP) e um algoritmo distribuído para mapear nomes em endereços.
O DNS e especificado nas
RFCs 882, 883 e 973. As aplicações normalmente utilizam um endereço IP de 32
bits no sentido de abrir uma conexão ou enviar um datagrama IP. Entretanto, os
usuários preferem identificar as maquinas através de nomes ao invés de números.
Assim e necessário um banco de dados que permita a uma aplicação encontrar um
endereço, dado que ela conhece o nome da maquina com a qual se deseja
comunicar.
Um conjunto de servidores
de nomes mantém o banco de dados com os nomes e
endereços das maquinas
conectadas a Internet. Na realidade este e apenas um tipo de informação
armazenada no domain system (sistema de domínios). Note que e usado um conjunto
de servidores interconectados, ao invés de um único servidor centralizado.
Existem atualmente tantas instituições conectadas a Internet que seria
impraticável exigir que elas notificassem uma autoridade central toda vez que
uma maquina fosse instalada ou trocasse de lugar. Assim, a autoridade para
atribuição de nomes e delegada a instituições individuais.
Os servidores de nome
formam uma árvore, correspondendo a estrutura institucional. Os nomes também
adotam uma estrutura similar. Um exemplo típico e o nome chupeta.jxh.xyz.br.
Para encontrar seu endereço Internet, pode ser necessário o acesso a ate
quatro servidores de nomes. Inicialmente deve ser consultado um servidor
central, denominado servidor raiz, para descobrir onde esta o servidor br. O
servidor br e o responsável pela gerência dos nomes das instituições/empresas
brasileiras ligadas a Internet. O servidor raiz informa como resultado da
consulta o endereço IP de vários servidores de nome para o nível br (pode
existir mais de um servidor de nomes em cada nível, para garantir a
continuidade da operação quando um deles para de funcionar). Um servidor do nível
br pode então ser consultado, devolvendo o endereço IP do servidor xyz.
De posse do endereço de um
servidor xyz e possível solicitar que ele informe o endereço de um servidor
jxh, quando, finalmente, pode-se consultar o servidor jxh sobre o endereço da
maquina chupeta. O resultado final da busca e o endereço Internet
correspondente ao nome chupeta.jxh.xyz.br Cada um dos níveis percorridos e
referenciado como sendo um domínio. O nome completo chupeta.jxh.xyz.br e um
nome de domínio. Na maioria dos casos, não e necessário ter acesso a todos os
domínios de um nome para encontrar o endereço correspondente, pois os
servidores de nome muitas vezes possuem informações sobre mais de um nível de
domínio o que elimina uma ou mais consultas.
Além disso, as aplicações
normalmente tem acesso ao DNS através de um processo local (servidor para as
aplicações e um cliente DNS), que pode ser implementado de modo a guardar os
últimos acessos feitos, e assim resolver a consulta em nível local. Essa
abordagem de acesso através de um processo local, simplifica e otimiza a tarefa
das aplicações no que tange ao mapeamento de nomes em endereços, uma vez que
elimina a necessidade de implementar, em todas as aplicações que fazem uso do
DNS, o algoritmo de encaminhamento na arvore de domínios descrito
anteriormente. O DNS não se limita a manter e gerenciar endereços Internet.
Cada nome de domínio e um
no em um banco de dados, que pode conter registros definindo varias
propriedades. Por exemplo, o tipo da maquina e a lista de serviços fornecidos
por ela. O DNS permite que seja definido um alias (nome alternativo) para o no.
Também e possível utilizar o DNS para armazenar informações sobre usuários,
listas de distribuição ou outros objetos. O DNS e particularmente importante
para o sistema de correio eletrónico. No DNS aso definidos registros que
identificam a maquina que manipula as correspondências relativas a um dado
nome, identificado assim onde um determinado usuário recebe suas correspondências.
O DNS pode ser usado também para definição de listas para distribuição de
correspondências
O SMTP (Simple Mail
Transfer Protocol) e o protocolo usado no sistema de correio eletrônico na
arquitetura Internet TCP/IP. Um usuário, ao desejar enviar uma mensagem,
utiliza o modulo interface com o usuário para compor a mensagem e solicita ao
sistema de correio eletrónico que a entregue ao destinatário. Quando recebe a
mensagem do usuário, o sistema de correio eletrónico armazena uma copia da
mensagem em seu spool (área do dispositivo de armazenamento), junto com o horário
do armazenamento e a identificação do remetente e do destinatário.
A transferencia da mensagem
e executada por um processo em background, permitindo que o usuário remetente,
após entregar a mensagem ao sistema de correio eletrónico, possa executar
outras aplicações. O processo de transferencia de mensagens, executando em
background, mapeia o nome da maquina de destino em seu endereço IP, e tenta
estabelecer uma conexão TCP com o servidor de correio eletrónico da maquina de
destino.
Note que o processo de
transferencia atua como cliente do servidor do correio eletrónico. Se a conexão
for estabelecida, o cliente envia uma copia da mensagem para o servidor, que a
armazena em seu spool. Caso a mensagem seja transferida com sucesso, o servidor
avisa ao cliente que recebeu e armazenou uma copia da mensagem. Quando recebe a
confirmação do recebimento e armazenamento, o cliente retira a copia da
mensagem que mantinha em seu spool local. Se a mensagem, por algum motivo, não
for transmitida com sucesso, o cliente anota o horário da tentativa e suspende
sua execução. Periodicamente o cliente acorda e verifica se existem mensagens
a serem enviadas na área de spool e tenta transmiti-las.
Se uma mensagem não for
enviada por um período, por exemplo de dois dias, o serviço de correio eletrónico
devolve a mensagem ao remetente, informando que não conseguiu transmiti-la. Em
geral, quando um usuário se conecta ao sistema, o sistema de correio eletrónico
e ativado para verificar se existem mensagens na caixa postal do usuário. Se
existirem, o sistema de correio eletrónico emite um aviso para o usuário que,
quando achar conveniente, ativa o modulo de interface com o usuário para
receber as correspondências. Uma mensagem SMTP divide-se em duas partes: cabeçalho
e corpo, separados por uma linha em branco. No cabeçalho são especificadas as
informações necessárias para a transferencia da mensagem.
O cabeçalho e composto por
linhas, que contem uma palavra-chave seguida de um valor. Por exemplo,
identificação do remetente (palavra-chave "to:" seguida do seu
endereço), identificação do destinatário, assunto da mensagem, etc... No
corpo soa transportadas as informações da mensagem propriamente dita. O
formato do texto e livre e as mensagens são transferidas no formato texto. Os
usuários do sistema de correio eletrónico são localizados através de um par
de identificadores. Um deles especifica o nome da maquina de destino e o outro
identifica caixa postal do usuário.
Um remetente pode enviar
simultaneamente varias copias de uma mensagem, para diferentes destinatários
utilizando o conceito de lista de distribuição (um nome que identifica um
grupo de usuários). O formato dos endereços SMTP e o seguinte:
nome_local@nome_do_dominio onde o nome_do_dominio identifica o domínio ao qual
a maquina de destino pertence (esse endereço deve identificar um grupo de
maquinas gerenciado por um servidor de correio eletrónico). O nome local
identifica a caixa postal do destinatário. O SMTP especifica como o sistema de
correio eletrónico transfere mensagens de uma maquina para outra.
O modulo interface com usuário
e a forma como as mensagens são armazenadas não são definidos pelo SMTP. O
sistema de correio eletrónico pode também ser utilizado por processos de
aplicação para transmitir mensagens contendo textos.
O sistema de gerenciamento
de rede da arquitetura Internet TCP/IP opera na camada de aplicação e
baseia-se no protocolo SNMP (Simple Network Management Protocol). Os padrões
que definem a estrutura de gerenciamento de redes Internet aso descritos nos
documentos RFC-1155 (Structure Of Management Information), RFC-1156 (Management
Information Base) e RFC-1157 (Simples Network Management Protocol). Como no
esquema de gerenciamento OSI, os processos que implementam as funções de
gerenciamento Internet atuam como agentes ou gerentes.
Os agentes coletam junto
aos objetos gerenciados as informações recolhidas pelos clientes, com o
objetivo de detectar a presença de falhas no funcionamento dos componentes da
rede (hosts, gateways, processos executando os protocolos de comunicação,
etc...), para que possam ser tomadas providencias no sentido de contornar os
problemas que ocorrem como conseqüência das falhas. Um objeto gerenciado
representa um recurso que pode ser um sistema hospedeiro (estação de trabalho,
servidor de terminais, etc...), um gateway ou um equipamento de transmissão
(modem, pontes, concentradores, etc...).
Cada objeto gerenciado e
visto como uma coleção de variáveis cujo valor pode ser lido ou alterado. O
gerente envia comandos aos agentes, solicitando uma leitura no valor das variáveis
dos objetos gerenciados (get e response), ou modificando seu valor (put). A
modificação do valor de uma variável pode ser usada para disparar
indiretamente a execução de operações nos recursos associados aos objetos
gerenciados (por exemplo, uma reiniciação). Na troca de informações entre o
gerente e o agente, aso aplicados mecanismos de autenticação para evitar que
usuários não autorizados interfiram no funcionamento da rede. A troca de
mensagens entre o gerente e o agente e definida pelo protocolo SNMP. O SNMP
define o formato e a ordem que deve ser seguida no intercâmbio de informações
de gerenciamento.
As informações sobre os
objetos gerenciados aso armazenados na MIB (Management Information Base), que
contem informações sobre o funcionamento dos hosts, dos gateways, e dos
processos que executam os protocolos de comunicação (IP, TCP, ARP, ...). A MIB
e especificada em ASN.1. O funcionamento do SNMP baseia-se na troca de operações
que permitem que o gerente solicite que o agente lhe informe, ou modifique, o
valor de uma variável de um objeto na MIB. O SNMP define também uma operação
(trap), que permite que um agente informe ao gerente a ocorrência de um evento
especifico. Com o objetivo de permitir o uso do esquema de gerenciamento OSI em
redes que adotam a arquitetura Internet TC/IP, foi definido o protocolo de
gerenciamento CMOT (CMIP Over TCP/IP). O CMOT utiliza o serviço CMIS (Common
Management Information Service) e o protocolo CMIP (Common Management
Information Protocol) funcionando sobre uma conexão TCP/IP. O CMOT e descrito
na RFC-1095.
Para que serve o DNS?
Basicamente ele faz troca de nome por numero. E é exatamente isso. Você da um
nome para ele e ele fala o endereço IP (números) correspondente aquele nome.
Para que serve isso? Pacotes IP tem de ser endereçados por números, mas é
extremamente incomodo para seres humanos decorar números. A solução foi usar
um serviço que fizesse a tradução de um para outro.
Quando você faz uma conexão
com www.shareware.com o seu browser faz uma conexão com um servidor DNS pedindo
o endereço IP correspondente a string "www.shareware.com". O DNS
tenta resolver isso localmente, mas se não conseguir propaga a consulta para
outros servidores DNS ate conseguir (ou não) a resposta, e então retorna o
endereço para o browser que continua a conexão. Os nomes no estilo
aaa.bbbbbb.cc.dddd.e aso conseqüência da estrutura hierárquica usada na
distribuição dos nomes, e essa estrutura é usada para melhorar a eficiência
na busca.