ESTRUTURA E FLUXO DA INFORMAÇÃO GILBERTO OLIVEIRA

Propaganda
MÓDULO DE:
ESTRUTURA E FLUXO DA INFORMAÇÃO
AUTORIA:
GILBERTO OLIVEIRA
Copyright © 2008, ESAB – Escola Superior Aberta do Brasil
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
1
Módulo de: Estrutura e Fluxo da Informação
Autoria: Gilberto Oliveira
Primeira edição: 2008
CITAÇÃO DE MARCAS NOTÓRIAS
Várias marcas registradas são citadas no conteúdo deste módulo. Mais do que simplesmente listar esses nomes
e informar quem possui seus direitos de exploração ou ainda imprimir logotipos, o autor declara estar utilizando
tais nomes apenas para fins editoriais acadêmicos.
Declara ainda, que sua utilização tem como objetivo, exclusivamente na aplicação didática, beneficiando e
divulgando a marca do detentor, sem a intenção de infringir as regras básicas de autenticidade de sua utilização
e direitos autorais.
E por fim, declara estar utilizando parte de alguns circuitos eletrônicos, os quais foram analisados em pesquisas
de laboratório e de literaturas já editadas, que se encontram expostas ao comércio livre editorial.
Todos os direitos desta edição reservados à
ESAB – ESCOLA SUPERIOR ABERTA DO BRASIL LTDA
http://www.esab.edu.br
Av. Santa Leopoldina, nº 840/07
Bairro Itaparica – Vila Velha, ES
CEP: 29102-040
Copyright © 2008, ESAB – Escola Superior Aberta do Brasil
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
2
A
presentação
Este módulo busca apresentar aos alunos de forma clara, através de figuras, gráficos e
sistemas, o funcionamento da engenharia de informação, bem como, apresenta modelos de
desenvolvimento de sistemas de informação.
Ao longo das 30 unidades do módulo, o aluno é convidado a compreender o que é
engenharia de informação através de atividades, exercícios e participação nos fóruns.
Bons estudos !
O
bjetivo
Apresentar ao aluno os conceitos e formas de usar as ferramentas de planejamento em
engenharia de informação.
E
menta
Conhecimento dos aspectos conceituais e práticos sobre informações aplicadas e Dados
como recurso de informações da empresa. Interpretação de Sistemas de Informação,
recursos usados e classificação. Engenharia da Informação - modelos de desenvolvimento
de sistemas de informação; planejamento estratégico de informações; modelagem de dados;
construção, implementação e manutenção de sistemas. Busca de compreensão de quais são
os aspectos de segurança necessários aos sistemas de informação. Conhecimento da
estrutura de acesso aos dados e as vantagens e desvantagens do banco de dados, das
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
3
operações críticas da manipulação de dados e definição de modelos de dados relacionais.
Conhecimento das estruturas (conceituais e práticas) de Rede Neural e estabelecimentos de
relações que possam processar informações com eficiência comparada ao Cérebro.
S
obre o Autor
Especialista em Tecnologia e Gestão em Telecomunicações (MBA Telecomunicações) e
Informática Educacional; graduado em Engenharia Elétrica (Bacharel) e Licenciatura Plena
em Informática, Computação e Mecanografia e Processamento de Dados.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
4
S
UMÁRIO
UNIDADE 1 .............................................................................................................................. 8
A INFORMAÇÃO................................................................................................................... 8
UNIDADE 2 ............................................................................................................................ 15
ENGENHARIA DA INFORMAÇÃO (EI)............................................................................... 15
UNIDADE 3 ............................................................................................................................ 20
SISTEMA DE INTELIGÊNCIA ARTIFICIAL (IA) .................................................................. 20
UNIDADE 4 ............................................................................................................................ 26
REDE NEURAL ARTIFICIAL (RNA).................................................................................... 26
UNIDADE 5 ............................................................................................................................ 33
AGENTES INTELIGENTES EM REDES............................................................................. 33
UNIDADE 6 ............................................................................................................................ 37
PROTOCOLO TCP/IP ......................................................................................................... 37
UNIDADE 7 ............................................................................................................................ 44
TRANSMISSION CONTROL PROTOCOL (TCP) e USER DATAGRAM PROTOCOL (UDP)
............................................................................................................................................ 44
UNIDADE 8 ............................................................................................................................ 49
PROTOCOLOS DE GERÊNCIA ......................................................................................... 49
UNIDADE 9 ............................................................................................................................ 55
RELACIONAMENTOS ADMINISTRATIVOS ...................................................................... 55
UNIDADE 10 .......................................................................................................................... 62
DISPOSITIVO REMOTE MONITORING (RMON)............................................................... 62
UNIDADE 11 .......................................................................................................................... 69
SERVIDOR PROXY ............................................................................................................ 69
Exemplo: ............................................................................................................................. 73
UNIDADE 12 .......................................................................................................................... 74
ESTRUTURA DE DADOS................................................................................................... 74
UNIDADE 13 .......................................................................................................................... 80
LISTAS ENCADEADAS ...................................................................................................... 80
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
5
UNIDADE 14 .......................................................................................................................... 88
HASH .................................................................................................................................. 88
UNIDADE 15 .......................................................................................................................... 90
BANCO DE DADOS ............................................................................................................ 90
UNIDADE 16 .......................................................................................................................... 96
DADOS ............................................................................................................................... 96
UNIDADE 17 ........................................................................................................................ 103
RELACIONAMENTOS ...................................................................................................... 103
UNIDADE 18 ........................................................................................................................ 109
ENTIDADE DE RELACIONAMENTO................................................................................ 109
UNIDADE 19 ........................................................................................................................ 115
MODELO RELACIONAL ................................................................................................... 115
UNIDADE 20 ........................................................................................................................ 122
ATRIBUTOS DE DADOS .................................................................................................. 122
UNIDADE 21 ........................................................................................................................ 130
OPERAÇÕES MATEMÁTICAS E CARTESIANAS ........................................................... 130
UNIDADE 22 ........................................................................................................................ 139
ÁRVORES......................................................................................................................... 139
UNIDADE 23 ........................................................................................................................ 145
SEGURANÇA DE INFORMAÇÕES .................................................................................. 145
UNIDADE 24 ........................................................................................................................ 151
O INIMIGO ........................................................................................................................ 151
UNIDADE 25 ........................................................................................................................ 156
ENGENHARIA SOCIAL ................................................................................................... 156
UNIDADE 26 ........................................................................................................................ 160
VÍRUS, WORMS E TROJANS .......................................................................................... 160
UNIDADE 27 ........................................................................................................................ 165
MEDIDAS DE SEGURANÇA ............................................................................................ 165
UNIDADE 28 ........................................................................................................................ 169
DoS ................................................................................................................................... 169
UNIDADE 29 ........................................................................................................................ 175
SISTEMAS ........................................................................................................................ 175
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
6
UNIDADE 30 ........................................................................................................................ 183
SISTEMAS DE DETECÇÃO DE INSTRUÇÃO DE HOST ................................................ 183
GLOSSÁRIO ........................................................................................................................ 185
BIBLIOGRAFIA .................................................................................................................... 186
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
7
U
NIDADE
1
Objetivo: Conceituação de Informação, Fluxo, Dados, Engenharia da Informação, Sistemas,
Poder da Informação.
A INFORMAÇÃO
Estamos em plena era da sociedade da informação. Usamos, absorvemos, assimilamos,
manipulamos, transformamos, produzimos e transmitimos informação durante todo tempo,
sendo por isso alterada constantemente. Apesar de não termos uma definição precisa do que
é informação, a sabemos intuitivamente, mesmo sem conseguir descrevê-la. No contexto
transmite algum significado às pessoas e empresas.
No mundo dos negócios, as empresas de modo geral visam o lucro, o retorno dos capitais
investidos. No âmbito competitivo as informações têm papel fundamental no sucesso
empresarial. A informática é uma importante contribuição no gerenciamento da enorme
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
8
quantidade de informações diárias, sendo necessários critérios para selecionar e organizar
as que realmente nos interessam. Um sistema de informações adequado e eficiente permite
que uma maior quantidade de benefícios seja produzida, ou alta quantidade de serviços e
clientes sejam atendidos, permitindo a previsão de situações e o planejamento para
manuseá-las, fornecendo bases de dados consistentes, seguras e de qualidade, atendendo a
melhor alocação dos recursos.
Fluxo
Pode ser definido como um tráfego unidirecional com um conjunto de identificação único de
variáveis. Qualquer fluxo não contendo um pacote no período de 64 segundos é considerado
ser um fluxo que expirou. Um fluxo no qual um pacote foi examinado no último segundo é
considerado um fluxo conhecido. Podem ser:
Fluxos unidirecionais: quando seus dados trafegam de A para B, tendo A e B como pontos
finais, podendo ser uma subdivisão do fluxo bidirecional.
Fluxos bidirecionais: quando seus dados trafegam de A para B e B para A, nos fornecendo
uma percepção do comportamento individual dos protocolos, incluindo problemas que podem
se manifestar nos backbones, mas que são mais difíceis de identificar nos pontos finais da
rede.
Dados como Recurso de Informações da Empresa
Uma empresa informatizada informa e deposita seus dados setoriais e globais, que podem
ser manipulados pelo seu sistema de informações corporativo e/ou restrito.
Dados Modelados: deverão pertencer ao acervo da empresa, mantidos os requisitos de
segurança e privacidade definidos na sua área de origem. Os dados deverão ser estudados
no seu formato, na sua origem, meio, natureza e formação, e no seu relacionamento com
outros dados.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
9
Dados Resguardados: deverão apresentar os requisitos básicos de integridade (garantia de
sua veracidade lógica), segurança (define o seu estado físico e os seus aspectos de
privacidade), e documentação. Todos são fundamentais nos processos decisórios de alta
competitividade.
Dados Disponibilizados: deverão possuir a liquidez de uma boa aplicação financeira, sem os
seus riscos inerentes, ou seja, deverá existir um conjunto de ferramentas que permitam o
acesso, a atualização, a consolidação, tabulação e a simulação de informações para os
momentos inesperados de tomada de decisões.
O Poder da Informação
“O poder da informação dentro de uma empresa é proporcional a sua capacidade de ser
compartilhada” (Robert Buckman, pai da gestão de conhecimento nas empresas). “É se
tratando bem dos dados que se obtêm as melhores informações”. Essas definições nem
sempre são observados em empresas que trocam a qualidade pelo imediatismo.
A crescente evolução na busca do conhecimento levou cientistas a estudar formas de
raciocínio, memorização e pensamento (formulação de hipóteses) para máquinas, algoritmos
e sistemas, a fim de permitir, de forma integrada, o processamento de quantidades maiores
de informação, liberando o homem de uma série de tarefas repetitivas como memorização,
cálculos, e, mais recentemente, formulação de hipóteses.
Sistemas
É um conjunto de componentes que interagem para atingir um objetivo comum. Um sistema
pode ser decomposto em sistemas menores denominados subsistemas. Deve-se considerar:
• Os objetivos totais do sistema;
• Ambiente do sistema;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
10
• Os recursos do sistema;
• Os componentes do sistema e suas finalidades;
• A administração do sistema.
Objetivos
Processo de
Transformação
Saídas
Controle e
Avaliação
Entradas
Retroalimentação
Componentes de um sistema
Sistemas de Informações: descreve um sistema automatizado (denominado Sistema de
Informação Computadorizado, incluindo o seu processamento), ou mesmo manual (abrange
pessoas, máquinas, e/ou métodos organizados para coletar, processar, transmitir e
disseminar dados que representam informação para o usuário).
Sistemas de Informações Gerenciais (SIG): ferramenta essencial para implementar a
modernização da gestão da empresa ou instituição, que integra e consolida os dados
operacionais e históricos de todos os demais sistemas corporativos, alimentando o processo
de tomada de decisões com informações gerenciais e estratégicas.
SIG “É um sistema baseado em computador que faz avaliações das informações para
usuários com necessidades similares” (MCLEOD, 1993, p. 427). As informações são
utilizadas por administradores ou não para tomada de decisões e para resolver problemas.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
11
“É um agrupamento organizado de pessoas, procedimentos, banco de dados e
dispositivos usados para oferecer informações de rotina aos administradores e
tomadores de decisões” (STAIR, 1998, p. 38).
Os níveis de decisão obedecem à hierarquia existente na empresa:
• Nível estratégico;
• Nível tático;
• Nível operacional.
A decisão que é tomada em cada nível requer um diferente grau de agregação da
informação.
Sistemas de Informações de Banco de Dados: organizar as informações em Banco de Dados
que se compõe essencialmente de arquivos de dados (data base), conjunto de programas e
linguagem de exploração.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
12
Estrutura de um Sistema
Engenharia da Informação (EI)
É um conjunto de técnicas e lógicas formais que englobam as técnicas de engenharia de
software de forma diferente. É a aplicação de um conjunto interligado de técnicas formais de
planejamento, análise, projeto e construção de Sistemas de Informações (SI) sobre uma
organização como um todo ou em um dos seus principais setores, com o uso de ferramentas
automatizadas que permitem planejar, analisar, projetar, construir e conjugar sistemas de
processamento de dados, de forma integrada:
• Dados: fornece a base de sustentação das informações necessárias para a
sobrevivência da empresa e para suas decisões gerenciais.
• Atividades: nos aspectos funcionais, sustenta os Processos Gerenciais e as atividades
que devem ser exercidas para que a empresa cumpra sua Missão e atinja seus
objetivos, metas e desafios.
• Tecnologias: referencia os recursos tecnológicos e as ferramentas de que a empresa
dispõe para tornar permanente a sua existência e para dar sustentação à sua base de
dados e à execução de suas atividades.
• Pessoas: relacionada com os recursos humanos disponíveis para o desenvolvimento
dos projetos da empresa.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
13
ENGENHARIA DA INFORMAÇÃO
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
14
U
NIDADE
2
Objetivo: Conhecimento das fases e ferramentas de planejamento em Engenharia da
Informação (EI).
ENGENHARIA DA INFORMAÇÃO (EI)
As fases da EI responsáveis pela execução e incorporação de tarefas específicas são
coesas, integradas, interativas e seqüenciais:
Planejamento Estratégico de Informações: identifica as informações necessárias para
suportar seus propósitos, funções e fatores, estabelece o modelo corporativo de dados e o
modelo funcional da empresa, fornecendo parâmetros para fixação de prioridades ao
desenvolvimento de sistemas.
Análise das Áreas de Negócios: detalha as áreas mais carentes de apoio dos sistemas
automatizados. Com a aplicação da Prototipação como recurso permitirá uma participação
mais intensa do usuário e a migração mais sólida da análise para o projeto.
Projeto: analisada a área de negócios priorizada e identificados os processos gerenciais e as
atividades críticas, iniciamos a fase de Projeto em que se estabelece o sub-modelo de dados
de cada atividade envolvida.
Construção: esgotadas todas as filtragens e refinamentos necessários na fase de projeto
passamos a executar a construção do sistema enfocado, com a utilização das ferramentas
disponíveis.
Manutenção: se as quatro fases anteriores tenham sido executadas criteriosamente, a
manutenção restringir-se-á a ocorrências eventuais, visto que a estabilidade do modelo de
dados e dos processos vinculados foram bem tratados, e somente mudanças políticas,
econômicas e legislativas do ambiente externo poderão teoricamente resultar em alterações.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
15
Terminologia – A importância da Padronização: é uma forma básica e essencial para se
manter o diálogo e o entendimento uniforme entre todos os participantes do projeto, desde os
técnicos de processamento de dados até os dirigentes e usuários envolvidos.
Documentação das fases da Engenharia da Informação: é necessário manter permanente a
documentação atualizada, condição fundamental para pleno conhecimento, análise e
manutenção do sistema.
Ferramentas CASE (Computer-Aided Software Engineering): voltadas a dar apoio e
possibilitar o desenvolvimento gráfico, a interação e a documentação totais ou parciais das
cinco fases anteriores.
• Ferramentas de Análise Estática;
• Ferramentas de Análise Dinâmica;
• Ferramentas de Gerenciamento de Testes;
• Ferramentas de Testes Cliente/Servidor;
• Ferramentas de Reengenharia;
• Ferramentas de Engenharia da Informação;
• Ferramentas de Gerenciamento e Modelagem de Processo;
• Ferramentas de Planejamento de Projeto;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
16
• Ferramentas de Análise de Risco;
• Ferramentas de Gerenciamento de Projeto;
• Ferramentas de Auditoria de Requisitos (Tracing).
Usuários – A necessidade de comprometimento no Projeto: a globalização e a tecnologia
trazem uma influência intensa nos hábitos e comportamentos das pessoas. O
comprometimento das pessoas é uma jornada permanente, é fazer com que se superem a
todo o momento e sejam percebidas de forma positiva. O usuário é um perfeito aliado no
desenvolvimento de sistemas voltados para sua área já que vive diariamente a sua área de
negócio, conhece profundamente os processos desenvolvidos, a periodicidade de execução
das tarefas, e as necessidades de informação para gerir as atividades.
Planejamento Estratégico de Informações: é a primeira fase da Engenharia da Informação
onde se estabelecem os propósitos básicos para implementar sistemas computadorizados
estáveis e de apoio à tomada de decisões.
Para facilitar a comunicação, o analista deve:
• Procurar conhecer bem os termos técnicos e gírias empregadas pelos usuários;
• Definir cada termo em um Dicionário de Termos, se possível;
• Anotar os sinônimos;
• Iniciar o processo de análise sem idéias prévias de como é a Organização, evitando
pré-conceitos, pois apesar de ser do mesmo ramo de negócio possuem suas
particularidades;
Feito isso, só assim o analista deve traçar seu planejamento, visando:
• Entrada: problemas ou áreas a melhorar na Organização;
• Objetivo: definir informações necessárias para resolver problemas identificados;
• Resultado: conjunto de informações necessárias para resolver problemas.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
17
Para isso é necessário:
Entrevistas (técnicas utilizadas): instrumento de pesquisa fundamental no processo de
captação de informações para a elaboração de um plano que reflita os anseios dos
executivos de uma determinada organização, através do levantamento prévio dos Objetivos,
Fatores Críticos de Sucesso, Problemas, Desafios, Metas, etc.
Questionários de Apoio às Entrevistas: sugere-se a elaboração e aplicação de um
questionário objetivo, dirigido e diferenciado, de forma a compatibilizar as informações
fornecidas pelos usuários durante as entrevistas.
JAD (Join Application Design): substitui as entrevistas individuais de levantamento de dados.
É um método específico de pesquisa desenvolvido pela IBM-Brasil, com o objetivo de extrair
informações dos usuários (especialistas no negócio) através de reuniões ou sessões de
trabalho.
Produtos: modelo da organização, mostrando as funções básicas da empresa em um
diagrama de decomposição funcional. Deve-se considerar:
• Modelo de dados corporativo da empresa;
• Análise dos sistemas atuais;
• Estabelecimento de prioridades para o desenvolvimento de sistemas de informações.
O Modelo de Dados Corporativo deverá conter todas as informações básicas necessárias
para o negócio da empresa, a fim de cumprir sua missão e os seus objetivos. Para isso, deve
incorporar todos os dados de real valia, identificados a partir das necessidades de
informações relatadas pelos usuários e registradas nos questionários de apoio.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
18
Modelo de Dados Corporativo
Faça uma síntese sobre Agentes inteligentes em Redes.
Busque as informações na Internet e em livros sobre o tema (Redes Neurais Artificiais).
TCP/IP e SUA IMPORTÂNCIA NO FLUXO DE INFORMAÇÃO
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
19
U
NIDADE
3
Objetivo: Conhecimento dos Componentes de Sistema de Inteligência Artificial (IA); Origem
da Rede Neural Artificial (RNA).
SISTEMA DE INTELIGÊNCIA ARTIFICIAL (IA)
Define-se Inteligência Artificial (IA) como princípios que permitem simular a inteligência
humana por meio da criação de modelos computacionais de processos cognitivos e
desenvolver sistemas (hardware/software) mais úteis com capacidade de dedução e
percepção.
IA é simplesmente uma maneira de fazer o computador pensar de maneira inteligente, ou
seja, permite que o computador pense. Imita o processo básico de aprendizado humano,
onde novas informações são absorvidas e se tornam disponíveis futuramente. Comparado à
mente humana, que pode incorporar novos conhecimentos sem alterar seu funcionamento e
sem atrapalhar todos os outros fatos que já estão armazenados no cérebro, um programa IA
funciona do mesmo modo. Mostra um método simples e estruturado de projetar programas
complexos de tomada de decisão.
Todos os elementos nos quais consiste o processo humano de tomada de decisão –
objetivos, fatos, regras, mecanismos de inferência – devem ser reunidos em um programa de
computador para que ele possa ser realmente qualificado como um programa que possui IA.
Os componentes de um sistema de IA baseado em regras:
• Define fatos;
• Obtém dados;
• Define objetivos;
• Define a solução;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
20
• Obtém novos objetivos via regras e inferências.
Pode-se modificar uma ou mais partes de um projeto sem desarranjar a estrutura do sistema
de raciocínio, pois a “mente” do computador é capaz de atuar uma série de regras
previamente manipuladas. Se pudermos determinar o que nossas mentes fazem em um
determinado estágio de qualquer processo de tomada de decisão, podemos facilmente
encontrar nesse projeto de programa uma seção que corresponda a um aspecto equivalente
da Inteligência.
Redes Neurais
O cérebro humano é considerado o mais fascinante processador baseado em carbono
existente, composto por aproximadamente 10 bilhões neurônios, relacionados a todas as
funções e movimentos do organismo. Os neurônios conectam-se uns aos outros através de
sinapses, e juntos formam uma grande rede (rede neural). As sinapses transmitem estímulos
por todo o corpo humano através de diferentes concentrações de sódio (Na+) e potássio (K+).
Esta
grande
rede
proporciona
uma
fabulosa
capacidade
de
processamento
e
armazenamento de informação.
O sistema nervoso é formado por um conjunto extremamente complexo de neurônios, nos
quais a comunicação é realizada através de impulsos. Quando um impulso é recebido, o
neurônio o processa, e passado um limite de ação, dispara um segundo impulso que produz
uma substância neurotransmissora o qual flui do corpo celular para o axônio (que por sua
vez pode ou não estar conectado a um dendrito de outra célula). O neurônio que transmite o
pulso pode controlar a freqüência de pulsos aumentando ou diminuindo a polaridade na
membrana pós-sináptica. Eles têm um papel essencial na determinação do funcionamento,
comportamento e do raciocínio do ser humano.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
21
Ao contrário das redes neurais artificiais, as redes neurais naturais não transmitem sinais
negativos, sua ativação é medida pela freqüência com que emite pulsos, contínuos e
positivos. As redes naturais não são uniformes, apresentando uniformidade apenas em
alguns pontos do organismo. Seus pulsos não são síncronos ou assíncronos, devido ao fato
de não serem contínuos.
Com o desenvolvimento da IA da informática surgiu a idéia de representar por meio de
determinados programas o funcionamento do processo de aprendizagem do cérebro
humano. A tentativa de simular a rede neural do cérebro deu origem à Rede Neural Artificial
(RNA), que são sistemas não-lineares.
Uma rede neural pode possuir uma ou múltiplas camadas. Com três camadas, poderíamos
ter a camada de entrada (onde as unidades recebem os padrões, possuindo uma unidade
especial conhecida como “bias”), a camada intermediária (onde é feito processamento e a
extração de características), e a camada de saída (que conclui e apresenta o resultado final).
Tecnicamente, o número de camadas define a capacidade de representação das relações
entre o espaço de entrada e de saída. Quanto maior o número de camadas, melhor a
capacidade de aprendizado. A inexistência da camada intermediária, característica do
modelo Perceptrons, representa somente relações linearmente independentes. A existência
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
22
de camadas intermediárias, característica do modelo Perceptron de Múltipla Camada (MLP),
retira tal limitação. Se houver apenas uma camada intermediária, o MLP pode representar
qualquer função contínua. Duas ou mais camadas, ampliam o universo de representação a
qualquer função contínua ou não.
Os trabalhos sobre redes neurais se iniciaram na década de 40, na Universidade de Illinois,
com o neurofisiologista McCulloch e o matemático Walter Pitts, publicadas no artigo A
Logical Calculus of the Ideas Immanent in Nervous Activity (1943). Os autores estabeleceram
uma analogia entre o processo de comunicação das células nervosas vivas e o processo de
comunicação por transmissão elétrica e propuseram a criação de neurônios formais. Em
1947 eles conseguiram demonstrar que era possível conectar os neurônios formais e formar
uma rede capaz de executar funções complexas.
As redes neurais possuem diferentes denominações:
redes neuronais, modelos de redes neurais artificiais,
modelos conectistas e sistemas neuromórficos. Assim,
como o cérebro humano é composto de células
biológicas, a rede neural possui um neurônio artificial
semelhante, pois ainda não é possível copiar totalmente
o sistema de processamento paralelo existente nas
células biológicas. O objetivo da neurocomputação é o
aprendizado da máquina baseado em modelos que
possam ser implementados para desempenhar funções
próprias do cérebro humano.
As pesquisas em RNA tentaram simular o cérebro humano quanto a sua capacidade de
aprender e se adaptar a eventuais mudanças. Portanto, têm como principal objetivo simular a
capacidade de aprendizado e de generalização do cérebro humano podendo executar
tarefas que os programas convencionais não conseguiam realizar, pois não tinham essa
característica de aprendizagem e adaptabilidade.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
23
O psicólogo Donald Hebb (1949) elaborou uma teoria baseada no processo de
aprendizagem que ocorre no cérebro humano, servindo de base para a aprendizagem das
redes neurais. O processo de aprendizado é geralmente um processo interativo de
adaptação aplicado aos parâmetros da rede (pesos e thresholds) onde os conhecimentos
são armazenados após cada interação.
Em 1956, Nathaniel Rochester desenvolveu um modelo de RNA no qual era simulado a
interconexão de centenas de neurônios e um sistema para verificar o comportamento da rede
diante dos estímulos externos.
No entanto, a Rede Perceptron criada por Frank Rosenblat (1957) se tornou mais popular.
Porém, recebeu severas críticas por Mavin Minsky e Seymour Papert no livro Perceptron, em
1969, argumentando que os Perceptrons apresentavam limitações em suas aplicações, não
possuíam capacidade de aprendizado para resolver problemas simples e não possuíam
adequada sustentação matemática.
A primeira rede capaz de imitar o cérebro humano utilizando processadores paralelos (ao
invés de um único processador) surgiu com Widrow e Hoff, em 1959, com a estruturação da
Rede ADALINE, (ADAptative LInear Element) mais tarde denominada MADALINE (Many
ADALINE).
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
24
Apesar de terem surgido trabalhos significativos na década de 60 e 70, como os de Werbos,
Anderson, Grossberg, as pesquisas com as redes neurais só voltaram a recuperar sua
credibilidade (em 1982) com os trabalhos do físico e biólogo John Hopfield.
As RNA podem ser entendidas como conjuntos bem estruturados de unidades de
processamentos, interligados por canais de comunicação, cada qual tendo um determinado
peso correspondente a um valor numérico. Consistem de várias unidades de processamento
(neurônios artificiais) interconectados entre si formando uma determinada disposição
estrutural de camadas (entrada, intermediárias e saída) e conexões entre elas.
REDES NEURAIS: Sistema de Inteligência Artificial
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
25
U
NIDADE
4
Objetivo: Conhecimento dos tipos de redes mais comuns, dificuldades, algoritmos,
aplicações.
REDE NEURAL ARTIFICIAL (RNA)
Atualmente existem dezenas de modelos de redes neurais estruturados para as mais
diversas aplicações.
Os mais conhecidos são:
Rede neural de mcculloch-pitts (mcp): representa o neurônio como uma unidade de limite
binário que pode executar operações lógicas básicas (NOT, OR e AND), por meio do ajuste
adequado dos pesos. Apesar de cada neurônio possuir apenas uma entrada e uma saída, a
interligação de várias unidades forma uma rede capaz de executar ações complexas.
Perceptron de camada simples: desenvolvida por Frank Rosemblatt (1958) são utilizadas
para reconhecimento e classificação de padrões e resolução de problemas lógicos que
envolvem os conectivos AND e OR.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
26
MLP (Multi Layer Perceptron) ou MLFF (Multi Layer Feed Forward): desenvolvida por
Minsky
e
Papert
(1969) realizam
operações
lógicas
complexas,
reconhecimento,
classificação de padrões, controle de robôs e processamento da fala.
Redes BPN (Back Propagtion Network): desenvolvida por E. Rumelhart, G. E. Hilton e R.
J. Williams (1986) é utilizada na previsão anual de aparecimentos de manchas solares, em
operações lógicas complexas, classificação de padrões e análise da fala.
Rede de hopfield: desenvolvida por J. J. Hopfield (1982) é utilizada para reconhecimento de
imagens.
Redes de kohonen: desenvolvida pelo Prof. Teuvo Kohonen (1987) é utilizada para
classificação de padrões, otimização de problemas e simulações.
Rede neural adalanie (adaptive linear neuron): desenvolvida por Widrow e Hoff (1959), é
rede de uma camada com backpropagation utilizada para reconhecimento de padrões, mas
só reconhece os padrões nos quais foi treinada (Regra de Widrow-Hoff). Quando transposta
para uma rede de backpropagation de multicamadas é denominada de MADALINE
(Multilayer ADALINE) e apresenta um alto grau de tolerância a falhas.
ART (ADAPTATIVE RESONANCE THEORY) de GROSSBERG: representa um único
neurônio artificial que recebe input de várias outras unidades semelhantes. É um programa
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
27
que tem por base características da teoria da ressonância adaptativa, que consiste na
habilidade de se adaptar diante de novos inputs. É utilizada para reconhecimento de sinais
de radar e processamento de imagens.
CNM
(COMBINATORIAL
NEURAL
MODEL):
utilizada
no
processamento
de
reconhecimento, análise e classificação de dados.
SOM (SELF ORGANIZING MAP) de KOHONEN: é uma rede competitiva com a habilidade
de fazer mapeamentos entre dados de input e output. Capaz de equilibrar um bastão
aplicando forças na sua base, o objetivo da rede é estabelecer um mapeamento entre as
variáveis do estado do bastão e a força ideal para manter o equilíbrio.
CPN (COUTERPROPAGATION NETWORK): é uma rede competitiva desenhada para
funcionar como uma tabela de consulta auto-programável com a habilidade de interpolar
dados de entrada. Pode determinar a rotação angular de um objeto na forma de foguete que
lhe é apresentada como um padrão bitmap. O desempenho da rede é limitado pela resolução
do bitmap.
BAM (BIDIRECTIONAL ASSOCIATIVE MEMORY): possui uma memória associativa
bidirecional capaz de fornecer o número do telefone associado ao nome que lhe foi fornecido
e vice-versa. Permite certo grau de tolerância a erros, quando os dados fornecidos possuem
um padrão corrompido.
NEOCOGNITRON: é uma rede que possui múltiplas camadas com conexões parciais entre
as unidades das várias camadas. Foi desenvolvida para reconhecer caracteres alfabéticos
escritos a mão. É de treinamento difícil, mas possui boa tolerância a erros, pois reconhece os
caracteres mesmo com certa inclinação na escrita ou pequenas distorções na imagem.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
28
Aplicações das Redes Neurais:
• Análise de assinaturas;
• Análise de características demográficas para marketing;
• Análise do grau de satisfação de um cliente;
• Controle de processos industriais;
• Detecção de cartões de crédito falsos;
• Monitoramento para manutenção de motores;
• Previsão da bolsa de valores e cotação de moedas;
• Previsão do mercado financeiro;
• Reconhecimento de caracteres e impressões digitais;
• Reconhecimento ótico de caracteres.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
29
Algoritmo de Aprendizado:
É um conjunto de regras bem definidas que são utilizadas para solucionar um determinado
problema de aprendizado. Podemos encontrar diferentes algoritmos de aprendizado
agrupados em quatro categorias:
• Aprendizado por correção de erro;
• Hebbiano;
• Competitivo;
• De Boltzmann.
Quanto ao tipo de treinamento para aprendizado as redes apresentam:
Aprendizado Supervisionado: exige a presença de um agente externo (tutor) que avalia e
informa à rede sobre a sua performance. O tutor adquire conhecimento da rede na forma de
mapeamentos (padrões) de entrada-saída.
Aprendizado não-Supervisionado: não possui um tutor (crítico). A rede é autônoma,
trabalha com os dados que lhes são apresentados e aprende a refletir sobre as suas
propriedades no seu output. Esse tipo de aprendizado pode ser utilizado com um algoritmo
competitivo ou hebbiano.
Aprendizado por Reforço: possui um crítico externo que avalia as respostas fornecidas
pela rede e direciona o ajuste dos pesos. O aprendizado é on-line, feito por um processo de
tentativas e erros, que visa maximizar um dado índice de desempenho, denominado de sinal
de reforço.
Vantagens da Utilização das Redes Neurais Artificiais:
• Inferência de múltiplas variáveis;
• Grande tolerância a falhas;
• Modelamento direto do problema;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
30
• Paralelismo inerente.
Características que definem uma rede neural artificial:
• Arquitetura;
• Capacidade de aprendizado;
• Habilidade Funcional;
• Vantagens da Utilização das Redes Neurais Artificiais;
• Inferência de múltiplas variáveis;
• Grande tolerância a falhas;
• Modelamento direto do problema;
• Paralelismo inerente.
Dificuldades das Redes Neurais: As redes neurais artificiais trabalham com um número
reduzido (centenas) de neurônios artificiais, enquanto as redes neurais biológicas trabalham
com milhões de neurônios.
A modelagem de uma rede neural depende da análise consistente de um sistema complexo,
implicando em dificuldades para definir qual arquitetura melhor responde às necessidades do
problema proposto, e na escolha de quais dados são verdadeiramente relevantes para o
processamento. Além da entrada, também devemos definir de forma ideal os parâmetros de
aprendizagem, os pesos sinápticos e os níveis de tendência, os quais são de grande
importância para o processo de aprendizado. Outra dificuldade encontrada seria a extração
de regras que justifiquem as decisões tomadas pela rede, as quais representariam o
conhecimento adquirido durante o treinamento. Por este motivo, as redes neurais são
apelidadas de “Caixas Pretas”.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
31
Contudo, pesquisadores vêm tentando minimizar as dificuldades da implementação das
redes neurais através de algoritmos que possam extrair regras (como o algoritmo KBANN –
Knowledge Base Neural Networks) e do uso de sistemas híbridos, combinando, por exemplo,
uma rede neural com algoritmos genéticos. Isso poderá definir melhor as taxas de
aprendizado, pesos sinápticos e nível tendencioso.
Dicas de leitura:
Esteganografia
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
32
U
NIDADE
5
Objetivo: Conhecimento de Agentes Inteligentes em redes e aplicações.
AGENTES INTELIGENTES EM REDES
“Agente é uma entidade de software persistente dedicada a um propósito
específico. O fato do agente ser persistente o distingue das sub-rotinas, pois os
agentes tem suas próprias idéias sobre como resolver os seus problemas, ou
como organizar sua própria agenda. Propósitos especiais os diferenciam das
aplicações multifuncionais, já que os agentes são tipicamente menores” (SMITH
et al apud ITO, 1999).
“Agente é uma entidade cognitiva, ativa e autônoma, ou seja, que possui um
sistema interno de tomada de decisões. Agindo sobre o mundo e sobre os
outros agentes que o rodeiam, e, por fim, que é capaz de funcionar sem
necessitar de algo ou de alguém para guiá-lo (tem mecanismos próprios de
percepção do exterior)”.
River (1995) associa aos agentes inteligentes a posse de uma ou mais características:
• Uma base de conhecimento pré-definida e um mecanismo de inferência;
• Um sistema de aquisição de conhecimento;
• Um mecanismo de aprendizagem neuronal.
Nissen (1995) apresenta cinco componentes da infra-estrutura necessária à atuação dos
agentes inteligentes:
• Recursos de execução;
• Recursos de comunicação;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
33
• Recursos de transporte;
• Recursos de empacotamento;
• Segurança integrada.
Agentes Inteligentes Cooperando para Gerenciamento de Serviços em uma Rede de
Comunicação: uma comunidade aberta de diferentes sistemas de computadores (agentes)
coopera para solucionar uma variedade de problemas em um sistema de gerenciamento de
redes de telecomunicações complexo. Os agentes são chamados a entrar ou sair da
comunidade que eles formam. Têm como funções estabelecimento e restauração de rotas
em uma rede física e satisfazer as necessidades do cliente. O planejamento do fornecimento
e restauração do serviço é realizado em um contexto de conhecimento incompleto.
Processos de alto nível são descritos para solução destes problemas, tendo como
característica ser distribuído e flexível a falhas. Este sistema de controle distribuído suporta a
possibilidade de melhorar o desempenho sobre o sistema centralizado e o escopo de
redução da quantidade total de dados passados para um ponto central, e a flexibilidade de
permitir ao sistema distribuído uma degradação mais suave.
Agentes Inteligentes em Logística e Simulação: um sistema de planejamento e controle
para automatização de uma célula de trabalho está sendo desenvolvido para fornecer um
melhor desempenho em trabalhos relativos à logística e simulação. Para lidar com a
complexidade dinâmica de um ambiente de produção o sistema de planejamento necessita
de habilidades de adaptação dinâmica e autocontrole. Para alcançar esta habilidade, a tarefa
de planejamento é distribuída a vários agentes inteligentes virtuais, cada qual suporta uma
tarefa específica e possui suas próprias estratégias de solução e é capaz de solicitar serviços
de outros agentes. A simulação desempenha um papel crucial no sistema de planejamento e
é usada por outros agentes para revisar suas estratégias de planejamento e para determinar
as conseqüências futuras de suas decisões.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
34
Aplicações de Agentes Inteligentes na Internet:
Agentes Inteligentes são entidades autônomas dotadas de uma base de conhecimento e
capazes de interagir com o meio em que estão tomando decisões que irão auxiliar ou
substituir o trabalho de um agente humano.
Applets são conjuntos de código de programa que podem ser descarregados, instanciados e
executados em WEB browsers.
Aglet é um agente para Internet com a capacidade adicional de ser transportado pela rede.
São objetos Java que podem mover-se de um host ao outro, parar a execução, despachar-se
para um host remoto e executar-se lá autonomamente, traçando seu próprio itinerário. Para
implementar um Aglet pode ser usada a plataforma IBM Aglet Workbench para programação
de agentes móveis. Trata-se de um ambiente para Windows destinado à programação de
aglets em Java, linguagem utilizada por permitir a criação de aplicativos (applets, servlets e
aglets) independentes da plataforma em que serão executados, facilitando a movimentação
de um sistema de um computador a outro.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
35
Agentes de Correio Eletrônico:
Maxims, implementado em Macintosh Commom Lisp, comunica com o pacote comercial de
e-mails EUDORA usando Apple Events. É um agente que ajuda o usuário com seu e-mail.
Ele aprende a priorizar, deletar, responder, organizar e arquivar mensagens de e-mail
recebido pelo usuário. Tem como principal técnica de aprendizado o raciocínio baseado em
memórias. Se o usuário realiza uma ação, o agente memoriza toda a situação gerada, por
exemplo, se o usuário salva uma mensagem particular após tê-la lido, o agente adiciona a
descrição desta situação e a ação tomada pelo usuário em sua memória de exemplos.
Quando uma nova situação ocorre, o agente compara-a com seu banco de memória e
verifica qual ação tomar.
Faça uma síntese sobre SGBD
Busque as informações na Internet e em livros sobre o tema (Banco de Dados).
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
36
U
NIDADE
6
Objetivo: Conceituação de Transmission Control Protocol (TCP) e Internet Protocol (IP) e sua
importância no fluxo de informação; Definição de classes e endereços.
PROTOCOLO TCP/IP
Hoje, as redes de computadores baseadas em protocolos Transmission Control
Protocol/Internet Protocol (TCP/IP), como a Internet cresce assustadoramente, pelo fato
destes protocolos serem de fácil implementação e manutenção, além de permitirem a
interligação de redes locais através de outras redes de longa distância, com um desempenho
considerável. Atualmente é possível ter-se uma implementação local de redes TCP/IP, sem
conectá-las a outras redes, caracterizando uma rede Intranet, muito utilizada para
implementar redes locais em empresas. Porém um grande problema surge para os
administradores de rede, pois é necessário monitorar e controlar o funcionamento,
crescimento e os parâmetros dessas redes, garantindo o seu correto desempenho.
Um esquema de gerenciamento de rede deve ser capaz de detectar e corrigir possíveis erros
que venham a ocorrer durante as transmissões. Este mesmo esquema deve estar apto a
estabelecer procedimentos para a previsão de problemas futuros. Fazendo uma monitoração
do tráfego da rede é possível detectar qual máquina na rede está gerando maior tráfego e
pode-se prever alguma forma de controle deste tráfego.
O gerenciamento da rede realizado pelo protocolo Simple Network Management Protocol
(SNMP) permite que uma ou mais máquinas na rede sejam designadas gerentes da rede.
Esta máquina recebe e processa informações de todas as outras máquinas da rede
(agentes), gerenciando toda a rede e detectando facilmente problemas ocorridos.
As informações coletadas pela máquina gerente estão armazenadas nas próprias máquinas
da rede, em uma base de dados conhecida como Management Information Base (MIB).
Nesta base de dados estão gravadas todas as informações necessárias para o
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
37
gerenciamento deste dispositivo, através de variáveis que são requeridas pela estação
gerente.
Entretanto, em uma interligação de diversas redes locais, pode ser que uma rede local esteja
funcionando perfeitamente, mas sem conexão com as outras redes, e, conseqüentemente,
sem conexão com a máquina gerente. O ideal é implementar em alguma máquina, dentro
desta rede local, um protocolo para gerenciamento que permita um trabalho off-line, isto é,
que a rede local possa ser gerenciada, ou pelo menos tenha suas informações de
gerenciamento
coletadas,
mesmo
que
estas
informações
não
sejam
enviadas
instantaneamente à estação gerente.
O protocolo Remote Monitoring (RMON) permite uma implementação neste sentido, devendo
ser implementado em diversas máquinas ao longo da rede. É possível, ainda, que uma
estação com implementação RMON, envie dados à estação gerente apenas em uma
situação de falha na rede. Isto contribuiria para redução do tráfego de informações de
controle na rede (overhead).
A instalação de um servidor Proxy diminui o tráfego na rede facilitando seu gerenciamento,
servindo como cache dos documentos acessados por uma rede local. Pode também
restringir o acesso a alguns documentos ou a utilização de algum protocolo, garantindo
segurança à rede.
O desenvolvimento da arquitetura Internet Transmission Control Protocol/Internet Protocol
(TCP/IP) foi patrocinado pela Defense Advanced Research Projects Agency (DARPA). O
TCP/IP (Conjunto de Protocolos Internet) foi desenvolvido para permitir que computadores
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
38
compartilhem recursos dentro de uma rede. Por serem os mais conhecidos, é comum se
referir o TCP e IP para referenciar toda a família de protocolos. Alguns deles, como TCP, IP
e User Datagram Protocol (UDP), provêm funções de baixo nível, necessárias a diversas
aplicações. Os outros protocolos são execução de tarefas específicas, como transferência de
arquivos entre computadores, envio de mensagens.
Os serviços TCP/IP mais importantes são [Hedrick88]:
• Transferência de Arquivos (File Transfer Protocol – FTP): permite a um usuário em um
computador copiar arquivos de outro computador, ou enviar arquivos para outro
computador. A segurança é garantida requerendo-se que o usuário especifique um
username e uma senha, para acesso ao outro computador.
• Login Remoto (Network Terminal Protocol – TELNET): permite que um usuário se log
(tenha uma seção de trabalho) em outro computador da rede. A seção remota é
iniciada especificando-se o computador em que se deseja conectar. Até que a seção
seja finalizada, tudo o que for digitado será enviado para o outro computador. O
programa de TELNET faz com que o computador requisitante seja totalmente invisível,
tudo é enviado diretamente ao computador remoto.
• Eletronic Mail: permite ao usuário enviar mensagens para usuários em outro
computador. Deve ser mantido um arquivo de mail para cada usuário onde será
adicionado novas mensagens. Para que um usuário possa enviar um mail, o programa
espera ser capaz de manter uma conexão com o computador destino.
O protocolo TCP/IP é baseado em um modelo que pressupõe a existência de um grande
número de redes independentes conectadas através de gateways. Um usuário pode ter
acesso a computadores ou outros recursos em qualquer uma destas redes. As mensagens,
muitas vezes, passam por uma grande quantidade de redes para atingirem seus destinos. O
roteamento destas mensagens deve ser completamente invisível para o usuário. Assim, para
ter acesso a um recurso em outro computador o usuário deve conhecer o endereço Internet
deste computador. Atualmente este endereço é um número de 32 bits, escrito como 4
números decimais, cada um representando 8 bits de endereço.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
39
Internet Protocol (IP)
Protocolo de Internet, usado entre duas ou mais máquinas em rede para encaminhamento
dos dados, enviados em blocos (como pacotes ou datagramas). No IP nenhuma definição é
necessária antes do host tentar enviar pacotes para um host com o qual não comunicou
previamente.
O IP é o elemento comum encontrado na internet pública dos dias de hoje. É descrito no
RFC 791 da IETF, publicado pela primeira vez em Setembro de 1981. Este documento
descreve o protocolo da camada de rede mais popular e atualmente em uso. Esta versão do
protocolo é designada de versão 4, ou IPv4. O IPv6 tem endereçamento de origem e destino
de 128 bits, oferecendo mais endereçamentos que os 32 bits do IPv4.
O IP, padrão para redes Internet, é baseado em um serviço sem conexão. Sua função é
transferir blocos de dados (datagramas) da origem para o destino, hosts identificados por
endereços IP. Este protocolo também fornece serviço de fragmentação e remontagem de
datagramas longos, para que estes possam ser transportados em redes onde o tamanho
máximo permitido para os pacotes é pequeno.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
40
Como o serviço fornecido pelo protocolo IP é sem conexão, cada datagrama é tratado como
uma unidade independente que não possui nenhuma relação com qualquer outro datagrama.
A comunicação é não-confiável, pois não são utilizados reconhecimentos fim-a-fim ou entrenós intermediários, nem empregados mecanismos de controle de fluxo e de controle de
erros. Apenas uma conferência simples do cabeçalho é realizada, para garantir que as
informações nele contidas, usadas pelos gateways para encaminhar datagramas, estão
corretas. O IP oferece um serviço de datagramas não-confiável (chamado de melhor
esforço), ou seja, o pacote vem quase sem garantias, podendo chegar desordenado ou
duplicado se comparado com outros pacotes enviados entre os mesmos hosts, ou podem ser
perdidos por inteiro. Se a aplicação precisa de confiabilidade, esta é adicionada na camada
de transporte.
Os roteadores são usados para reencaminhar datagramas IP através das redes
interconectadas na segunda camada. A falta de qualquer garantia de entrega significa que o
desenho da troca de pacotes é feito de forma mais simplificada. Se a rede cai, reordena ou
de outra forma danifica um grande número de pacotes, o desempenho observado pelo
utilizador será pobre, logo a maioria dos elementos de rede tentam arduamente não fazer
este tipo de coisas – melhor esforço. Contudo, um erro ocasional não irá produzir nenhum
efeito notável.
Endereços IP: pode ser considerado como um conjunto de números que representa o local
de um determinado equipamento (normalmente computadores) em uma rede privada ou
pública. Para um melhor uso dos endereços de equipamentos em rede pelas pessoas,
utiliza-se a forma de endereços de domínio, tal como “www.wikipedia.org”. Cada endereço de
domínio é convertido em um endereço IP pelo DNS. Este processo de conversão é
conhecido como resolução de nomes de domínio.
O endereço IP, na versão 4 (IPv4), é um número de 32 bits escrito com quatro octetos e no
formato decimal (128.6.4.7). A primeira parte do endereço identifica uma rede específica na
inter-rede, a segunda identifica um host dentro dessa rede. Um endereço IP não identifica
uma máquina individual, mas uma conexão à inter-rede. Assim, um gateway conectando à n
redes tem ‘n’ endereços IP diferentes, um para cada conexão.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
41
O IP utiliza três classes diferentes de endereços pelo fato do tamanho das redes que estão
interligadas variar muito, indo desde redes locais de computadores a redes públicas
interligando milhares de hosts [Soares97].
Examinando os primeiros bits de um endereço, o software do IP consegue determinar
rapidamente qual a classe, e logo, a estrutura do endereço.
Classe A: primeiro bit é 0 (zero), é o mais significativo, os outros 7 bits do primeiro octeto
identificam a rede, e os 24 bits restantes definem o endereço local. Essa classe é usada para
redes de grande porte, seus endereços variam de 1 a 126, e cada rede tem capacidade de
endereçar cerca de 16 milhões de hosts.
Classe B: primeiros dois bits são 10 (um, zero). Usa dois octetos para o endereço da rede e
dois para endereços de hosts, que variam na faixa de 128.1 até 191.255 (os números 0 e
255 do segundo octeto, e 127 do primeiro octeto são usados para funções especiais e
testes), e cada rede pode interligar cerca de 65 mil hosts.
Classe C: primeiros três bits são 110 (um, um, zero). Utilizam três octetos para identificar a
rede e apenas um octeto para o host. Os endereços de rede situam-se na faixa de 192.1.1
até 223.254.254 (os endereços acima de 223 no primeiro octeto foram reservados para uso
futuro), e cada rede pode endereçar 254 hosts.
Classe D (endereço multicast): primeiros quatro bits são 1110 (um, um, um, zero).
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
42
Classe E (endereço especial reservado): primeiros cinco bits são 11110 (um, um, um, um,
zero).
Tabela 1: Intervalo das classes de endereços IPs.
Classe
Gama de Endereços
Nº Endereços por Rede
A
1.0.0.0 até 127.255.255.255
16 777 216
B
128.0.0.0 até 191.255.255.255
65 536
C
192.0.0.0 até 223.255.255.255
256
D
224.0.0.0 até 239.255.255.255
multicast
E
240.0.0.0 até 247.255.255.255
uso futuro
Faça uma síntese sobre DDoS – Distributed Denial-of-Services Attacks
Busque as informações na Internet e em livros sobre o tema (Ataques a Redes).
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
43
U
NIDADE
7
Objetivo: Definição e característica de TCP e UDP.
TRANSMISSION CONTROL PROTOCOL (TCP) e USER DATAGRAM PROTOCOL (UDP)
Transmission Control Protocol (TCP)
Atualmente é um dos protocolos sob os quais assenta o núcleo da Internet. Adequado para
redes globais por verificar se os dados são enviados de forma correta pela rede, na
seqüência apropriada e sem erros, sendo versátil e robusto. O TCP é um protocolo do nível
da camada de transporte (camada 4) do Modelo OSI e é sobre o qual assentam a maioria
das aplicações cibernéticas, como o SSH, FTP, HTTP - a World Wide Web (www).
Características fundamentais do TCP:
• Orientado à conexão: envia um pedido de conexão para o destino, usando-o para
transferir dados.
• Ponto a ponto: sua conexão é estabelecida entre dois pontos.
• Confiabilidade: usa várias técnicas para proporcionar entrega confiável dos pacotes de
dados, grande vantagem em relação ao UDP, e motivo do seu uso extensivo nas
redes de computadores. Permite eliminar pacotes duplicados, recuperar pacotes
perdidos, dados corrompidos, e a ligação em caso de problemas no sistema e na
rede.
• Full duplex: possibilita transferência simultânea em ambas as direções (clienteservidor) durante toda a sessão.
• Handshake: mecanismo de estabelecimento e finalização de conexão a três e quatro
tempos, respectivamente, o que permite a autenticação e encerramento de uma
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
44
sessão completa, com garantia de que todos os pacotes foram bem recebidos que no
final da conexão.
• Entrega ordenada: a aplicação faz a entrega ao TCP de blocos de dados com um
tamanho arbitrário num fluxo (ou stream) de dados, tipicamente em octetos. O TCP
parte estes dados em segmentos de tamanho especificado pelo valor MTU, garantindo
a reconstrução do stream no destinatário mediante os números de seqüência, caso a
circulação dos pacotes ao longo da rede (utilizando um protocolo (IP) de
encaminhamento, na camada inferior) não cheguem ordenados.
• Controle de fluxo: usa o campo janela (window) para controlar o fluxo. O receptor, a
medida que recebe os dados, envia mensagens ACK (acknowledgement),
confirmando a recepção de um segmento; como funcionalidade extra, estas
mensagens podem especificar o tamanho máximo do buffer no campo (janela) do
segmento TCP, determinando a quantidade máxima de bytes aceita pelo receptor. O
transmissor pode transmitir segmentos com um número de bytes que deverá estar
confinado ao tamanho da janela permitido: o menor valor entre sua capacidade de
envio e a capacidade informada pelo receptor.
Descrição do funcionamento do TCP:
O TCP especifica três fases durante uma conexão:
1. estabelecimento da ligação: feito em três passos;
2. transferência da ligação;
3. término da ligação: feito em quatro passos.
Inicialmente são ativados alguns parâmetros, como o Sequence Number (número de
seqüência), para garantir a entrega ordenada e robustez durante a transferência.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
45
O TCP interage de um lado com processos das aplicações e de outro com o protocolo da
camada de rede da arquitetura Internet. A interface entre o protocolo e a camada superior
consiste em um conjunto de chamadas, como para abrir e fechar conexões, para enviar e
receber dados em conexões estabelecidas. Já a interface entre o TCP e a camada inferior
define
um
mecanismo
através
do
qual
as
duas
camadas
trocam
informações
assincronamente.
Este protocolo é capaz de transferir uma cadeia (stream) contínua de octetos, nas duas
direções, entre seus usuários, decidindo o momento de parar de agrupar os octetos e de
transmitir o segmento formado por esse agrupamento. Porém, caso seja necessário, o
usuário do TCP pode requerer a transmissão imediata dos octetos que estão no buffer de
transmissão, através da função push.
O TCP não exige um serviço de rede confiável para operar, mas responsabiliza-se pela
recuperação de dados corrompidos, perdidos, duplicados ou desordenados pelo protocolo de
rede. Isto é feito associando-se cada octeto a um número de seqüência. O número de
seqüência do primeiro octeto dos dados contidos em um segmento é transmitido junto com o
segmento (número de seqüência do segmento). Os segmentos carregam "de carona"
(piggybacking) um reconhecimento.
User Datagram Protocol (UDP)
Protocolo de datagramas de utilizador (ou usuário) faz entrega de mensagens
independentes, designadas por datagramas, entre aplicações ou processos, em sistemas
host, podendo ser desordenada ou até perdida. A integridade dos dados pode ser gerida por
um checksum (campo no cabeçalho de checagem por soma).
O UDP dá às aplicações acesso direto ao serviço de entrega de datagramas, como o IP. É
pouco confiável para conexão, ou seja, não há técnicas para confirmar que os dados
chegaram ao destino corretamente. O UDP usa número de porta de origem e de destino de
16 bits na Word 1 do cabeçalho da mensagem.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
46
Os pontos de acesso do UDP são designados “portas de protocolo”, “portas” ou “portos”, em
que cada unidade de transmissão de dados UDP identifica o endereço IP e o número de
porta do destino e da fonte da mensagem. Os números podendo ser diferentes em ambos os
casos.
O UDP é o protocolo irmão do TCP. A diferença é que o TCP é um protocolo orientado à
conexão, que inclui vários mecanismos para iniciar e encerrar a conexão, negociar tamanhos
de pacotes e permitir a retransmissão de pacotes corrompidos. No TCP tudo isso é feito com
muito cuidado, para garantir que os dados realmente cheguem inalterados, apesar de todos
os problemas que possam existir na conexão. O lema é “transmitir com segurança”. Já UDP
transmite dados pouco sensíveis, como streaming de áudio e vídeo, sem checagens, sem
confirmação, e apenas uma vez, incluindo apenas um frágil sistema de CRC. Os pacotes que
chegam corrompidos são simplesmente descartados, sem que o emissor sequer saiba do
problema.
A idéia é transmitir dados com o maior desempenho possível, eliminando dos pacotes quase
tudo que não sejam dados em si. Apesar da pressa, o UDP tem seus méritos, pois impede
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
47
que quadros fantasmas sejam exibidos no meio de um vídeo, sem considerável perda de
desempenho.
Em geral, os programas que utilizam portas UDP recorrem também a uma porta TCP para
enviar as requisições de dados e também para checar periodicamente se o cliente ainda está
online. Na Internet, O UDP é um protocolo de transporte que presta um serviço de
comunicação não orientado a conexão e sem garantia de entrega. Portanto, as aplicações
que utilizam este tipo de protocolo devem ser responsáveis pela recuperação dos dados
perdidos.
Cabeçalho UDP:
É extremamente simples, contendo apenas os números de porta, comprimento da
mensagem e o checksum. O cabeçalho dos datagramas UDP, muito menor que o inserido
pelo TCP, é colocado a seguir ao cabeçalho IP.
Descrição do funcionamento do UDP:
O UDP opera no modo sem conexão e fornece um serviço de datagrama não confiável,
sendo, portanto, uma simples extensão do protocolo IP. Recebe os pedidos de transmissão
de mensagens entregues pelos processos de aplicação da estação de origem e os
encaminha ao IP, responsável pela transmissão. Na estação de destino, o processo inverso
ocorre. O protocolo IP entrega as mensagens (datagramas) recebidas ao UDP que as
entrega aos processos de aplicação, sem nenhuma garantia.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
48
U
NIDADE
8
Objetivo: Conhecimento do modelo, operação e aplicação de Protocolos de Gerência.
PROTOCOLOS DE GERÊNCIA
Simple Network Management Protocol (SNMP)
Protocolo de Gerência Simples de Rede é um protocolo de gerência típica de redes TCP/IP,
da camada de aplicação designada para facilitar a troca de informações (intercâmbio) de
gerenciamento entre dispositivos de rede, como placas e comutadores (switches).
O SNMP possibilita os administradores de rede gerenciar o desempenho da rede, encontrar
e solucionar eventuais problemas e planejar com mais precisão uma possível expansão da
rede.
O software de gerência de redes segue o modelo cliente-servidor convencional: uma
aplicação ‘servidora’ na máquina cliente e uma aplicação ‘cliente’ no dispositivo de rede a ser
analisado ou monitorado. Para evitar confusão com outras aplicações de rede, os sistemas
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
49
de gerência de redes usam “gerente” para a aplicação servidora e “agente” para a aplicação
cliente que roda no dispositivo de rede.
O SNMP é um protocolo relativamente simples, porém suficientemente poderoso para
resolver difíceis problemas apresentados quando se tenta gerenciar redes heterogêneas. É
um protocolo de requisição/resposta simples. Os NMS podem enviar múltiplas requisições
sem receber uma resposta.
Aplicações de gerenciamento que utilizam o SNMP [Oda94b]:
• Fazer polling nos dispositivos de rede e coletar dados estatísticos para análise em
tempo real.
• Receber um conjunto limitado de notificações de eventos significativos ou mensagens
trap.
• Reconfigurar dispositivos de rede.
Operações definidas no SNMP [Cisco96]:
• get-request: solicitação de recuperação do valor de uma ou um conjunto de variáveis
informados na solicitação.
• get-next-request: solicitação de recuperação do valor de uma ou um conjunto de
variáveis que sucedem lexicograficamente àquelas informações na solicitação.
• get-response: resposta às operações get-request, get-next-request e set-request.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
50
• trap: envio de um evento não solicitado para uma ou várias estações de
gerenciamento. Tipo de traps definidos no RFC 1215: cold start, warm start, link down,
link up, authentication failure, egp neighbor loss e enterprise specific.
Os pacotes de mensagem do SNMP são divididos em duas partes. A primeira parte contém a
versão e o nome comunitário, e a segunda contém o protocolo de unidade de dados (PDU)
do SNMP especificando a operação que será realizada (get, set e outros) e a instância de
objetos envolvida na operação.
O modelo de gerenciamento da Internet
Como o TCP/IP, o SNMP é um protocolo Internet. Ele é uma parte da arquitetura de
gerenciamento da Internet, que é baseada na interação de diversas entidades:
Elementos de rede: ou dispositivos gerenciados, são dispositivos de hardware, como
computadores, roteadores e servidores de terminais que estão conectados à rede.
Agentes: são módulos de software que residem nos elementos de rede. Coletam e
armazenam informações de gerenciamento como o número de pacotes de erros recebidos
pelo elemento de rede. São eles que respondem às solicitações dos gerentes.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
51
Objeto gerenciado: é qualquer elemento que possa ser gerenciado, como uma lista dos
circuitos TCP atualmente ativos em um host particular.
MIB (Management Information Base): é uma coleção de objetos gerenciados residentes em
um armazenamento virtual de informações, definidos em módulos específicos da MIB.
Notação sintática: é a linguagem usada para descrever os objetos gerenciados da MIB em
um formato independente da plataforma. Um uso consistente da notação sintática permite
que
diferentes
tipos
de
computadores
compartilhem
informações.
Sistemas
de
gerenciamento Internet usam um subconjunto Open System Interconnection (OSI) Abstract
Syntax Notation 1 (ASN.1) da International Organization for Standardization's (ISO) para
definir tanto os pacotes que são trocados pelo protocolo de gerenciamento quanto os objetos
que ele deve gerenciar.
Structure of Management Information (SMI): define as regras para descrever as informações
de gerenciamento, usando ASN.1.
Network Management Stations (NMS): ou consoles, executam aplicações de gerenciamento
para monitorar e controlar elementos de rede. Fisicamente, os NMS são usualmente
Workstations com CPU velozes, monitores coloridos de alta definição, memória substancial e
um grande espaço em disco.
Protocolo de gerenciamento: é usado para transportar informações de gerenciamento entre
agentes e NMS. O SNMP é o protocolo de gerenciamento padrão da comunidade Internet.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
52
O SNMP foi construído para minimizar a quantidade e a complexidade das funções
necessárias para gerenciar um agente. O paradigma funcional de controle e monitoração do
protocolo foi definido de maneira extensiva, para poder absorver mais facilmente novos
aspectos das operações de rede e gerenciamento. Além disto, esta arquitetura é totalmente
independente da plataforma dos elementos da rede e dos NMS [Case90].
Os processos que implementam as funções de gerenciamento Internet atuam ou como
agentes ou como gerentes. Os agentes coletam junto aos dispositivos gerenciados as
informações relevantes ao gerenciamento da rede. O gerente processa essas informações
com o objetivo de detectar falhas no funcionamento dos elementos da rede, para que
“possam ser tomadas providências no sentido de contornar os problemas que ocorrem como
conseqüência das falhas”.
Um objeto gerenciado representa um recurso e pode ser visto como uma coleção de
variáveis cujo valor pode ser lido ou alterado. O gerente envia comandos aos agentes. Para
monitorar os dispositivos gerenciados, o gerente solicita ao agente uma leitura no valor das
variáveis mantidas por estes dispositivos, através do comando Get, e o agente responde
através do comando Response. Para controlar os dispositivos gerenciados, o gerente
modifica o valor das variáveis armazenadas nos dispositivos gerenciados, através do
comando Put. Isto pode ser usado para disparar indiretamente a execução de operações nos
recursos associados aos objetos gerenciados. Um reboot do elemento de rede pode ser
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
53
facilmente implementado, basta que o gerente modifique o parâmetro que indica o tempo até
uma reinicialização do sistema.
Gerente pode ainda determinar que variável um dispositivo gerenciado suporta e colher
informações de forma seqüencial, das tabelas de variáveis (como as tabelas de roteamento
IP) nos dispositivos gerenciados. Para isto, ele utiliza as operações transversais (transversal
operations). Em alguns casos é necessário que a troca de informações seja em sentido
inverso, isto é, o agente tem de passar informações para o gerente. O SNMP define a
operação Trap para que um agente informe ao gerente a ocorrência de um evento específico
[Cisco96].
Filho, Edson Costa de Barros Carvalho., Modelagem, Aplicações e Implementações de
redes Neurais. Anais da IV Escola Regional de Informática da SBC Regional Sul, 21 a 27 de
abril de 1996. Páginas 36 - 53.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
54
U
NIDADE
9
Objetivo: Conhecer a implementação de dispositivo Remote MONitoring (RMON), política
Proxy e relacionamentos administrativos.
RELACIONAMENTOS ADMINISTRATIVOS
Definição dos Relacionamentos Administrativos
A arquitetura SNMP admite uma variedade de relacionamentos administrativos entre
entidades que participam do protocolo. As entidades residentes nas estações gerenciadas e
os elementos de rede que se comunica com outro elemento usando SNMP são chamados de
entidades de aplicação SNMP. O processo que implementa e suporta as entidades de
aplicação SNMP é chamado protocolo de entidades. A junção de um agente SNMP com
algum conjunto arbitrário de entidades de aplicação SNMP é chamada de comunidade
SNMP, cada qual nomeada através de uma cadeia de octetos. Uma mensagem SNMP,
originada por uma entidade de aplicação SNMP que de fato pertence a comunidade SNMP
referenciada pela mensagem, é chamada mensagem SNMP autêntica. O conjunto de regras
existentes para que uma mensagem seja identificada como uma mensagem SNMP autêntica
para uma comunidade SNMP qualquer é chamado de esquema de autenticação. A
implementação de uma função que identifica mensagens autênticas de acordo com um ou
mais esquemas de autenticação é chamado serviço de autenticação.
Um efetivo gerenciamento das relações administrativas entre entidades de aplicação SNMP
requer que os serviços de autenticação (pelo uso de criptografia ou outra técnica) sejam
capazes de identificar mensagens autênticas com um alto grau de confiabilidade.
Para qualquer elemento da rede, um subconjunto de objetos na MIB é chamado de visão da
MIB SNMP. Um elemento do conjunto (READ-ONLY, READ-WRITE) é chamado de modo de
acesso SNMP. A junção do modo de acesso SNMP com a visão da MIB é chamada de perfil
da comunidade SNMP, que representa um privilégio de acesso específico para variáveis em
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
55
uma MIB específica. A união da comunidade SNMP com o perfil da comunidade é chamada
de política de acesso SNMP. Uma política de acesso representa um perfil de comunidade
específico proporcionado por um agente SNMP de uma comunidade para outros membros
desta comunidade. Todos os relacionamentos administrativos entre entidades de aplicação
SNMP são definidos em termos das políticas de acesso. Para toda política de acesso SNMP,
se o elemento de rede em que o agente SNMP especificado pela comunidade SNMP reside
não contém a visão MIB que o perfil especifica então esta política é chamada política de
acesso Proxy SNMP. O agente associado com a política de acesso Proxy é chamado de
agente Proxy.
A política Proxy é usualmente definida de duas maneiras:
• Permite a monitoração e o controle dos elementos de rede que não são endereçáveis
usando o protocolo de gerenciamento e o protocolo de transporte. Um agente Proxy
provê uma função de conversão de protocolo permitindo a uma estação de
gerenciamento aplicar um gerenciamento consistente em todos os elementos da rede,
incluindo dispositivos como modems e multiplexadores, e outros que suportam
diferentes estruturas de gerenciamento.
• Protege os elementos da rede de elaboradas políticas de controle de acesso. Um
agente Proxy pode implementar sofisticados controles de acesso, fazendo com que
diversos subconjuntos de variáveis dentro de uma MIB se tornem acessíveis para
diferentes estações de gerenciamento da rede, sem aumentar a complexidade do
elemento de rede.
Remote Monitoring Protocol (RMON)
O SNMP não é adequado para ambientes de redes corporativas constituídas de diversas
redes locais conectadas através de outra de longa distância. Esses enlaces de rede de longa
distância por operarem a taxas de transmissão inferiores as LAN que a interconectam,
passam a ter grande parte da sua banda de transmissão ocupada para informações de
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
56
gerenciamento. Uma solução encontrada para dirimir este problema foi o Remote MONitoring
(RMON).
O RMON oferece suporte à implementação de um sistema de gerenciamento distribuído,
atribuindo função de monitor remoto aos diferentes elementos, como estações de trabalho,
hubs, switches ou roteadores, das redes locais remotas [Waldbusser91, Carvalho97]. Cada
elemento RMON tem como tarefa, coletar, analisar, tratar e filtrar informações de
gerenciamento da rede e apenas notificar à estação gerente os eventos significativos e
situações de erro. Se existirem múltiplos gerentes, cada elemento RMON deve determinar
quais informações de gerenciamento devem ser encaminhados para cada gerente.
Objetivos do RMON:
• Reduzir a quantidade de informações trocadas entre a rede local gerenciada e a
estação gerente conectada a uma rede local remota.
• Possibilitar o gerenciamento contínuo de segmentos de redes locais, mesmo quando a
comunicação entre o elemento RMON e a estação gerente estiver, temporariamente,
interrompida.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
57
• Permitir o gerenciamento pró-ativo da rede, diagnosticando e registrando eventos que
possibilitem detectar o mau funcionamento e prever falhas que interrompam sua
operação.
• Detectar, registrar e informar à estação gerente condições de erro e eventos
significativos da rede.
• Enviar informações de gerenciamento para múltiplas estações gerentes, permitindo,
no caso de situações críticas de operação da rede gerenciada, que a causa da falha
ou mau funcionamento da rede possa ser diagnosticada a partir de mais de uma
estação gerente.
Os dispositivos de monitoramento remoto de rede (RMON) são instrumentos que existem
com o propósito de gerenciar uma rede. Uma organização pode dispor de diversos destes
dispositivos, um por segmento de rede, para gerenciar sua rede Internet. A especificação
RMON é uma definição de uma MIB. O objetivo, contudo, é definir padrões de monitoração e
interfaces para a comunicação entre agentes/gerentes SNMP.
Objetivos da implementação de um dispositivo RMON [Waldbusser91]:
• Operação Off-Line: é a condição em que a estação gerenciadora não está em contato
constante com o dispositivo RMON. Presta-se para desenhar redes de baixo custo de
comunicação (acesso discado ou conexões com World Area Networks – WAN) ou
para acidentes onde as falhas na rede afetam a comunicação entre a estação
gerenciadora e os dispositivos RMON. Desta forma, o monitor é configurado para
coletar estatísticas, fazer diagnósticos continuamente, mesmo se a conexão com o
gerente não for possível ou apresentar falhas, e notificar a estação de gerenciamento
se eventos excepcionais ocorrerem.
• Monitoramento Preemptivo: se o monitor tiver recursos disponíveis poderão ser
usados para executar diagnósticos continuamente e para analisar o desempenho da
rede. Quando uma falha ocorrer, o monitor pode notificar a estação de gerenciamento
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
58
e armazenar o histórico estatístico referente à falha, com o objetivo de se fazer um
estudo mais profundo e permitir a detecção e reparo da falha.
• Detecção de Problemas e Geração de Relatórios: o monitor pode ser configurado para
reconhecer certas situações como condições de erro e checar continuamente por elas.
Quando uma destas situações ocorrer, o monitor pode registrá-la e reportá-la à
estação de gerenciamento.
• Análise de Dados: por ser um dispositivo dedicado exclusivamente ao gerenciamento
de rede e por estar localizado diretamente no segmento monitorado da rede, os
dispositivos RMON podem fazer uma análise significativa dos dados que coletam,
como determinar qual host gera maior tráfego ou mais erros na rede.
• Múltiplos Gerentes: uma configuração de rede pode ter mais de uma estação gerente
para dar mais confiabilidade, executar funções diferentes e prover capacidades de
gerência para unidades diferentes dentro da organização. A qualquer tempo acessos
concorrentes são permitidos para um recurso disponível em um agente. Esta é uma
característica potencial para conflitos e pode gerar resultados inesperados.
No caso de agentes RMON compartilhados podem surgir as seguintes dificuldades:
• Requisições concorrentes podem exceder a capacidade do monitor para fornecer
estes recursos.
• Uma estação gerente pode capturar e ocupar recursos de monitor por um longo
período de tempo, prevenindo seu uso por outras funções gerente desejadas por
outras estações gerentes.
• Recursos podem ser designados para uma estação gerente onde ocorreu uma falha e
os recursos não foram liberados.
Para proceder com esses problemas, uma combinação de características de resolução e
prevenção é necessária. Ela pretende que uma simples característica na MIB RMON suporte
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
59
estes requerimentos. Associado com cada tabela de controle está um objeto do tipo registro
que identifica o proprietário de um registro particular da tabela e de funções associadas.
O rótulo proprietário pode ser usado das seguintes formas:
• Uma estação gerente pode reconhecer recursos próprios.
• Um operador pode identificar a estação gerente que seja proprietária de um recurso
em particular ou função e negociar para serem acessíveis para todos.
• Um operador pode ter autoridade para liberar recursos que outro operador tenha
reservado.
A especificação sugere que o rótulo proprietário contenha um ou mais dos atributos:
endereço IP, nome da estação gerente, nome do gerente de rede, localização ou telefone.
Apesar do rótulo ser proveitoso, é importante ressaltar que o rótulo não tem ação como uma
senha ou mecanismo de controle de acesso.
Se múltiplo gerente de rede tem acesso à tabela de controle, uma maior eficiência pode ser
alcançada pelo compartilhamento. Quando uma estação gerente quer utilizar certa função no
monitor, ela precisa verificar a tabela de controle relevante para ver que função, tem sido
definida por outra estação gerente. Neste caso, a estação gerente pode compartilhar a
função simplesmente observando os registros de dados read-only associados com o registro
de controle. Contudo, a estação gerente que seja proprietária de uma tabela de controle
pode modificar ou apagar aquele registro a qualquer hora.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
60
Freqüentemente, um monitor será configurado com um conjunto padrão de funções que
serão setadas quando ele for inicializado. Os registros que definem estas funções são
propriedades do monitor. Cada rótulo relevante é configurado com uma cadeia de nome
"monitor".
Gorni, Antônio Augusto, Redes Neurais Artificiais - Uma Abordagem revolucionária
em Inteligência Artificial. Revista MicroSistemas edição 133 páginas 14 a 25 e edição
134 páginas 14 a 17, Ano XII
Antes de dar continuidades aos seus estudos é fundamental que você acesse sua
SALA DE AULA e faça a Atividade 1 no “link” ATIVIDADES.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
61
U
NIDADE
10
Objetivo: Conhecer a implementação de dispositivo Remote MONitoring (RMON), política
Proxy e relacionamentos administrativos (continuação).
DISPOSITIVO REMOTE MONITORING (RMON)
O dispositivo Remote MONitoring (RMON) É um monitor remoto que pode ser configurado
como uma função disponível em um sistema ou como um dispositivo dedicado. Configurado
como dispositivo dedicado, o monitor é capaz de efetuar operações mais complexas. A
definição da MIB RMON contém características que suportam controle extensivo da estação
de gerenciamento. Estas características dividem-se em duas categorias:
1. Configuração: um monitor remoto necessitará ser configurado para coletar dados em
tipo e forma. A MIB é organizada em grupos funcionais, cada qual terá uma ou mais e
tabelas de dados e tabelas de controle (que contém parâmetros que descrevem o
dado na tabela de dados, somente para leitura). Assim, a estação gerente envia os
parâmetros apropriados para configurar o monitor remoto para coletar os dados
desejados. Os parâmetros são configurados pela adição de um novo registro na tabela
ou alterando uma existente. Desse modo, funções para serem executadas pelo
monitor são definidas e implementadas na tabela. Uma tabela controle pode conter
objetos que especifiquem a origem dos dados coletados, tipos de dados. Para
modificar qualquer parâmetro na tabela de controle é necessário primeiro invalidar a
entrada, retirando-a daquela entrada e de todos os registros associados em tabelas de
dados. A estação gerente pode então criar um novo registro controle com os
parâmetros modificados. O mesmo mecanismo é usado para apenas desabilitar uma
coleção de dados. Quando um registro da tabela de controle é apagado, os registros
das tabelas de dados associadas são apagados, e os recursos usados pelos registros
são recuperados.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
62
2. Invocação de Ação: o SNMP providencia mecanismos não específicos para emitir um
comando para um agente executar uma ação. SNMP tem apenas capacidade de ler
valores de objetos e setar valores de objetos com visão MIB. Contudo, isto é possível
para usar o conjunto de operações SNMP para emitir um comando. Um objeto pode
ser usado para representar um comando, assim que uma ação específica é alcançada
se o objeto é setado para um valor específico. Um número desses objetos é incluído
na MIB RMON. Em geral, estes objetos representam estados, e uma ação é
executada se a estação gerente trocar o estado (pela troca do valor do objeto).
RMON1 e RMON2: são dois padrões básicos de protocolo RMON, funcionalmente
complementares.
O RMON1 opera somente na camada Media Access Control (MAC) e “oferece recursos ao
administrador da rede para monitorar o tráfego e coletar informações estatísticas da
operação de um segmento de rede local, além de realizar o diagnóstico remoto de falhas e
erros ocorridos no segmento de rede a partir de funcionalidades de um analisador de
protocolo suportadas pelo correspondente elemento RMON” [Carvalho97]. Segundo
[NetScout96] o fato do RMON1 só trabalhar na camada MAC significa que somente
apresenta estatísticas para tráfego agregado, porém não apresenta estatísticas para
camadas diferentes de várias pilhas de protocolos (IP, FTP, IPX). Significa também que, por
não serem capazes de monitorar a camada de rede, os dispositivos RMON1 não distinguem
o tráfego neste segmento originado através de um roteador, o que é uma grande deficiência.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
63
Assim, muitas aplicações usuais como uma medição do tempo de resposta cliente/servidor
ou uma provisão de estatística para as sete camadas, não é possível através deste protocolo
unicamente. O RMON2 opera no nível da camada de rede e camadas superiores,
complementando o RMON1, possibilitando coletar informações estatísticas e monitorar a
comunicação fim-a-fim e o tráfego gerado por diferentes tipos de aplicação.
Remote Monitoring Management Information Base (RMON-MIB)
A implementação das funções do protocolo RMON somente é viável mediante o suporte de
uma base de dados de gerenciamento (RMON-MIB) associada a cada elemento RMON da
rede.
Grupos da RMON1-MIB:
Para a RMON1-MIB, foram especificados nove grupos básicos de variáveis [Carvalho97]:
1. Estatístico: mantém estatísticas de utilização, tráfego e taxas de erros ocorridos em
um segmento de rede.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
64
2. Histórico: permitem controlar o processo de amostragem (definição dos intervalos) de
informações do grupo estatístico e registra-as, empregadas na análise do
comportamento de uma rede e que oferecem subsídios para um gerenciamento próativo.
3. Alarmes: possibilitam estabelecer condições limites de operação de uma rede que
deve provocar a geração de alarmes.
4. Hosts: contêm informações relativas ao tráfego gerado e recebido pelos hosts
conectados através da referida rede.
5. Classificação de n hosts (top n hosts): permite classificar os hosts segundo critérios
pré-definidos, como determinar quais os hosts conectados através da rede que geram
maior tráfego em um dado período do dia.
6. Matriz: contém informações de utilização da rede e taxa de erros na forma de matriz,
associando pares de endereços MAC de elementos de rede.
7. Filtro: define condições associadas a pacotes trafegados pela rede, que uma vez
satisfeitas implicam captura de tais pacotes pelo elemento RMON ou no registro de
estatísticas baseadas nos mesmos.
8. Captura de Pacotes: determina como devem ser capturados os dados dos pacotes
trafegados pela rede a serem enviados aos gerentes. Como default, são capturados
os cem primeiros bytes dos pacotes filtrados pelo elemento RMON.
9. Evento: define todos os eventos que implicam a criação de registros (logs) de eventos
e o envio de informações pertinentes do elemento RMON aos gerentes.
A implementação de todos os grupos é opcional, embora exista uma relação de dependência
entre alguns deles, como é o caso do grupo de “classificação de n hosts” em relação ao
grupo de hosts.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
65
Grupos da RMON2-MIB:
Para a RMON2-MIB, foram especificados oito grupos básicos de variáveis:
1. Grupo Protocol Directory (protocolDir): lista os protocolos que o probe tem capacidade
de monitorar e permite a adição, remoção e configuração das entradas nesta lista.
2. Grupo Protocol Distribution (protocolDist): coleta as quantidades relativas de octetos e
pacotes para os diferentes protocolos detectados no segmento da rede.
3. Grupo Address Map (addressMap): lista endereços MAC para endereços de rede
descobertos pelo probe e em qual interface eles estavam na última utilização.
4. Grupo Network Layer Matrix (nlMatrix): calcula a quantidade de tráfego enviado entre
cada par de endereço de rede descoberto pelo probe. Embora hlMatrixControlTable
também
tenha
objetos
que
controlam
alMatrixTable,
a
implementação
da
alMatrixTable não é necessária para a implementação total desse grupo.
5. Grupo Application Layer Host (alHost): calcula a quantidade de tráfego, por protocolo,
enviado de e para cada endereço de rede descoberto pelo probe. Implementações
desse grupo requerem a implementação do grupo Network Layer Host.
6. Grupo Application Layer Matrix (alMatrix): calcula a quantidade de tráfego, por
protocolo, enviado de cada par de endereço de rede descoberto pelo probe.
Implementações desse grupo requerem a implementação do grupo Network Layer
Matrix.
7. Grupo User History Collection (usrHistory): combina mecanismos usados nos grupos
alarm e history para prover um mecanismo de história especificado pelo usuário
utilizando três tabelas adicionais: duas de controle e uma de dados. Esta função tem
sido feita tradicionalmente por aplicações NMS, via polling periódico. O grupo
userHistory permite que essa tarefa seja descarregada em um probe RMON. Os
dados são coletados da mesma maneira que qualquer tabela de dados history
(etherHistoryTable) exceto que o usuário especifica as instâncias MIB a serem
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
66
coletadas. Os objetos são coletados em bucket-groups, com o intuito de que todas as
instâncias MIB no mesmo bucket-group sejam coletadas da forma mais atômica
possível pelo probe RMON.
8. Grupo Probe Configuration (probeConfig): permite controlar a configuração de vários
parâmetros operacionais do probe. As entradas de usrHistoryObject associadas com
outra usrHistoryControlTable não precisam estar ativas antes da entrada de controle
estar ativada.
WWW Proxy Server
Um servidor de Proxy World Wide Web (WWW), ou simplesmente servidor de Proxy Web, é
um servidor Hyper-Text Transfer Protocol (HTTP) especializado. A utilização primária desse
servidor é permitir acesso à Internet para clientes que estejam por trás de um firewall 1,
podendo acessar completamente a Internet passando por um host firewall com o mínimo de
esforço e sem comprometer a segurança.
O servidor Proxy espera pelas requisições dos clientes de dentro do firewall e repassa estas
requisições para um servidor Internet remoto, fora do firewall. O servidor Proxy recebe as
respostas do servidor externo e envia-as de volta ao cliente interno.
Todos os clientes dentro de uma mesma sub-rede usam o mesmo servidor de Proxy, o que
permite ao Proxy fazer cache 2 eficiente de todos os documentos que são requisitados por
um certo número de clientes. Os clientes sob os servidores Proxy sentem-se como se
estivessem recebendo os documentos diretamente do servidor remoto.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
67
Servidor Proxy está rodando em um host com firewall e faz conexões com servidores
externos usando o software firewall.
A habilidade que o Proxy tem no uso do cache torna-o atrativo para aqueles que não estão
dentro do firewall. Configurar um servidor Proxy é fácil e os mais populares programas
clientes Web já tem suporte a essa ferramenta, tornando simples a tarefa de configurar um
grupo de trabalho inteiro para usar o serviço de cache do Proxy. Isto reduz os custos com
tráfego de rede porque muitos documentos que são requisitados são lidos do cache local.
Clientes sem Domain Name Service (DNS) também podem usar a Web. O endereço IP do
Proxy é a única informação realmente necessária. Organizações usando endereços, por
exemplo, classe A (como 10.*.*.*), em suas redes particulares, podem ainda acessar a
Internet contanto que o Proxy seja visível tanto para a rede particular como para a Internet
[Process97].
Muitos servidores Proxy são implementados através de um método de acesso simples.
Porém, alguns podem aceitar ou não as requisições Internet, de acordo com o protocolo
destas requisições. Em alguns casos, o servidor Proxy pode permitir chamadas de servidores
File Transfer Protocol (FTP) enquanto recusa chamadas de servidores HTTP.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
68
U
NIDADE
11
Objetivo: Conhecer as aplicações de servidor Proxy; Comunicação através de um Servidor
HTTP; Controle de acesso seletivo a Internet.
SERVIDOR PROXY
É utilizado com diversos objetivos:
• Permitir e restringir o acesso de clientes à Internet baseado no endereço IP do cliente.
• Cache de documentos para documentos muito acessados pelos clientes.
• Controle seletivo de acesso à Internet e às sub-redes, baseado na Uniform Resource
Location (URL).
• Prover acesso à Internet para companhias usando redes privativas.
• Conversão de dados para o formato Hyper-Text Markup Language (HTML), tornandoos acessíveis através de um navegador.
Acesso à Internet: Algumas máquinas de uma rede local podem não estar habilitadas para
acessar os recursos da Internet diretamente por estarem rodando em sistemas sob um
firewall de proteção. Neste caso, o servidor Proxy pode enviar os documentos solicitados por
estes navegadores. O servidor recebe a requisição do navegador em formato de URL,
analisa a informação requisitada, converte-a para o formato HTML e a envia para o
navegador dentro do firewall. O servidor pode manejar todas as requisições da rede, se ele
for a única máquina diretamente conectada à Internet.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
69
Cache de Documentos:
Os clientes dentro de uma mesma sub-rede acessam a um mesmo servidor Proxy. Alguns
servidores mantêm um cache de documentos Internet para clientes dentro de uma rede local.
Cache de documentos significa manter uma cópia local de um documento Internet, evitando
que o servidor requisite este documento mais vezes. O cache é mais efetivo se realizado em
um servidor Proxy do que no sistema cliente. Isto minimiza o espaço de disco utilizado, uma
vez que apenas uma cópia do documento é feita. O cache de documentos no servidor Proxy
permite que documentos muitas vezes referenciados por múltiplos navegadores possam ser
disponibilizados através desse servidor com maior eficiência.
Através do acesso ao cache é possível acessar a Internet mesmo que o servidor HTTP ou a
rede externa estejam com problemas e fora de funcionamento. O acesso às informações
mantidas no servidor Proxy, possibilita uma melhoria na utilização dos recursos da rede,
como o acesso a servidores FTP que normalmente estão fora de funcionamento ou muito
cheios, mais que podem ter seus arquivos armazenados localmente.
Existem muitos problemas que necessitam ser resolvidos quando o uso do cache é
introduzido: qual o tempo máximo de armazenamento de um documento e como decidir
quais documentos vale a pena ser colocados no cache. A especificação do tempo de vida de
documentos foi prevista pelo protocolo HTTP que contém um objeto especificando a data em
que o documento já não será mais válido. Entretanto, existem muito poucos servidores que
atualmente fornecem essa informação, sendo necessário confiar em estimativas heurísticas
e grosseiras do tempo de vida do documento.
Controle Seletivo do Acesso à Internet:
Quando se utiliza um servidor Proxy é possível filtrar as transações dos clientes no nível de
protocolo, controlar o acesso aos serviços para métodos individuais, hosts e domínios.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
70
Alguns servidores Proxy permitem:
• Decidir quais requisições serão respondidas e quais serão descartadas.
• Especificar as URL ou a URL Mask (máscara de rede) dos hosts da rede que não
serão atendidos pelo servidor Proxy.
• Especificar quais protocolos os clientes podem utilizar, baseado nos endereços IP. Por
exemplo, pode ser permitido que um cliente faça requisições HTTP, mas não permitir
que ele utilize o protocolo FTP.
Comunicação Através de um Servidor HTTP:
Muitos clientes têm um endereço IP próprio e uma conexão direta com a Internet. Quando
uma requisição HTTP normal é feita por um cliente, o servidor identifica somente o path e a
“porção chave” da URL requisitada. Outras partes da URL, como o especificador de
protocolo “http:” e o nome do servidor são claros para o servidor HTTP remoto. O path
requisitado especifica um documento ou um script CGI no sistema de arquivos local do
servidor ou ainda algum outro recurso disponível daquele servidor.
Exemplo:
Quando um usuário digita: http://www.empresaX.com.br/documentos/Proxy.html
O navegador converte para: GET/documentos/Proxy.html
O navegador conecta-se ao servidor rodando no endereço www.empresaX.com.br, envia o
comando e espera por uma resposta. O navegador fez uma requisição a um servidor HTTP
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
71
especificando o recurso requisitado. Não há especificação de protocolo ou nome de host na
requisição.
A requisição especificou o path (diretório de dados) da informação e o documento Proxy.html
localizado no diretório de dados. A resposta é um documento ou uma mensagem de erro.
Comunicação Através de um Servidor Proxy
O servidor Proxy atua tanto como um sistema servidor quanto um sistema cliente. Ele é um
servidor quando aceita uma requisição HTTP de um navegador, e age como um cliente
quando se conecta ao servidor remoto para requerer um documento. Este servidor usa o
campo cabeçalho da requisição passada pelo navegador, quando ele vai se conectar ao
servidor remoto. Isto significa que o navegador não perde sua funcionalidade quando está
conectado através de um Proxy.
Um servidor Proxy completo deve ser capaz de se comunicar com todos os protocolos Web
(HTTP, FTP, Gopher e WAIS). Proxies que trabalham com apenas um protocolo Internet
(HTTP) são possíveis, porém o navegador Web pode acessar outros servidores Proxy para
utilizar todos os protocolos Internet. Quando um navegador envia uma requisição, estando
sob um servidor Proxy, o navegador sempre usa o protocolo HTTP para as transações com o
servidor Proxy. Isto acontece mesmo quando o navegador quer acessar o servidor remoto
usando outro protocolo, como o FTP.
Ao invés de especificar apenas o diretório de dados e o documento requerido ao servidor
Proxy, o navegador deve especificar toda a URL. Deste modo o servidor Proxy tem toda a
informação necessária para fazer a requisição ao servidor remoto especificado na URL
requisitada, utilizando o protocolo especificado. A única diferença entre uma transação HTTP
normal e uma utilizando Proxy é que a transação usando o servidor Proxy requer a URL
completa do documento. Quando utilizamos um servidor Proxy como um sistema cliente, ele
age como um navegador nas transações de documentos.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
72
Exemplo:
Quando um usuário digita: http://www.empresaX.com.br/documentos/Proxy.html
O navegador converte a URL: GET http://www.empresaX.com.br/documentos/Proxy.html
O navegador então se conecta ao servidor Proxy e este provê a conexão com a Internet. O
servidor Proxy converte a requisição para: GET /documentos/Proxy.html
O servidor Proxy conecta-se ao servidor rodando em www.empresax.com.br, envia o
comando e espera por uma resposta. Quando recebe a resposta, o Proxy repassa-a ao
cliente.
Aprendizagem por Reforço para Emergência de Comportamentos em Navegação
Autônoma de Robô Dotado de Visão (Edivaldo de Araujo Pereira).pdf
http://www.din.uem.br/arquivos/pos-graduacao/mestrado-em-ciencia-dacomputacao/dissertacoes/Aprendizagem%20por%20Reforco%20para%20Emergencia
%20de%20Comportamentos%20em%20Navegacao%20Autonoma%20de%20Robo%
20Dotado%20de%20Visao%20%28Edivaldo%20de%20Araujo%20Pereira%29.pdf/vie
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
73
U
NIDADE
12
Objetivo: Conhecer os tipos de Dados; Características Gerais e aplicações dos Ponteiros.
ESTRUTURA DE DADOS
Um dos temas fundamentais da ciência da computação, é aplicado com os mais diferentes
propósitos nas mais diversas áreas do conhecimento. Sabe-se que algoritmos manipulam
dados. Quando estes dados estão organizados (dispostos) de forma coerente, caracteriza
uma forma (estrutura) de dados. São a organização e os métodos que manipulam esta
determinada estrutura que lhes conferem singularidade.
As estruturas de dados são chamadas tipos de dados compostos e se dividem em dois:
Estruturas homogêneas (vetores e matrizes): são conjuntos de dados formados pelo mesmo
tipo de dado primitivo.
Estruturas heterogêneas (registros): são conjuntos de dados formados por tipos de dados
primitivos diferentes (campos do registro) em uma mesma estrutura.
A escolha de uma estrutura de dados apropriada pode tornar um problema complicado em
uma solução bastante trivial. O estudo das estruturas de dados está em constante
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
74
desenvolvimento (assim como o de algoritmos), mas, apesar disso, existem certas estruturas
clássicas que se comportam como padrões.
Considerações Gerais
A automatização de tarefas é um aspecto marcante da sociedade moderna e na ciência da
computação houve um processo de desenvolvimento simultâneo e interativo de máquinas
(hardware) e dos elementos que gerenciam a execução automática (software) de uma tarefa.
Nesta grande evolução do mundo computacional, um fator de relevante importância é a
forma de armazenar as informações, já que, informática é a ciência da informação, aliando o
grande desenvolvimento do hardware e do software com a forma de armazenamento e
tratamento da informação. Por isso a importância das estruturas de dados, que são formas
otimizadas de armazenamento e tratamento das informações eletronicamente.
As estruturas de dados foram espelhadas em formas naturais de armazenamento do nosso
dia-a-dia, ou seja, é a transformação de uma forma de armazenamento já conhecida e
utilizada no nosso mundo para o mundo computacional. Por isso, cada tipo de estrutura de
dados possui vantagens e desvantagens e cada uma delas tem sua área de atuação (massa
de dados) ótima.
O objetivo deste capítulo é introduzir àquele que já possua um conhecimento da linguagem
Pascal, no mundo das estruturas de dados, a teoria (conceitos) e a prática (implementação)
das estruturas de dados mais utilizadas no dia-a-dia do profissional de informática. Se
somente teve contato com estruturas de dados estáticas (vetores e matrizes) e está
familiarizado com suas facilidades e dificuldades de uso, agora novas estruturas de dados
dinâmicas serão apresentadas, ou seja, crescem e diminuem de acordo com a necessidade,
sendo necessárias várias rotinas que controlam esta dinamicidade das estruturas.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
75
Tipo Apontador (Ponteiro)
Um das características mais marcantes do Pascal é permitir a criação e destruição de
variáveis que possibilita a implementação das estruturas de dados dinâmicos durante a
execução do programa, chamadas variáveis dinâmicas. Uma variável dinâmica não é
declarada na parte de declaração de variáveis porque esta ainda não existe antes do seu
tempo de execução, ela não possui sequer um nome, ficando a cargo dos ponteiros
desempenharem esta função de “nome”. Uma variável dinâmica é sempre referenciada
indiretamente por um apontador, ou seja, para cada variável dinâmica criada deve existir um
apontador, que literalmente aponta para ela, permitindo a sua manipulação.
A principal função dos ponteiros é permitir a criação e a manipulação das variáveis
dinâmicas, as quais irão compor as estruturas de dados dinâmicas.
Características Gerais:
Os apontadores são declarados como as demais variáveis, seguindo a sintaxe da linguagem
de programação utilizada. São variáveis que armazenam o endereço de memórias de outras
variáveis, funcionando assim, como meio de referenciar uma variável dinâmica, permitindo o
acesso a essa variável. Outra característica é que na sua declaração deve ser indicado qual
o tipo de variável este irá armazenar o endereço.
Ponteiros no Pascal
Declaração: a sintaxe de declaração de um tipo ponteiro é o seguinte:
type identificador = ^ tipo ; {onde o símbolo ^ indica que o identificador é um ponteiro}, isso
indica que teremos um ponteiro com o nome de identificador com a capacidade de
armazenar o endereço de memória de uma variável desse tipo.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
76
Como os ponteiros são utilizados para implementar as estruturas de dados dinâmicas, o mais
comum é que seja criado um tipo do ponteiro desejado (type) e depois declaramos (var) as
variáveis ponteiros deste tipo.
Exemplo:
type
Nome: string[35];
PontNome : ^Nome;
var
nome1,nome2,nome3 : PontNome;
Inicialização: como os ponteiros armazenam endereços de memória, assim que eles são
declarados o seu conteúdo é um valor desconhecido (como as demais variáveis), ou seja,
não podemos prever para qual área de memória este está apontando, por isso, a linguagem
Pascal permite que um ponteiro seja inicializado da seguinte forma:
identificador: = nil; {nil é um valor constante pode ser armazenado em uma variável do tipo
apontador para indicar que a variável não contém endereço de memória de nenhuma
variável dinâmica }
Criação de uma variável dinâmica: para criação de uma variável dinâmica é necessário que
exista uma variável do tipo apontador para o tipo da variável que se deseja criar, e então
utilizar-se o procedimento new, cuja sintaxe é a seguinte:
new(identificador); {onde, identificador deve ser uma variável do tipo ponteiro para o tipo de
variável a ser criada}
Observação: quando uma variável dinâmica é criada através do procedimento NEW, um
espaço de memória do tamanho da variável criada é alocado na memória heap e este
espaço ficará alocado até ser liberado.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
77
Destruição de uma variável dinâmica: para que o espaço de memória heap seja liberado é
necessário que a variável dinâmica seja destruída, isso pode ser feito através do
procedimento dispose, utilizando a seguinte sintaxe:
dispose (identificador);
Referência a uma variável dinâmica: quando uma variável dinâmica é criada através de um
ponteiro, este pode ser utilizado para referenciá-la, permitindo a manipulação (leitura,
atribuição, escrita, etc.) desta variável como outra variável qualquer, para isso devemos
utilizar o símbolo ^ após o nome da variável do tipo ponteiro:
identificador^
Marcação e liberação de uma área no heap – mark (ponteiro) e release (ponteiro)
Exemplo:
program ManipulacaoVariaveisDinamicas;
type
nome = string[30];
ponteiro = ^nome;
var
p1, p2 : ponteiro;
begin
new(p1);
new(p2);
readln(p1^);
p2^ := 'José Maria';
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
78
p1^:= p1^ + ' ' + p2^;
writeln(p1^);
end.
Revista da Sociedade Brasileira de Redes Neurais
http://www.sbrn.org.br/
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
79
U
NIDADE
13
Objetivo: Diferenciar os tipos de Listas Encadeadas, Pilhas, Deck e Filas.
LISTAS ENCADEADAS
Listas Encadeadas
Esta classe de estruturas de dados foi inspirada numa forma de armazenamento bastante
comum no cotidiano, pois o homem utiliza-se da idéia de listar coisas com o objetivo de
melhor organizá-las. Baseado nesse conceito a estrutura de dados lista foi concebida, onde
cada elemento da lista armazena uma informação útil e uma, ou mais, referência para outro
elemento (limitação do mundo computacional) e assim por diante. Desta forma, com o auxílio
dos ponteiros, pode-se acrescentar ou retirar elementos conforme a necessidade.
Arranjo da memória de uma lista encadeada
Listas encadeadas geralmente são utilizadas para criar vetores de extensão de memória
desconhecida, pela sua característica dinâmica, permitindo que o vetor (lista) tenha sempre o
tamanho necessário.
Listas Simplesmente Encadeadas
Este tipo de lista é o mais simples.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
80
Segue as seguintes regras:
• Deve existir um ponteiro que aponte para o primeiro elemento da lista (início da lista);
• Cada elemento, ou nó, da lista aponta para o próximo sucessivamente (daí o nome
listas encadeadas);
• O último elemento deve apontar para NIL, indicando o final da lista.
Estrutura básica de um nó da lista:
Declaração:
type
apontador = ^no;
InfoType = record
campos do registro;
end;
no = record
info : InfoType;
prox : apontador;
end;
Onde: nó é um registro com dois campos: info e prox, sendo que info é um tipo registro do
tipo infotype contendo as informações (variáveis) úteis e prox é um ponteiro capaz de
armazenar o endereço de memória de um registro do tipo nó (elemento da lista).
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
81
Onde: INICIO é um ponteiro que guarda o endereço de memória do primeiro elemento da
lista.
Aplicação: são utilizadas quando há necessidade de criar vetores com tamanho variável
(dinâmico). Sua limitação é somente permitir o caminhamento unidirecional na lista, pois,
como as referências iniciam no primeiro elemento da lista e seguem unidirecionalmente até o
último elemento, não é possível regressar no caminhamento através da lista. Mesmo com
esta limitação, as listas são largamente utilizadas, pela sua simplicidade de implementação
fornecendo um bom índice entre custo/benefício, na gerencia, em memória, de conjuntos de
dados não muito extensos.
Operações Básicas (Inclusão, Pesquisa, Alteração e Exclusão):
Como toda estrutura de armazenamento de dados, as listas simplesmente encadeadas
devem suportar as operações de cadastro das informações. Uma particularidade é o fato de
apresentar uma pequena variação no código de inclusão e exclusão. De acordo com o local
onde o novo elemento deverá ser inserido (no início, meio ou fim), e ainda assim, esta
variação pode ocorrer de acordo com os mecanismos de controle utilizados na gerência da
lista, tais como, utilização de um único ponteiro apontando para o inicio da lista, ou dois
ponteiros, um para o início e outro para o final.
As operações de cadastro sobre listas devem ter o cuidado de analisar se o valor do ponteiro
para o início é diferente de NIL, pois, se for igual a lista está vazia e certamente as rotinas
deverão efetuar procedimentos especiais.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
82
• Inclusão: levando em consideração o uso de um único ponteiro para o início:
procedure InsereLista (var inicio : ponteiro ; info : InfoType);
No início
No fim
No meio
• Inclusão: levando em consideração o uso de dois ponteiros (início e fim):
procedure InsereLista (var inicio, fim : ponteiro; info : InfoType);
No início
No fim
No meio (ordenada)
• Pesquisa: normalmente, usa-se uma função que, se encontrar, retornará o endereço
do nó, caso contrário, retornará o valor NIL:
Function PesquisaLista (inicio : ponteiro ; info : InfoType) : ponteiro;
• Alteração: utilizando a função de pesquisa, obtêm-se o endereço do nó a ser alterado
e de posse deste endereço, altera-se os dados deste nó.
procedure AlteraLista (inicio : ponteiro ; info : InfoType);
• Exclusäo: usa-se um procedimento recebendo o início da lista e os dados do nó ser
excluído, então, através do campo identificado (chave) efetua-se uma pesquisa e
localiza-se o nó anterior ao nó a ser excluído, e então devemos liberar o espaço
alocado para o nó excluído e fazer o seu anterior apontar para o posterior.
procedure Exclui Lista (inicio : ponteiro ; info : InfoType);
No início
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
83
No meio
No fim
Listas Duplamente Encadeadas
É uma lista encadeada, onde cada elemento contém um ponteiro para o nó anterior e um
ponteiro para o nó posterior, permitindo o caminhamento nos dois sentidos da lista,
diferentemente, da lista simplesmente encadeada, que só permitia em um único sentido.
Aplicação: é semelhante às listas simplesmente encadeadas, mas aquela é mais apropriada,
quando há a necessidade de caminhamento em ambos os sentidos, isso faz com que, novas
sub-rotinas sejam utilizadas nas listas duplamente encadeadas, tais como Anterior, Posterior.
Operações Básicas (Inclusão, Pesquisa, Alteração, Exclusão, Anterior e Posterior):
Anterior: deverá retornar o endereço do nó anterior ou NIL, caso não exista anterior:
function Anterior (Endereço No : ponteiro) : ponteiro;
Posterior: deverá retornar o endereço do nó posterior ou NIL, caso não exista posterior:
function Posterior (Endereço No : ponteiro) : ponteiro;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
84
Filas
Uma fila é uma lista linear de informação que é acessada na seguinte ordem: o “primeiro que
entra, primeiro que sai” (FIFO – First In First Out). Uma fila não permite acesso a um
elemento que não seja o primeiro.
Aplicação: são utilizadas na administração de recursos compartilhados, impondo uma
prioridade por ordem de chegada, como as filas de impressão, onde, cada documento espera
sua vez para ser impresso.
Operações Básicas (Inclusão e Exclusão):
Existem, basicamente, duas operações básicas a serem implementadas nos filas: adicionar e
remover. É comum a utilização de um ponteiro para o início e outro para o fim do fim,
facilitando assim as operações.
• Adicionar:
procedure adiciona (ver inicio : ponteiro ; info : InfoType);
• Remover:
function remove (ver inicio : ponteiro) : InfoType;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
85
Pilhas
Análogo a estrutura fila, a estrutura pilha pré-define a posição de inserção e remoção dos
elementos, sendo que, a estratégia é “último que entra, primeiro que sai” (LIFO – Last In First
Out).
Aplicação: um bom exemplo da aplicação das pilhas é a gerencia das chamadas as subrotinas utilizadas pela maioria dos compiladores das linguagens de programação.
Operações Básicas (Inclusão e Exclusão):
Por raches históricas, as duas operações primárias de pilha – inserção e retirada – são
normalmente chamadas de push e pop, respectivamente.
Para implementar uma pilha são necessárias duas funções:
• PUSH: coloca um elemento no topo da pilha:
procedure push (var inicio : ponteiro; info : InfoType);
• POP: retira um elemento do topo da pila:
function pop (var inicio : ponteiro) : InfoType;
Deck
É uma união das pilhas e filas, ou seja, só é permitido, manipular os elementos das
extremidades.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
86
Operações Básicas (Inclusão e Exclusão):
Pode-se inserir e retirar no início e no fim.
Faça uma agenda eletrônica que utilize os seguintes campos: código, nome,
endereço, telefone e uma observação, que permita todas as operações de cadastro
(inclusão, consulta, alteração e exclusão). Esta agenda deverá utilizar listas
simplesmente encadeadas, onde, as informações, deverão ser carregadas e salvas
em arquivos, da seguinte maneira, quando o programa agenda for carregado, este
deverá carregar o arquivo em disco para uma lista em memória, e quando o programa
for encerrado, a lista deverá ser descarregada no arquivo em disco.
Utilizando a agenda criada anteriormente, acrescente a possibilidade de navegação
(para frente e para traz) na rotina de pesquisa.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
87
U
NIDADE
14
Objetivo: Conhecer função de hashing.
HASH
Hash é largamente utilizada para organização dos arquivos em discos nos banco de dados.
Particularidade: é utilizada em memória para melhorar o tempo de busca de elementos
armazenados em listas encadeadas.
A idéia básica é criar uma série de sub-listas no lugar de uma única lista maior. A partir da
aplicação de uma determinada função (chamada função de hashing1) sobre a chave de
busca do elemento, decide-se em qual das sub-listas o elemento deve ser ou estar
armazenado. Procede-se, então, uma busca na sub-lista determinada. Portanto, ao invés de
realizar a busca em toda a lista, faz-se uma busca num subconjunto da lista, conseguindo
fazer uma busca eficiente. Embora os elementos não fiquem dispostos ordenadamente, o
hash permite uma melhora na eficiência da localização individual dos elementos em relação
às listas.
Por existir uma variedade enorme nas funções de hashing, a questão principal é escolher
uma função adequada para garantir uma distribuição uniforme dos elementos nas sub-listas.
Os ponteiros iniciais de cada sub-lista são dispostos num vetor. O número de sub-listas
(dimensão deste vetor) define o tamanho da chamada tabela de hash.
1
Tem como objetivo resolver duas questões importantes:
• Garantir a integridade do documento recebido;
• Agilizar a decifração do documento, pois a criptografia assimétrica é muito lenta na
decifragem, não deixando de ser eficiente.
- Ao aplicar a função de hashing ao documento é gerado um resumo que é chamado de código
hash. Este deve ter duas características fundamentais:
- Deve ser único para cada documento;
- Não deve ser possível recompor o documento a partir do código hash.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
88
A forma mais comum da função hashing é a aplicação, no campo-chave de ordenação, da
função módulo pelo tamanho da hash table e o resultado desta operação indica qual a sublista do elemento. Caso o campo-chave de ordenação não seja numérico, pode-se utilizar
artifícios para transformá-lo em um campo numérico e, então, aplicar a função hashing.
O hash é utilizado para buscar uma melhor eficiência na busca de elementos. Este tipo de
hash em memória é muito utilizado nas implementações das tabelas de símbolos dos
compiladores das linguagens de programação.
Projetos de Redes Neurais
http://www.di.ufpe.br/~compint/projetos-rn.html
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
89
U
NIDADE
15
Objetivo: Diferenciar Banco de Dados e Processamento Tradicional de Arquivos;
Caracterização de Administrador de Banco de Dados; Utilização de SGBD.
BANCO DE DADOS
A tecnologia aplicada aos métodos de armazenamento de informações vem crescendo e
gerando um impacto cada vez maior no uso de computadores, em qualquer área em que os
mesmos podem ser aplicados.
Define-se “banco de dados” como um conjunto de “dados” devidamente relacionados.
“Dados” são “fatos conhecidos” que podem ser armazenados e que possuem um significado
implícito. Porém, o significado do termo “banco de dados” é mais restrito que a definição
dada acima.
Um banco de dados possui as seguintes propriedades:
• É uma coleção lógica coerente de dados com um significado inerente; uma disposição
desordenada dos dados não pode ser referenciada como um banco de dados;
• É projetado, construído e populado com dados para um propósito específico; um
banco de dados possui um conjunto pré-definido de usuários e aplicações;
• Representa algum aspecto do mundo real, o qual é chamado de “mini-mundo” ;
qualquer alteração efetuada no mini-mundo é automaticamente refletida no banco de
dados.
Um banco de dados pode ser criado e mantido por um conjunto de aplicações desenvolvidas
especialmente para esta tarefa ou por um “Sistema Gerenciador de Banco de Dados”
(SGBD), que permite aos usuários criar e manipular bancos de dados de propósito gerais. O
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
90
conjunto formado por um banco de dados mais as aplicações que manipulam o mesmo é
chamado de “Sistema de Banco de Dados”.
Abordagem: Banco de Dados X Processamento Tradicional de Arquivos
Auto Informação: Uma característica importante da abordagem Banco de Dados é que o
SGBD mantém os dados e a forma como são armazenados, contendo uma descrição
completa do banco de dados. Estas informações são armazenadas no catálogo do SGBD
(Meta Dados), o qual contém informações como a estrutura de cada arquivo, o tipo e o
formato de armazenamento de cada tipo de dado, restrições, etc. No processamento
tradicional de arquivos, o programa que irá manipular os dados deve conter este tipo de
informação, ficando limitado a manipular as informações que o mesmo conhece. Utilizando a
abordagem banco de dados, a aplicação pode manipular diversas bases de dados diferentes.
Ambiente de Sistema de Banco de Dados
Separação entre Programas e Dados
No processamento tradicional de arquivos, a estrutura dos dados está incorporada ao
programa de acesso. Desta forma, qualquer alteração na estrutura de arquivos implica na
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
91
alteração no código fonte de todos os programas. Já na abordagem banco de dados, a
estrutura é alterada apenas no catálogo, não alterando os programas.
Abstração de Dados: o SGBD deve fornecer ao usuário uma “representação conceitual” dos
dados, sem fornecer muitos detalhes de como as informações são armazenadas. Um
“modelo de dados” é uma abstração de dados que é utilizada para fornecer esta
representação conceitual utilizando conceitos lógicos como objetos, suas propriedades e
seus relacionamentos. A estrutura detalhada e a organização de cada arquivo são descritas
no catálogo.
Múltiplas Visões de Dados: como um conjunto de informações pode ser utilizado por um
conjunto diferenciado de usuários, é importante que estes usuários possam ter “visões”
diferentes da base de dados. Uma “visão” é definida como um subconjunto de uma base de
dados, formando deste modo, um conjunto “virtual” de informações.
Usuários: Para um grande banco de dados, existe um grande número de pessoas
envolvidas, desde o projeto, uso até manutenção.
Administrador de Banco de Dados (DBA)
Em um ambiente de banco de dados, o recurso primário é o banco de dados e secundário o
SGBD e os softwares relacionados, cabendo ao Administrador de Banco de Dados a
responsabilidade pela autorização de acesso ao banco de dados e pela coordenação e
monitoração de seu uso.
Projetista de Banco de Dados: responsável pela identificação dos dados que devem ser
armazenados no banco de dados, escolhendo a estrutura correta para representar e
armazenar dados. Atuam como staff do DBA, assumindo outras responsabilidades após a
construção do banco de dados. Tem também a função de avaliar as necessidades de cada
grupo de usuários para definir as visões que serão necessárias, integrando-as, fazendo com
que o banco de dados seja capaz de atender a todas as necessidades dos usuários.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
92
Usuários Finais:
Existem basicamente três categorias de usuários finais do banco de dados, fazendo
consultas, atualizações e gerando documentos:
• Usuários casuais: acessam o banco de dados casualmente, mas que podem
necessitar de diferentes informações a cada acesso; utilizam sofisticadas linguagens
de consulta para especificar suas necessidades;
• Usuários novatos ou paramétricos: utilizam porções pré-definidas do banco de dados,
utilizando consultas preestabelecidas que já foram exaustivamente testadas;
• Usuários sofisticados: são usuários que estão familiarizados com o SGBD e realizam
consultas complexas.
Analistas de Sistemas e Programadores de Aplicações.
Os analistas determinam os requisitos dos usuários finais e desenvolvem especificações
para transações que atendam estes requisitos, e os programadores implementam estas
especificações como programas, testando, depurando, documentando e dando manutenção
no mesmo. É importante que, tanto analistas quanto programadores, estejam a par dos
recursos oferecidos pelo SGBD.
Vantagens e desvantagens do uso de um SGBD:
Controle de Redundância: no processamento tradicional de arquivos, cada grupo de usuários
deve manter seu próprio conjunto de arquivos e dados. Desta forma, acaba ocorrendo
redundâncias que prejudicam o sistema com problemas como:
Toda vez que for necessário atualizar um arquivo de um grupo, todos os grupos devem ser
atualizados para manter a integridade dos dados no ambiente como um todo;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
93
A redundância desnecessária de dados leva ao armazenamento excessivo de informações,
ocupando espaço que poderia estar sendo utilizado com outras informações.
Compartilhamento de Dados: um SGBD multiusuário deve permitir que múltiplos usuários
acessem o banco de dados ao mesmo tempo. Este fator é essencial para que múltiplas
aplicações integradas possam acessar o banco. Deve manter o controle de concorrência
para assegurar que o resultado de atualizações seja correto. Um banco de dados
multiusuários deve fornecer recursos para a construção de múltiplas visões.
Restrição a Acesso não Autorizado: um SGBD deve fornece um subsistema de autorização e
segurança, o qual é utilizado pelo DBA para criar “contas” e especificar as restrições destas
contas; o controle de restrições se aplica tanto ao acesso aos dados quanto ao uso de
softwares inerentes ao SGBD.
Representação de Relacionamentos Complexos entre Dados: um banco de dados pode
incluir uma variedade de dados que estão inter-relacionados de várias formas. Um SGBD
deve fornecer recursos para se representar uma grande variedade de relacionamentos entre
os dados, bem como, recuperar e atualizar os dados de maneira prática e eficiente.
Tolerância a Falhas: um SGBD deve fornecer recursos para recuperação de falhas tanto de
software quanto de hardware.
Quando não Utilizar um SGBD:
Em algumas situações, o uso de um SGBD pode representar uma carga desnecessária aos
custos quando comparado à abordagem processamento tradicional de arquivos como:
• Alto investimento inicial na compra de software e hardware adicionais;
• Generalidade que um SGBD fornece na definição e processamento de dados;
• Sobrecarga na provisão de controle de segurança, controle de concorrência,
recuperação e integração de funções.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
94
Problemas adicionais podem surgir caso os projetistas ou administradores de banco de
dados não elaborem os projetos corretamente ou se as aplicações não são implementadas
de forma apropriada. Se o DBA não administrar o banco de dados de forma apropriada, tanto
a segurança quanto a integridade dos sistemas podem ser comprometidas. A sobrecarga
causada pelo uso de um SGBD e a má administração justificam a utilização da abordagem
processamento tradicional de arquivos em casos como:
• O banco de dados e as aplicações são simples, bem definidas e não se espera
mudanças no projeto;
• A necessidade de processamento em tempo real de certas aplicações, que são
terrivelmente prejudicadas pela sobrecarga causada pelo uso de um SGBD;
• Não haverá múltiplo acesso ao banco de dados. Conceitos e Arquiteturas de um
SGBD.
O que é Phishing?
Phishing é uma tentativa fraudulenta, feita geralmente através de email, para
roubar suas informações pessoais.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
95
U
NIDADE
16
Objetivo: Conhecer Níveis, Arquitetura e Modelagem de Dados; Possíveis Linguagens para
Manipulação de Dados
DADOS
Modelos de Dados
Uma das principais características do banco de dados é que fornece alguns níveis de
abstração de dados omitindo ao usuário final, detalhes de como estes dados são
armazenados. Um “modelo de dados” é um conjunto de conceitos que podem ser utilizados
para descrever a estrutura “lógica” e “física” de um banco de dados. Por “estrutura” podemos
compreender o tipo dos dados, os relacionamentos e as restrições que podem recair sobre
os dados.
Os modelos de dados podem ser basicamente de dois tipos:
1. Alto nível: ou modelo de dados conceitual, fornece uma visão mais próxima do modo
como os usuários visualizam os dados realmente;
2. Baixo nível: ou modelo de dados físico, fornece uma visão mais detalhada do modo
como os dados estão realmente armazenados no computador.
Esquemas e Instâncias
Em qualquer modelo de dados utilizado, é importante distinguir a “descrição” do banco de
dados do “banco de dados” por si próprio. A descrição de um banco de dados é chamada de
“esquema de um banco de dados” e é especificada durante o projeto do banco de dados.
Geralmente, poucas mudanças ocorrem no esquema do banco de dados.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
96
Os dados armazenados em um banco de dados em um determinado instante do tempo
formam um conjunto chamado de “instância do banco de dados”. A instância altera toda vez
que uma alteração no banco de dados é feita.
O SGBD é responsável por garantir que toda instância do banco de dados satisfaça ao
esquema do banco de dados, respeitando sua estrutura e suas restrições. O esquema de um
banco de dados também pode ser chamado de “intensão” de um banco de dados e a
instância de “extensão” de um banco de dados.
A Arquitetura Três Esquemas: tem como meta separar as aplicações do usuário do banco de
dados físico.
Os esquemas podem ser definidos como:
1. Nível interno: ou esquema interno, descreve a estrutura de armazenamento físico do
banco de dados; utiliza um modelo de dados e descreve detalhadamente os dados
armazenados e os caminhos de acesso ao banco de dados;
2. Nível conceitual: ou esquema conceitual, descreve a estrutura do banco de dados
como um todo; é uma descrição global do banco de dados, que não fornece detalhes
do modo como os dados estão fisicamente armazenados;
3. Nível externo: ou esquema de visão, descreve as visões do banco de dados para um
grupo de usuários; cada visão descreve quais porções do banco de dados um grupo
de usuários terá acesso.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
97
Arquitetura Três Esquemas
Independência de Dados
Pode ser definida como a capacidade de alterar um esquema em um nível em um banco de
dados sem ter que alterar um nível superior.
Existem dois tipos de independência de dados:
• Independência de dados lógica: é a capacidade de alterar o esquema conceitual sem
ter que alterar o esquema externo ou as aplicações do usuário;
• Independência de dados física: é a capacidade de alterar o esquema interno sem ter
que alterar o esquema conceitual, o esquema externo ou as aplicações do usuário.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
98
As Linguagens para Manipulação de Dados
Para definir os esquemas conceituais e internos pode-se utilizar uma linguagem chamada
DDL (Data Definition Language – Linguagem de Definição de Dados). O SGBD possui um
compilador DDL que permite a execução das declarações para identificar as descrições dos
esquemas e para armazená-las no catálogo do SGBD.
A DDL é utilizada em SGBDs onde a separação entre os níveis interno e conceitual não é
muito clara. Quando são bem claras, é utilizada outra linguagem, a SDL (Storage Definition
Language – Linguagem de Definição de Armazenamento) para a especificação do esquema
interno. A especificação do esquema conceitual fica por conta da DDL.
Em um SGBD que utiliza a arquitetura três esquemas são necessários a utilização de mais
uma linguagem para a definição de visões, a VDL (Vision Definition Language – Linguagem
de Definição de Visões). Uma vez que o esquema esteja compilado e o banco de dados
esteja populado, usa-se uma linguagem para fazer a manipulação dos dados, a DML (Data
Manipulation Language – Linguagem de Manipulação de Dados).
Os Módulos Componentes de um SGBD: um SGBD é um sistema complexo, formado por um
conjunto muito grande de módulos.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
99
Estrutura de um Sistema Gerenciador de Banco de Dados
Classificação dos SGBDs: tem como critério principal o modelo de dados no qual é baseado.
A grande maioria dos SGBDs contemporâneos é baseado no modelo relacional, alguns em
modelos conceituais e alguns em modelos orientados a objetos:
Usuários: um SGBD pode ser mono-usuário, comumente utilizado em computadores
pessoais ou multiusuários, utilizado em estações de trabalho, mini-computadores e máquinas
de grande porte;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
100
Localização: um SGBD pode ser localizado ou distribuído; se ele for localizado, então todos
os dados estarão em uma máquina (ou em um único disco) ou distribuído, onde os dados
estarão distribuídos por diversas máquinas (ou diversos discos);
Ambiente: ambiente homogêneo é o ambiente composto por um único SGBD e um ambiente
heterogêneo é o ambiente compostos por diferentes SGBDs.
Modelagem de Dados Utilizando o Modelo Entidade Relacionamento (ER)
O modelo Entidade-Relacionamento é um modelo de dados conceitual de alto nível, cujos
conceitos foram projetados para estar o mais próximo possível da visão que o usuário tem
dos dados, não se preocupando em representar como estes dados estarão realmente
armazenados. É utilizado principalmente durante o processo de projeto de banco de dados.
Fases do Projeto de um Banco de Dados
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
101
Entidades e Atributos: O objeto básico tratado pelo modelo ER é a “entidade”, que pode ser
definida como um objeto do mundo real, concreto ou abstrato e que possui existência
independente. Cada entidade possui um conjunto particular de propriedades que a descreve
chamado “atributos” que pode ser dividido em diversas sub-partes com significado
independente entre si, recebendo o nome de “atributo composto”. Um atributo que não pode
ser subdividido é chamado de “atributo simples” ou “atômico”. Os atributos que podem
assumir apenas um determinado valor em uma determinada instância são denominados
“atributo simplesmente valorado”, e um atributo que pode assumir diversos valores em uma
mesma instância é denominado “multi valorado”. Um atributo que é gerado a partir de outro
atributo é chamado de “atributo derivado”.
Tipos Entidade, Conjunto de Valores, Atributo Chave:
Um banco de dados costuma conter grupos de entidades que são similares, possuindo os
mesmos atributos, porém, cada entidade com seus próprios valores para cada atributo. Este
conjunto de entidades similares define um “tipo entidade”, identificado por seu nome e pelo
conjunto de atributos que definem suas propriedades. A descrição do tipo entidade é
chamada de “esquema do tipo entidade”, especificando o nome do tipo entidade, o nome de
cada um de seus atributos e qualquer restrição que incida sobre as entidades.
Uma restrição muito importante em uma entidade de um determinado tipo entidade é a
“chave”. Um tipo entidade possui um atributo cujos valores são distintos para cada entidade
individual, chamado “atributo chave” e seus valores podem ser utilizados para identificar cada
entidade de forma única. Muitas vezes, uma chave pode ser formada pela composição de
dois ou mais atributos. Uma entidade pode também ter mais de um atributo chave. Cada
atributo simples de um tipo entidade está associado com um conjunto de valores
denominado “domínio”, o qual especifica o conjunto de valores que podem ser designados
para este determinado atributo para cada entidade.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
102
U
NIDADE
17
Objetivo: Conceituar e conhecer os tipos e Instâncias de relacionamentos; Diferenciação de
Entidades.
RELACIONAMENTOS
Tipos e Instâncias de Relacionamento: um “tipo relacionamento” R entre n entidades E1, E2,
..., En, é um conjunto de associações entre entidades deste tipo. Cada instância de
relacionamento r1 em R é uma associação de entidades que inclui exatamente uma entidade
de cada tipo entidade participante no tipo relacionamento. Isto significa que estas entidades
estão relacionadas de alguma forma no mini-mundo. A figura abaixo mostra um exemplo
entre dois tipos entidade (empregado e departamento) e o relacionamento entre eles
(trabalha para). Para cada relacionamento, participam apenas uma entidade de cada tipo
entidade, porém, uma entidade pode participar de mais do que um relacionamento.
Exemplo 1: Relacionamento
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
103
Grau de um Relacionamento:
O “grau” de um tipo relacionamento é o número de tipos entidade que participam do tipo
relacionamento. No exemplo da figura 5, temos um relacionamento binário. O grau de um
relacionamento é ilimitado, porém, a partir do grau 3 (ternário), a compreensão e a
dificuldade de se desenvolver a relação corretamente se tornam extremamente complexas.
Relacionamentos como Atributos:
Algumas vezes é conveniente pensar em um relacionamento como um atributo.
Considerando o exemplo dado acima, podemos pensar departamento como sendo um
atributo da entidade empregado, ou empregado, como um atributo multivalorado da entidade
departamento. Se uma entidade não possuir existência muito bem definida, talvez seja mais
interessante para a coesividade do modelo lógico que ela seja representada como um
atributo.
Nomes de Papéis e Relacionamentos Recursivos:
Cada tipo entidade que participa de um tipo relacionamento desempenha um “papel”
particular no relacionamento. “Papel” representa o que uma entidade de um tipo entidade
participante desempenha no relacionamento. No exemplo 1 temos o papel empregado ou
trabalhador para o tipo entidade EMPREGADO e o papel departamento ou empregador para
a entidade DEPARTAMENTO. Nomes de papéis não são necessariamente importantes
quando todas as entidades participantes desempenham papéis diferentes. Algumas vezes, o
papel torna-se essencial para distinguir o significado de cada participação. Isto é muito
comum em “relacionamentos recursivos”. Um relacionamento recursivo é um relacionamento
entre entidades do mesmo tipo entidade.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
104
Exemplo 2: Relacionamento Recursivo
No exemplo 2 temos um relacionamento entre o tipo entidade EMPREGADO, onde um
empregado pode supervisionar outro empregado e um empregado pode ser supervisionado
por outro empregado.
Restrições em Tipos Relacionamentos:
Geralmente, os tipos relacionamentos sofrem certas restrições que limitam as possíveis
combinações das entidades participantes, derivadas de restrições impostas pelo estado
destas entidades no mini-mundo.
Exemplo 3: Relacionamento EMPREGADO gerencia DEPARTAMENTO
No exemplo 3 temos um empregado que pode gerenciar apenas um departamento, enquanto
que um departamento pode ser gerenciado por apenas um empregado. A este tipo de
restrição, nós chamamos cardinalidade, que indica o número de relacionamentos dos quais
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
105
uma entidade pode participar. A cardinalidade pode ser: 1:1, 1:N, M:N. A cardinalidade do
exemplo 3 é 1:1, pois cada entidade empregada pode gerenciar apenas um departamento e
um departamento pode ser gerenciado por apenas um empregado. No exemplo 2, o
relacionamento EMPREGADO Trabalha Para DEPARTAMENTO é 1:N, pois um empregado
pode trabalhar em apenas um departamento, enquanto que um departamento pode possuir
vários empregados.
Exemplo 4: Relacionamento
No exemplo 4 temos um relacionamento com cardinalidade N:M, onde um empregado pode
trabalhar em vários projetos enquanto que um projeto pode ter vários empregados
trabalhando.
Outra restrição muito importante é a participação, que define a existência de uma entidade
através do relacionamento, podendo ser parcial ou total. No exemplo 3 a participação do
empregado é parcial, pois nem todo empregado gerencia um departamento, porém a
participação do departamento neste relacionamento é total, pois todo departamento precisa
ser gerenciado por um empregado. Desta forma, todas as entidades do tipo entidade
DEPARTAMENTO precisam participar do relacionamento, mas nem todas as entidade do
tipo entidade EMPREGADO precisam participar do relacionamento. No exemplo 1 ambas
participações são totais, pois todo empregado precisa trabalhar em um departamento e todo
departamento tem que ter empregados trabalhando nele.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
106
Estas restrições são chamadas de restrições estruturais. Algumas vezes, torna-se necessário
armazenar um atributo no tipo relacionamento. No exemplo 3, pode-se querer saber em que
dia o empregado passou a gerenciar o departamento. É difícil estabelecer a qual tipo
entidade pertence atributo, pois o mesmo é definido apenas pela existência do
relacionamento. Quando temos relacionamentos com cardinalidade 1:1, podemos colocar o
atributo em uma das entidades, de preferência, em uma cujo tipo entidade tenha participação
total. No caso, o atributo poderia ir para o tipo entidade departamento. Isto porque nem todo
empregado participará do relacionamento. Caso a cardinalidade seja 1:N, podemos colocar o
atributo no tipo entidade com participação N. Porém, se a cardinalidade for N:M, o atributo
deverá mesmo ficar no tipo relação. No exemplo 4, caso queiramos armazenar quantas
horas cada empregado trabalhou em cada projeto, então este deverá ser um atributo do
relacionamento.
Tipos Entidades Fracas
Alguns tipos entidade podem não ter um atributo chave por si só. Isto implica que não
poderemos distinguir algumas entidades por que as combinações dos valores de seus
atributos podem ser idênticas. São as entidades fracas, que precisam estar relacionadas com
uma entidade pertencente ao tipo entidade proprietária. Este relacionamento é chamado de
relacionamento identificador.
Exemplo 5: Relacionamento com uma Entidade Fraca (Dependente)
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
107
O tipo entidade DEPENDENTE é uma entidade fraca, pois não possui um método de
identificar uma entidade única. O EMPREGADO não é uma entidade fraca, pois possui um
atributo para identificação (atributo chave). O número do RG de um empregado identifica um
único empregado. Porém, um dependente de 5 anos de idade não possui necessariamente
um documento, sendo tipo entidade fraca. Um tipo entidade fraca possui uma chave parcial,
que juntamente com a chave primária da entidade proprietária forma uma chave primária
composta. Neste exemplo: a chave primária do EMPREGADO é o RG. A chave parcial do
DEPENDENTE é o seu nome, pois dois irmãos não podem ter o mesmo nome. Desta forma,
a chave primária desta entidade fica sendo o RG do pai ou mãe mais o nome do dependente.
Todos os exemplos vistos acima foram para relacionamentos binários, ou seja, entre dois
tipos entidades diferentes ou recursivos. Porém, o modelo entidade relacionamento não se
restringe apenas a relacionamentos binários, pois o número de entidades que participam de
um tipo relacionamento é irrestrito e armazenam muito mais informações do que diversos
relacionamentos binários. Considerando o exemplo: um motorista pode efetuar uma viagem
para uma localidade dirigindo um determinado caminhão em uma determinada data.
Se efetuarmos três relacionamentos binários, não teremos estas informações de forma
completa como se criássemos um relacionamento ternário.
Exemplo 6: Relacionamento Ternário
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
108
U
NIDADE
18
Objetivo: Conhecer a Modelagem de Entidade de Relacionamento.
ENTIDADE DE RELACIONAMENTO
Diagrama Entidade Relacionamento (ER)
É composto por um conjunto de objetos gráficos que visa representar todos os objetos do
modelo Entidade Relacionamento, tais como entidades, atributos, atributos chaves,
relacionamentos, restrições estruturais, etc. O diagrama ER fornece uma visão lógica do
banco de dados, fornecendo um conceito mais generalizado de como estão estruturados os
dados de um sistema.
Objetos que compõem o diagrama ER:
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
109
Objetos que Compõem o Diagrama ER
Modelagem Entidade Relacionamento Estendido (ERE)
Os conceitos do modelo ER são suficientes para representar logicamente a maioria das
aplicações de banco de dados. Porém, com o surgimento de novas aplicações, surgiu
também a necessidade de novas semânticas para a modelagem de informações mais
complexas. O modelo ERE visa fornecer esta semântica para permitir a representação de
informações complexas. Embora trate classes e subclasses, não possui a mesma semântica
de um modelo orientado a objetos. O modelo ERE engloba todos os conceitos do modelo ER
mais os conceitos de subclasse, superclasse, generalização e especialização e o conceito de
herança de atributos.
Subclasses, Superclasses e Especializações: O primeiro conceito do modelo ERE que será
abordado é o de subclasse de um tipo entidade. Como já visto, um tipo entidade é utilizado
para representar um conjunto de entidades do mesmo tipo. Em muitos casos, um tipo
entidade possui diversos subgrupos adicionais de entidades que são significativas e
precisam ser representadas explicitamente devido ao seu significado à aplicação de banco
de dados. Considere o exemplo: Para um banco de dados de uma empresa temos o tipo
entidade empregado, o qual possui as seguintes características: nome, rg, cic, número
funcional, endereço completo (rua, número, complemento, cep, bairro, cidade), sexo, data de
nascimento e telefone (ddd e número); caso o(a) funcionário(a) seja um(a) engenheiro(a),
então deseja-se armazenar as seguintes informações: número do CREA e especialidade
(Civil, Mecânico, Elétro/Eletrônico); caso o(a) funcionário(a) seja um(a) secretário(a), então
deseja-se armazenar as seguinte informações: qualificação (bi ou tri língue) e os idiomas no
qual possui fluência verbal e escrita.
Representando as informações número do CREA, especialidade, tipo e idiomas no tipo
entidade empregado representando informações de um conjunto limitado de entidades
empregado para os todos os funcionários da empresa. Neste caso, podemos criar duas
subclasses do tipo entidade empregado: engenheiro e secretária, as quais irão conter as
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
110
informações acima citadas. Além disso, engenheiro e secretária podem ter relacionamentos
específicos.
Uma entidade não pode existir meramente como componente de uma subclasse. Antes de
ser componente de uma subclasse, uma entidade deve ser componente de uma superclasse.
Isto leva ao conceito de herança de atributos, ou seja, a subclasse herda todos os atributos
da superclasse. Isto porque a entidade de subclasse representa as mesmas características
de uma mesma entidade da superclasse. Uma subclasse pode herdar atributos de
superclasses diferentes.
Exemplo 7: Representação de Superclasse e Subclasses
Especialização
É o processo de definição de um conjunto de classes de um tipo entidade, chamado de
superclasse da especialização. O conjunto de subclasses é formado baseado em alguma
característica que distinguia as entidades entre si.
No exemplo 7 temos uma especialização, a qual podemos chamar de função. No exemplo 8
temos a entidade empregado e duas especializações.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
111
Exemplo 8: Duas Especializações para Empregado: Função e Categoria Salarial
Como já visto uma subclasse pode ter relacionamentos específicos com outras entidades ou
com a própria entidade que é a sua superclasse. Veja o exemplo 9.
Exemplo 9: Relacionamentos Entre Subclasses e Entidades
O processo de especialização nos permite:
• Definir um conjunto de subclasses de um tipo entidade;
• Associar atributos específicos adicionais para cada subclasse;
• Estabelecer tipos relacionamentos específicos entre subclasses e outros tipos
entidades.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
112
Generalização
A generalização pode ser pensada como um processo de abstração reverso ao da
especialização, no qual são suprimidas as diferenças entre diversos tipos entidades,
identificando suas características comuns e generalizando estas entidades em uma
superclasse.
Exemplo 10: Tipos Entidades Engenheiro e Secretária
Exemplo 11: Generalização Empregado para os Tipos Entidades Engenheiro e Secretária
Na especialização podemos notar que a ligação entre a superclasse e as subclasses é feita
através de um traço simples, indicando participação parcial por parte da superclasse.
Analisando o exemplo 7 é observado que um empregado não é obrigado a ser um
engenheiro ou uma secretária. Na generalização a ligação entre a superclasse e as
subclasses é feita através de um traço duplo, indicando participação total por parte da
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
113
superclasse. Analisando o exemplo 11 observa-se que um empregado é obrigado a ser um
engenheiro ou uma secretária.
A letra d dentro do círculo que especifica uma especialização ou uma generalização significa
disjunção, que é uma disjunção em uma especialização ou generalização indica que uma
entidade do tipo entidade que representa a superclasse pode assumir apenas um papel
dentro da mesma. Analisando o exemplo 8 temos duas especializações para a superclasse
Empregado, as quais são restringidas através de uma disjunção. Neste caso, um empregado
pode ser um engenheiro ou uma secretária e o mesmo pode ser horista ou mensalista.
Além da disjunção podemos ter um “overlap”, representado pela letra o. No caso do overlap
uma entidade de uma superclasse pode ser membro de mais que uma subclasse em uma
especialização ou generalização. Analisando a generalização no exemplo 12, suponha que
uma peça fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter
sido manufaturada e torneada.
Exemplo 12: - Uma Generalização com “Overlap”
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
114
U
NIDADE
19
Objetivo: Diferenciar Domínios, Tuplas, Atributos e Relações; Conhecer o Mapeamento do
Modelo Entidade Relacionamento para o Modelo Relacional.
MODELO RELACIONAL
“Lattice” ou Múltipla Herança
Uma subclasse pode ser definida através de um “lattice”, ou múltipla herança, ou seja, ela
pode ter diversas superclasses, herdando características de todas. Leve em consideração o
seguinte exemplo: Uma construtora possui diversos funcionários, os quais podem ser
engenheiros ou secretárias. Um funcionário pode também ser assalariado ou horista. Todo
gerente de departamento da construtora deve ser um engenheiro e assalariado.
Exemplo 13: Um “Lattice” com a Subclasse Gerente Compartilhada
Neste caso então, um gerente será um funcionário que além de possuir as características
próprias de Gerente, herdará as características de Engenheiro e de Mensalista.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
115
O Modelo Relacional
Foi criado por Codd em 1970 e tem por finalidade representar os dados como uma coleção
de relações, onde cada relação é representada por uma tabela, ou falando de uma forma
mais direta, um arquivo. Porém, um arquivo é mais restrito que uma tabela. Toda tabela pode
ser considerada um arquivo, porém, nem todo arquivo pode ser considerado uma tabela.
Quando uma relação é pensada como uma tabela de valores, cada linha nesta tabela
representa uma coleção de dados relacionados. Estes valores podem ser interpretados como
fatos descrevendo uma instância de uma entidade ou de um relacionamento. O nome da
tabela e das colunas desta tabela é utilizado para facilitar a interpretação dos valores
armazenados em cada linha da tabela. Todos os valores em uma coluna são
necessariamente do mesmo tipo.
Na terminologia do modelo relacional, cada tabela é chamada de relação; uma linha de uma
tabela é chamada de tupla, o nome de cada coluna é chamado de atributo; o tipo de dado
que descreve cada coluna é chamado de domínio.
Domínios, Tuplas, Atributos e Relações
Um domínio D é um conjunto de valores atômicos, sendo que por atômico, podemos
compreender que cada valor do domínio é indivisível. Durante a especificação do domínio é
importante destacar o tipo, o tamanho e a faixa do atributo que está sendo especificado.
Coluna
Tipo
Tamanho
RG
Numérico
10,0
Nome
Carácter
30
a-z, A-Z
Salário
Numérico
5,2
00100,00-12999,99
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
Faixa
0300000025999999
116
Um esquema de relação R, denotado por R(A 1 , A 2 , ... , A n), onde cada atributo A i é o
nome do papel desempenhado por um domínio D no esquema relação R, onde D é chamado
domínio de A i e é denotado por dom(A i). O grau de uma relação R é o número de atributos
presentes em seu esquema de relação.
A instância r de um esquema relação denotado por r(R) é um conjunto de n-tuplas
r = [t 1 , t 2 , ... , t n] onde os valores de [t 1 , t 2 , ... , t n] devem estar contidos no domínio D .
O valor nulo também pode fazer parte do domínio de um atributo e representa um valor não
conhecido para uma determinada tupla.
Atributo Chave de uma Relação
Uma relação pode ser definida como um conjunto de tuplas distintas. Isto implica que a
combinação dos valores dos atributos em uma tupla não pode se repetir na mesma tabela.
Existirá sempre um subconjunto de atributos em uma tabela que garantem que não haverá
valores repetidos para as diversas tuplas da mesma, garantindo que t1[SC] ¹ t2[SC].
SC é chamada de superchave de um esquema de relação. Toda relação possui ao menos
uma superchave – o conjunto de todos os seus atributos. Uma chave C de um esquema de
relação R é uma superchave de R com a propriedade adicional que removendo qualquer
atributo A de K, resta ainda um conjunto de atributos K ' que não é uma superchave de R.
Uma chave é uma superchave da qual não se podem extrair atributos. Por exemplo, o
conjunto: (RA, Nome, Endereço) é uma superchave para estudante, porém, não é uma
chave, pois se tirarmos o campo Endereço continuaremos a ter uma superchave. Já o
conjunto (Nome da Revista, Volume, N o da Revista) é uma superchave e uma chave, pois
qualquer um dos atributos que retirarmos, deixaremos de ter uma superchave, ou seja,
(Nome da Revista, Volume) não identifica uma única tupla.
Em outras palavras, uma superchave é uma chave composta, ou seja, uma chave formada
por mais que um atributo.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
117
Exemplo:
Tabela DEPENDENTES
RG
Nome
Responsável
Dependente
10101010
Dt. Nascimento Relação
Sexo
Jorge
27/12/86
Filho
Masculino
10101010
Luiz
18/11/79
Filho
Masculino
20202020
Fernanda
14/02/69
Cônjuge
Feminino
20202020
Ângelo
10/02/95
Filho
Masculino
30303030
Fernanda
01/05/90
Filho
Feminino
Quando uma relação possui mais que uma chave (não confundir com chave composta),
como RG e CIC para empregados, cada uma destas chaves são chamadas de chaves
candidatas. Uma destas chaves candidatas deve ser escolhida como chave primária. Uma
chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um relacionamento
entre as tabelas R 1 e R 2.
Tabela DEPARTAMENTO
Nome
Número
RG Gerente
Contabilidade
1
10101010
Engenharia Civil
2
30303030
Engenharia Mecânica
3
20202020
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
118
Tabela EMPREGADO
Depto.
RG
Nome
RG
João Luiz
10101010
11111111
1
NULO
3.000,00
Fernando
20202020
22222222
2
10101010
2.500,00
Ricardo
30303030
33333333
2
10101010
2.300,00
Jorge
40404040
44444444
2
20202020
4.200,00
Renato
50505050
55555555
3
20202020
1.300,00
Supervisor
Salário
Mapeamento do Modelo Entidade Relacionamento para o Modelo Relacional:
Segue oito passos básicos:
1. Para cada entidade E no modelo ER é criada uma tabela T1 no Modelo Relacional que
inclua todos os atributos simples de E; para cada atributo composto, são inseridos
apenas os componentes simples de cada um; um dos atributos chaves de E deve ser
escolhida como a chave primária de T1;
2. Para cada entidade fraca EF com entidade proprietária E no modelo ER, é criada uma
tabela T1 no Modelo Relacional incluindo todos os atributos simples de EF; para cada
atributo composto, são inseridos apenas os componentes simples de cada um; a
chave primária desta relação T será composta pela chave parcial da entidade fraca EF
mais a chave primária da entidade proprietária E;
3. Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que
geraram as tabelas T1 e T2 respectivamente, devemos escolher a chave primária de
uma das relações (T1, T2) e inseri-la como chave estrangeira na outra relação; se um
dos lados do relacionamento tiver participação total e outro parcial, então é
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
119
interessante que a chave do lado com participação parcial seja inserido como chave
estrangeira no lado que tem participação total;
4. Para cada relacionamento regular com cardinalidade 1:N entre entidades E1 e E2
respectivamente e que geraram as tabelas T1 e T2 respectivamente, deve-se inserir a
chave primária de T1 como chave estrangeira em T2;
5. Para cada relacionamento regular com cardinalidade N:N entre entidades E1 e E2 ,
cria-se uma nova tabela T1, contendo todos os atributos do relacionamento mais o
atributo chave de E1 e o atributo chave de E2; a chave primária de T1 será composta
pelos atributos chave de E1 e E2;
6. Para cada atributo multivalorado A1, cria-se uma tabela T1, contendo o atributo
multivalorado A1, mais o atributo chave C da tabela que representa a entidade ou
relacionamento que contém A1 ; a chave primária de T1 será composta por A1 mais
C; se A1 for composto, então a tabela T1 deverá conter todos os atributos de A1;
7. Para cada relacionamento n-ário, n > 2, cria-se uma tabela T1, contendo todos os
atributos do relacionamento; a chave primária de T1 será composta pelos atributos
chaves das entidades participantes do relacionamento;
8. Converta cada especialização com m subclasses {S1 , S2 , ..., Sm} e superclasse SC,
onde os atributos de SC são {c, a1 , a2 , ..., an } onde c é a chave primária de SC, em
tabelas utilizando uma das seguintes opções:
9. Crie uma tabela T para SC com os atributos A(T) = {c, a1 , a2 , ..., an} e chave C(T) =
c; crie uma tabela Ti para cada subclasse Si, 1 ≤ ι ≤ m, com os atributos;
10. A(Ti ) = {c} ∪ A(Si ), onde C(T) = c;
11. Crie uma tabela T i para cada subclasse S i , 1 ≤ ι ≤ m, com os atributos
A(Ti ) = A(Si ) ∪ {c, a 1 , a 2 , ..., a n} e C(Ti ) = c ;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
120
12. Crie uma tabela T com os atributos A(T) = {c, a 1 , a 2 , ..., a n} ∪ Α(Σ1) ∪ ... ∪ A(Sm)
∪ {t} e C(T) = c, onde t é um atributo tipo que indica a subclasse à qual cada tupla
pertence, caso isto venha a ocorrer;
13. Crie uma tabela T com atributos A(T) = {c, a1 , a2 , ..., an } ∪ A(S1) ∪ ... ∪ Α(Sm) ∪ {t1
, t2 , ..., tm} e C(T) = c; esta opção é para generalizações com “overlapping”, e cada ti ,
1 ≤ ι ≤ µ, é um atributo “booleano” indicando se a tupla pertence ou não à subclasse
Si; embora funcional, esta opção pode gerar uma quantidade muito grande de valores
nulos.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
121
U
NIDADE
20
Objetivo: Conhecer a Álgebra Relacional, Seqüencialidade de Operações, Dependência
Funcional e Normalização.
ATRIBUTOS DE DADOS
Dependência Funcional e Normalização
Dependência Funcional: é uma restrição entre dois conjuntos de atributos de uma base de
dados. Suponha que o esquema de uma base de dados R possua n atributos A 1, A 2 , ..., A
n; pense em R = {A1 , A2 , ... , An} como a representação universal da base de dados. Uma
dependência funcional, representada por X < > Y entre dois conjuntos de atributos X e Y que
são subconjuntos de R especificam uma restrição nas tuplas que podem compor uma
instância relação r de R. A restrição estabelece que para qualquer par de tuplas t 1 e t 2 em r
de forma que t 1 . [X] = t2. [X], é obrigado a existir t1. [Y] = t2. [Y]. Isto significa que os
valores do componente Y em uma tupla em r depende de, ou é determinada pelos valores do
componente X. Para X < > Y lê-se: Y é funcionalmente dependente de X, u X infere sobre Y.
Para a base de dados do apêndice A exemplifica-se as seguintes dependências funcionais:
RG < > {Nome, CIC, Depto., RG_Supervisor, Salário}
Número_Projeto < > {Nome_Projeto, Localização}
{RG_Empregado, Número_Projeto} < > Horas
além de outras.
A dependência 1 implica que o número de um RG define de forma única o nome do
empregado e o CIC do empregado. A dependência 2 implica que o número do projeto define
de forma única o nome do projeto e sua localização e a dependência 3 implica que o RG do
empregado mais o número do projeto definem de forma única o número de horas que o
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
122
empregado trabalhou no projeto. A especificação das inferências deve ser elaborada pelo
projetista de banco de dados em conjunto com o analista de sistemas, pois os mesmos
deverão ter conhecimento da semântica da base de dados.
Normalização: processo no qual são eliminados esquemas de relações (tabelas) não
satisfatórios, decompondo-os, através da separação de seus atributos em esquemas de
relações menos complexas, mas que satisfaçam as propriedades desejadas.
Proposto inicialmente por Codd, o processo de normalização conduz um esquema de relação
através de uma bateria de testes para certificar se o mesmo está na 1ª, 2ª e 3ª Formas
Normais, baseadas em dependências funcionais dos atributos do esquema de relação:
1ª Forma Normal: prega que todos os atributos de uma tabela devem ser atômicos
(indivisíveis), ou seja, não são permitidos atributos multivalorados, atributos compostos ou
atributos multivalorados compostos.
Considere:
CLIENTE
Código
{Telefone}
Endereço: (Rua, Número, Cidade)
Gera a tabela resultante:
Cliente
Código
Telefone 1
Endereço
Telefone n
Rua
No
Cidade
Sendo que a mesma não está na 1ª Forma Normal, pois seus atributos não são atômicos.
Para que fique na 1ª a Forma Normal temos que eliminar os atributos não atômicos, gerando
as seguintes tabelas como resultado:
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
123
Cliente
Código
Cliente_Telefone
Rua
Número
Código_Cliente
Cidade
Telefone_Cliente
2ª Forma Normal: prega o conceito da dependência funcional total. Uma dependência
funcional X à Y é total se removemos um atributo A qualquer do componente X e desta
forma, a dependência funcional deixa de existir. A dependência funcional X à Y é uma
dependência funcional parcial se existir um atributo A qualquer do componente X que pode
ser removido e a dependência funcional X < > Y não deixa de existir.
Como já visto, a dependência funcional {RG_Empregado, Número_Projeto} < > Horas é uma
dependência funcional total, pois se removermos o atributo RG_Empregado ou o atributo
Número_Projeto, a dependência funcional deixa de existir.
Uma tabela T está na 2ª Forma Normal se estiver na 1ª Forma Normal e todo atributo que
não compõem a chave primária C for totalmente funcionalmente dependente da chave
primária C. Se uma tabela não está na 2ª a Forma Normal a mesma pode ser normalizada
gerando outras tabelas cujos atributos que não façam parte da chave primária sejam
totalmente funcionalmente dependente da mesma, ficando a tabela na 2ª Forma Normal.
3ª Forma Normal: prega o conceito de dependência transitiva. Uma dependência funcional X
< > Y em uma tabela T é uma dependência transitiva se existir um conjunto de atributos Z
que não é um subconjunto de chaves de T e as dependências X < > Z , Z < > Y , são válidas.
Considere:
Empregado
RG
Nome
N o _Departamento
Nome_Depto
RG_Ger_Depto
onde temos a seguinte dependência transitiva:
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
124
RG < > { Nome_Depto, RG_Ger_Depto}
RG < > N o _Departamento
N o _Departamento < > {Nome_Depto, RG_Ger_Depto}
Porém, verifique o caso da tabela abaixo:
Empregado
RG
CIC
Nome
N o _Funcional
Neste caso, a dependência transitiva:
RG < > {Nome, N o _Funcional}
RG < > CIC
CIC < > {Nome, N o _Funcional}
não é valida pois o atributo CIC é uma chave candidata.
Uma tabela está na 3ª Forma Normal se estiver na 2ª Forma Normal e não houver
dependência transitiva entre atributos não chave.
A Álgebra Relacional
É uma coleção de operações canônicas que são utilizadas para manipular as relações,
utilizadas para selecionar tuplas de relações individuais e para combinar tuplas relacionadas
de relações diferentes para especificar uma consulta em um determinado banco de dados. O
resultado de cada operação é uma nova operação, a qual também pode ser manipulada pela
álgebra relacional. Todos os exemplos envolvendo álgebra relacional implicam na utilização
do banco de dados descrito no apêndice A.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
125
A Operação Select: é utilizada para selecionar um subconjunto de tuplas de uma relação que
devem satisfazer uma condição de seleção. A forma geral de uma operação select é: s
<condição de seleção> (<nome da relação>). A letra grega s é utilizada para representar a
operação de seleção; <condição de seleção> é uma expressão booleana aplicada sobre os
atributos da relação e <nome da relação> é o nome da relação sobre a qual será aplicada a
operação select.
Exemplo:
consulta1 = s salário < 2.500,00 (EMPREGADO)
Gera a seguinte tabela como resultado:
Tabela consulta1
RG
Nome
RG
CIC
Depto.
Ricardo
30303030
33333333
2
10101010
2.300,00
Renato
50505050
55555555
3
20202020
1.300,00
Supervisor
Salário
consulta2 = s (relação = “Filho”) .and. (sexo = “Feminino”) (DEPENDENTES)
Gera a seguinte tabela como resultado:
Tabela consulta2
RG
Nome
Responsável
Dependente
30303030
Andrea
Dt. Nascimento
Relação
Sexo
01/05/90
Filho
Feminino
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
126
As operações relacionais que podem ser aplicadas na operação select são < , > ,
, ³ , =, ¹ ,
além dos operadores booleanos: and , or , not
A operação select é unária, ou seja, só pode ser aplicada a uma única relação. Não é
possível aplicar a operação sobre tuplas de relações distintas.
A Operação Project: seleciona um conjunto determinado de colunas de uma relação. Tem a
forma geral: p <lista de atributos> (<nome da relação>). A letra grega p representa a
operação Project, <lista de atributos> representa a lista de atributos que o usuário deseja
selecionar e <nome da relação> representa a relação sobre a qual a operação Project será
aplicada.
Exemplo:
consulta3 = p Nome, Dt. Nascimento (DEPENDENTES)
Gera a seguinte tabela como resultado:
Tabela consulta3
Nome Dependente
Dt. Nascimento
Jorge
27/12/86
Luiz
18/11/79
Fernanda
14/02/69
Ângelo
10/02/95
Andrea
01/05/90
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
127
Seqüencialidade de Operações:
As operações Project e select podem ser utilizadas de forma combinada, permitindo que
apenas determinadas colunas de determinadas tuplas possam ser selecionadas. A forma
geral de uma operação sequencializada é:
p <lista de atributos> ( s <condição de seleção> (<nome da relação>) )
Exemplo:
consulta4 = p nome, depto., salário ( s salário < 2.500,00 (EMPREGADO) )
Produz a tabela a seguir como resultado:
Tabela consulta4
Nome
Depto.
Salário
Ricardo
2
2.300,00
Renato
3
1.300,00
A consulta4 pode ser reescrita da seguinte forma:
consulta5 = s salario < 2.500,00 (EMPREGADO)
Tabela consulta5
RG
Nome
RG
CIC
Depto.
Ricardo
30303030
33333333
2
10101010
2.300,00
Renato
50505050
55555555
3
20202020
1.300,00
Supervisor
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
Salário
128
consulta6 = p nome, depto., salario (CONSULTA5)
Tabela consulta6
Nome
Depto.
Salário
Ricardo
2
2.300,00
Renato
3
1.300,00
Porém é mais elegante utilizar a forma descrita na consulta4.
Conhecendo os Bancos de Dados
http://www.sobresites.com/bancodedados/bancodedados.htm
Antes de dar continuidades aos seus estudos é fundamental que você acesse sua
SALA DE AULA e faça a Atividade 2 no “link” ATIVIDADES.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
129
U
NIDADE
21
Objetivo: Conhecer as Operações Matemáticas e Cartesianas.
OPERAÇÕES MATEMÁTICAS E CARTESIANAS
Operações Matemáticas
Considerando que as relações podem ser tratadas como conjuntos, podemos então aplicar
um conjunto de operações matemáticas sobre as mesmas. Este conjunto de operações não
é unitário, ou seja, podem ser aplicadas sobre mais de uma tabela, porém, existe a
necessidade das tabelas possuírem tuplas exatamente do mesmo tipo.
As operações são:
• União ( ∪ );
• Intersecção ( ∩ );
• Diferença ( − ).
Estas operações podem ser definidas da seguinte forma:
• União: o resultado desta operação representada por R ∪ S é uma relação T que inclui
todas as tuplas que se encontra em R e todas as tuplas que se encontra em S;
• Intersecção: o resultado desta operação representada por R ∩ S é uma relação T que
inclui as tuplas que se encontra em R e em S ao mesmo tempo;
• Diferença: o resultado desta operação representada por R - S é uma relação T que
inclui todas as tuplas que estão em R, mas não estão em S.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
130
Leve em consideração a seguinte consulta: Selecione todos os empregados que trabalham
no departamento número 2 ou que supervisionam empregados que trabalham no
departamento número 2.
Primeiramente
selecionar
todos
os
funcionários
que
trabalham
no
departamento
número 2:
consulta7 = s depto = 2 (EMPREGADOS)
Tabela consulta7
RG
Nome
RG
CIC
Depto.
Fernando
20202020
22222222
2
10101010
2.500,00
Ricardo
30303030
33333333
2
10101010
2.300,00
Jorge
40404040
44444444
2
20202020
4.200,00
Supervisor
Salário
Agora selecionar os supervisores dos empregados que trabalham no departamento número
2:
consulta8 = p rg_supervisor (CONSULTA7)
Tabela consulta8
RG Supervisor
10101010
20202020
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
131
Vamos projetar apenas o rg dos empregados selecionados:
consulta9 = p rg (CONSULTA7)
Tabela consulta9
RG
20202020
30303030
Finalmente, vamos unir as duas tabelas, obtendo o resultado final:
consulta10 = consulta8 ∪ consulta9
Tabela consulta10
RG
20202020
30303030
40404040
10101010
Considere a próxima consulta: Selecione todos os empregados que desenvolvem algum
projeto e que trabalham no departamento número 2:
Primeiramente, selecionar todos os empregados que trabalham em um projeto:
consulta11 = p rg_empregado (EMPREGADO/PROJETO)
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
132
Tabela consulta11
RG_Empregado
20202020
30303030
40404040
50505050
Agora selecionar todos os empregados que trabalham no departamento 2:
consulta12 = p rg ( s depto = 2 (EMPREGADOS) )
Tabela consulta12
RG
20202020
30303030
40404040
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
133
Obtemos então todos os empregados que trabalham no departamento 2 e que desenvolvem
algum projeto:
consulta13 = consulta11 ∩ consulta12
Tabela consulta13
RG
20202020
30303030
40404040
Considere a seguinte consulta: Selecione todos os usuários que não desenvolvem projetos:
consulta14 = p rg_empregado (EMPREGADO/PROJETO)
Tabela consulta14
RG Empregado
20202020
30303030
40404040
50505050
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
134
consulta15 = p rg (EMPREGADOS)
Tabela consulta15
RG
10101010
20202020
30303030
40404040
50505050
consulta16 = CONSULTA15 - CONSULTA14
Tabela consulta16
RG
10101010
Produto Cartesiano
É uma operação binária que combina todas as tuplas de duas tabelas. Diferente da operação
união, o produto cartesiano não exige que as tuplas das tabelas possuam exatamente o
mesmo tipo. O produto cartesiano permite então a consulta entre tabelas relacionadas
utilizando uma condição de seleção apropriada. Seu resultado é uma nova tabela formada
pela combinação das tuplas das tabelas sobre as quais se aplicou a operação.
O formato geral do produto cartesiano entre duas tabelas R e S é R Χ S
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
135
Considere a seguinte consulta: Encontre todos os funcionários que desenvolvem projetos em
Campinas:
consulta16 = EMPREGADO/PROJETO C PROJETO
Tabela consulta16
RG
Número
Empregado
Projeto
20202020
Nome
Número
Localização
5
Financeiro 1
5
São Paulo
20202020
5
Motor 3
10
Rio Claro
20202020
5
Prédio Central
20
Campinas
20202020
10
Financeiro 1
5
São Paulo
20202020
10
Motor 3
10
Rio Claro
20202020
10
Prédio Central
20
Campinas
30303030
5
Financeiro 1
5
São Paulo
30303030
5
Motor 3
10
Rio Claro
30303030
5
Prédio Central
20
Campinas
40404040
20
Financeiro 1
5
São Paulo
40404040
20
Motor 3
10
Rio Claro
40404040
20
Prédio Central
20
Campinas
50505050
20
Financeiro 1
5
São Paulo
50505050
20
Motor 3
10
Rio Claro
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
136
50505050
20
Prédio Central
20
Campinas
Agora vamos selecionar as tuplas resultantes que estão devidamente relacionadas que são
as que possuem o mesmo valor em número do projeto e número e cuja localização seja
‘Campinas':
consulta17 = p rg_empregado, número ( s (número_projeto = número) .and.
(localização = ‘Campinas') (CONSULTA16) )
Tabela consulta17
RG
Número
40404040
20
50505050
20
A operação produto cartesiano não é muito utilizada por não oferecer um resultado
otimizado. Veja o item seguinte:
Operação Junção: atua de forma similar á operação produto cartesiano, porém, a tabela
resultante conterá apenas as combinações das tuplas que se relacionam de acordo com uma
determinada condição de junção. A forma geral da operação junção entre duas tabelas R e S
é a seguinte:
Operação Junção
R <condição de junção> S
Considere a consulta a seguir: Encontre todos os funcionários que desenvolvem projetos em
Campinas:
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
137
consulta18
=
EMPREGADOS/PROJETOS
número_projeto
=
número
PROJETOS
Tabela consulta18
RG_Empregado Número_Projeto
Nome
Número
Localização
20202020
5
Financeiro 1
5
São Paulo
20202020
10
Motor 3
10
Rio Claro
30303030
5
Financeiro 1
5
São Paulo
40404040
20
Prédio Central
20
Campinas
50505050
20
Prédio Central
20
Campinas
consulta19 = s localização = ‘Campinas' (CONSULTA18)
Tabela consulta18
RG_Empregado Número_Projeto
Nome
Número
Localização
40404040
20
Prédio Central
20
Campinas
50505050
20
Prédio Central
20
Campinas
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
138
U
NIDADE
22
Objetivo: Conhecer Estruturas de Dados dinâmicas.
ÁRVORES
São estruturas de dados essencialmente dinâmicas, permitindo a inserção, pesquisa e
destruição de elementos. Trazem, implicitamente, a idéia de hierarquia, por isso são
estruturas de dados muito utilizadas em gerenciamento de arquivos e validação de
expressões. Uma árvore pode ser definida de várias formas. Talvez, a maneira mais natural
é defini-las recursivamente. Assim, uma árvore é composta por um conjunto de nós. Existe
um nó denominado raiz, que contém zero ou mais sub-árvores e cada sub-árvore pode ser
considerada uma árvore.
DESENHO ÁRVORE GENÉRICA (listas de filhos):
• Estrutura do nó (com grau pré-definido e com grau indeterminado)
• Nomenclatura:
• Raiz - é o nó de mais alto nível da árvore (primeiro nó da árvore).
• Nível - o número de nós que vai da raiz até um determinado nó.
• Grau - o número de sub-árvores de um nó
• Folha - nó com grau igual a zero
• Altura - nível mais alto da árvore
• Pai - a raiz de uma sub-árvore é pai das raízes de suas sub-árvores
• Filho - os nós raízes de uma sub-arvores é filho da raiz da árvore
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
139
• Irmão - nós raízes das sub-árvores são irmãos.
raiz ={c}
ancestrais de j={e,c}
descendentes de j={i,k}
pai de j=e
filhos de j={i,k}
nível de j=2
altura da árvore =3
folhas={b,i,k,f,h,d}
irmãos={j,f,g}
Árvores Binárias: são árvores onde cada nó tem no máximo dois filhos (grau máximo 2). Com
isto, obtém-se uma estrutura apropriada para busca binária. Outra área onde estas estruturas
são muito utilizadas é na validação de expressões. Isto porque um operador relaciona
apenas um ou dois operandos. Uma propriedade importante de árvores binárias é que
possuem profundidade (altura) bastante inferior ao número de nós (comentar inserção em
ordem).
Aplicação:
A aplicação mais importante das árvores binárias é seu uso em busca binária. A cada nó da
árvore associa-se uma chave que permite a realização de uma ordenação. A Construção da
árvore deve ser de tal forma que na sub-árvore à esquerda de uma dada raiz só existam nós
com chaves menores que a chave da raiz. E a sub-árvore à direita só pode conter nós com
chaves maiores que a da raiz. Com esta estruturação, a busca de um determinado nó na
árvore torna-se trivial, através do uso da recursidade.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
140
Operações
Básicas
(Inclusão,
Pesquisa,
Alteração,
Exclusão,
transformação
e
Caminhamentos):
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
141
• Alteração: efetua-se uma pesquisa e em seguida faz-se a alteração.
• Exclusão: para a remoção de um nó de uma árvore deve-se levar em consideração
que seus filhos devem continuar na árvore e esta deverá continuar ordenada (menor a
esquerda maior a direita). E então caímos em três possibilidades que devem ser
tratadas separadamente, a fim de manter a estrutura da árvore binária.
1. Quando o nó a ser excluído não contenha filhos;
2. Quando o nó a ser excluído contenha somente um dos filhos;
3. Quando o nó a ser excluído contenha os dois filhos.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
142
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
143
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
144
U
NIDADE
23
Objetivo: Conhecer as necessidades de infra-estrutura de segurança, estudos de risco;
Como pesquisar soluções para comércio eletrônico.
SEGURANÇA DE INFORMAÇÕES
A segurança de informações são utilizadas como meios de comunicação (usando em
universidades e por empregados em algumas empresas para compartilhar). Agora, milhões
de corporações, empresas, instituições e usuários domésticos estão usando a Internet para
fazer transações bancárias, comércio eletrônico, etc. Portanto, segurança hoje, é um
problema potencialmente crítico.
Iremos discutir segurança de redes de vários ângulos diferentes, falaremos sobre ameaças,
contramedidas, ferramentas, algoritmos, protocolos e gerência de segurança, a fim de tornar
os sistemas e a redes mais seguras. Primeiramente, é necessário aprender os termos
utilizados na área de segurança de redes e sistemas. Muitas, senão todas, as palavras
definidas (Glossário) serão utilizadas no decorrer deste capítulo.
Necessidade de uma infra-estrutura de segurança
Vulnerabilidades e ataques existem e crescem a cada dia, tanto em quantidade quanto em
qualidade. Uma infra-estrutura de segurança não é só necessária como obrigatória, devendo
existir, além de um investimento específico, um planejamento, uma gerência e uma
metodologia bem definida.
Salienta-se que os seres humanos são o elo mais fraco dessa corrente. Você pode ter os
mais perfeitos produtos de segurança, mas eles não serão nada se você não tiver
consciência que eles serão gerenciados e utilizados por pessoas, isto nos faz refletir sobre a
necessidade de uma infra-estrutura de segurança e forma de como montá-la. A modelagem
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
145
de ameaça é a primeira etapa em qualquer solução de segurança. Quais são as ameaças
reais contra o sistema? Se você não souber disso, como saberá quais tipos de
contramedidas irá empregar? A modelagem de ameaça é algo difícil de ser feito, ela envolve
pensar sobre um sistema e imaginar o vasto panorama de vulnerabilidade.
Avaliação de Risco
Não é suficiente apenas listar um punhado de ameaças, você precisa saber o quanto deve
se preocupar com cada uma delas. Ao projetar um sistema de segurança, é vital fazer esse
tipo de modelagem de ameaça e avaliação de risco. Muitos projetistas de sistemas pensam
no projeto de segurança como um livro de receitas: misture contramedidas específicas –
criptografia e firewalls são bons exemplos – e magicamente você estará seguro, isso nunca
Inicialmente,
conheceremos
as vulnerabilidades e
depois nossos
inimigos, então
conheceremos as ferramentas de defesa e as tecnologias, depois disso sim, teremos uma
noção bem melhor de como devemos nos proteger e elaborar um projeto de segurança.
Alguns conceitos serão definidos, são pilares de um sistema seguro, sendo que alguns estão
intimamente ligados ao estudo da criptografia, arte de guardar mensagens seguras, ou
transmiti-las de forma segura, garantindo a privacidade e trazendo outros benefícios à
segurança, tais como:
• Integridade: possibilita ao receptor de uma mensagem verificar se esta foi alterada
durante o trânsito;
• Autenticação: possibilita ao receptor de uma mensagem, verificar corretamente sua
origem, um intruso não pode se fazer passar (personificar) o remetente desta
mensagem;
• Não-repúdio ou irrevogabilidade: o remetente de uma mensagem não deve ser capaz
de negar que enviou a mensagem.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
146
A disponibilidade se refere ao sistema estar sempre pronto a responder requisições de
usuários legítimos, isto envolve o uso de sistemas redundantes, no-breaks e mecanismos
contra ataques de Denial of Service.
Oportunidades e Riscos: Vulnerabilidades
Oportunidades não faltam na vasta gama de serviços disponíveis hoje na Internet,
começando pelo número de usuários que temos na Internet, o qual é praticamente
impossível de se mensurar, e ainda pelo fato dela ser a maior compradora e vendedora do
mundo. Ela também tem o potencial para ser a maior projetista, a maior desenvolvedora, a
maior fabricante e a maior distribuidora.
Algumas vulnerabilidades são semelhantes ao mundo não virtual (fora da Internet):
pornografia, jogos de azar, falta de privacidade e assédio sexual, são apenas algumas. As
ameaças específicas da Internet seriam os vírus, worms, trojans e o hacker de computador.
Sem dúvida o tipo de ameaça mais comentada é o hacker de computador. Não só pelo
caráter interessante do fato, mas também pela quantidade de problemas que um hacker mal
intencionado (cracker) pode causar. Os pontos vulneráveis decorrem de fatores mais
técnicos que dependendo do caso podem ser extremamente complexos. Os hackers
conhecem estes fatores e sua complexidade, nós, que desejamos proteger nossas redes
também temos que conhecer tanto quanto eles, e por isso, temos que entender as
vulnerabilidades do ponto de vista técnico.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
147
Dentre as coisas terríveis que podem acontecer podemos apontar:
• Suas senhas poderão ser roubadas e sua conta modificada;
• Suas linhas de comunicação podem ser grampeadas e informações secretas de sua
empresa poderão ser comprometidas;
• Sua rede poderá ser inundada de informações e entrar em colapso;
• Sua propriedade intelectual poderá se roubada;
• Você poderá estar violando controles de exportação de tecnologia;
• Seus funcionários poderão ser pegos transportando pornografia;
• Suas finanças poderão ser alteradas;
• Pode haver falsificação de dinheiro;
• Alguém poderá se passar por você e efetuar transações financeiras em seu nome.
Quando uma vulnerabilidade é divulgada, isto é, alguém a descobriu e a divulgou, o
descobridor irá pertencer a um destes três grupos:
• Hackers;
• Crackers;
• Fabricantes de software ou hardware.
Como estar informado tecnicamente sobre as vulnerabilidades? Esta é uma pergunta muito
fácil de responder: pela própria Internet. Assine listas de discussão específicas e visite sites
de segurança todos os dias: BUGTRAQ (pertence à SecurityFocus) e BOS-BR (Brasileira
pertence à Securenet).
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
148
Alguns sites:
• http://www.securityfocus.com
• http://packetstorm.securify.com
• http://ciac.llnl.gov
• http://www.lockabit.coppe.ufrj.br
• http://www.securenet.com.br
É importante verificar também continuamente os sites dos fabricantes dos softwares que sua
empresa utiliza, normalmente eles possuem uma seção dedicada à segurança.
Comércio Eletrônico
O comércio eletrônico, a compra e venda de mercadorias e serviços através de um meio
eletrônico, esta será uma das mais importantes maneiras de se fazer negócio no futuro. Nos
últimos tempos, porém, o progresso tem sido mais lento devido a falta de mecanismos
seguros para efetuar pagamentos eletronicamente na Internet. Mesmo com tecnologias já
amadurecidas, ainda temos problemas com o fator humano que nega a confiar em tais
tecnologias. As pessoas acham, às vezes erroneamente, que estão mais seguras usando o
cartão de crédito numa loja onde o atendente leva seu cartão e volta minutos depois do que
na Internet.
Como pesquisar soluções para comércio eletrônico? Enquanto estiver analisando protocolos
e tecnologias de pagamento, é essencial manter-se atualizado, recorra à própria Internet
para obter as informações mais recentes. Também recomendamos que sua empresa ou
organização faça parte de grupos de trabalho para padronização de tecnologias. Se a
participação direta não for possível, pelo menos se mantenha a par dos novos
desenvolvimentos. A maioria destes grupos possui sites e/ou grupos de discussão dos quais
você pode participar.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
149
• ETF (Internet Engineering Task Force)
• Comitês ANSI do NIST
• W3C (World Wide Web Consortium)
• CommerceNet
• FSTC (Financial Services Technology Consortium)
• Smart Card Forum
Introdução a Banco de dados - Modelo Relacional
http://www.cos.ufrj.br/~marta/BdRel.pdf
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
150
U
NIDADE
24
Objetivo: Conhecendo o inimigo em Segurança de acesso e de dados
O INIMIGO
Conhecendo o inimigo
Muitos problemas de segurança são causados por pessoas maliciosas tentando ganhar
algum tipo de benefício, seja ele monetário, político, intelectual, etc.
Considere a seguinte tabela que mostra alguns adversários que um profissional em
segurança terá que enfrentar:
Adversários
Objetivos
Estudante
Divertir-se vasculhando E-mails, roubando senhas, etc..
Hacker Cracker
Testar a segurança de sistemas, roubar informações.
Homens de Negócios
Descobrir planos e estratégias de Marketing do concorrente.
Ex. Empregados
Vingar-se por ter sido despedido.
Espião
Conhecer a tecnologia do inimigo.
Terrorista
Roubar e utilizar segredos políticos.
Outro problema grave é a quantidade de informações existente na Internet hoje abordando
falhas de segurança e técnicas de invasão. Muitos manuais e ferramentas estão disponíveis,
distribuídas por grupos de hackers e até por organizações dedicadas a segurança.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
151
Alguns sites de grupos de hackers:
• http://www.ussrback.org
• http://www.destroy.net
• http://www.insecure.org
• http://www.hackershomepage.com
• http://www.hackerslab.com
• http://packetstorm.securify.com
• http://www.rootshell.com
• http://www.securityportal.com
• http://www.technotronic.com
• http://unsekurity.virtualave.net
• http://www.phrack.com
• http://www.bufferoverflow.org
Segurança de acesso e de dados
Distinguir estes dois tipos de segurança é muito importante. Temos que ter em mente que
um hacker mal intencionado irá descobrir falhas ou usar de qualquer artifício para conseguir
quebrar um ou o outro tipo, e ele quebrar uma das duas, conseqüentemente quebrará as
duas! É necessário “trancar” bem a periferia de sua rede ou sistema, mas para fazer você
tem que conhecê-la bem, saber que tipos de dados trafegam.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
152
Lembre-se que você nunca estará 100% seguro (e isso é verdade):
Em aprender a pensar como um hacker em usar criptografia;
Em usar senhas fortes e jamais informar uma senha ou detalhes do seu sistema;
Em desconfiar de tudo (e de todos).
Ferramentas de segurança: um dos itens mais importantes está às ferramentas, mas não são
as únicas necessárias.
Itens importantes para a segurança:
• Investimento;
• Plano de Segurança;
• Pessoal qualificado;
• Interação na organização e entre fornecedor e cliente;
• Ferramentas de segurança.
Ameaças: problemas mais comuns:
Má configuração dos hosts: a má configuração pode ocorrer devido aos problemas em
especial:
Configuração default do sistema deixa muito a desejar em segurança;
Instalação de um sistema sem um mínimo de preocupação com a instalação default:
Daemons do UNIX, Registros do NT;
Instalação e/ou habilitação de serviços de forma indiscriminada.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
153
Falhas inerentes dos sistemas: a culpa sempre é colocada sempre nos fabricantes, por que
seus sistemas possuem vulnerabilidade e falhas, quando não deveriam ter. Bugs são
naturais em softwares Os bugs, falhas, e vulnerabilidades sempre irão existir, então, cabe a
nós, nos manter atualizados quanto ao lançamento de correções, patches, updates, etc.
Deficiência na reposta dos fabricantes: é um problema causado pelo fabricante, quando este
deixa de manter um controle de qualidade de seu software, e o que é pior, não alerta os
usuários e nem lança correções para tais problemas. Portanto, antes de adquirir um
software, verifique, além de sua funcionalidade, se existe uma área de suporte ativa que
cuide das atualizações e tenha preocupação com a segurança do produto.
Pobre educação em segurança: um dos primeiros problemas que devem ser atacados na
implementação de um plano de segurança. Nada adianta termos os melhores profissionais
na administração, os melhores produtos, se nossos funcionários não estão cientes da real
necessidade de segurança, e como se deve proceder. Não que seja necessário deixar para
não cometer erros que possam comprometer a segurança de todo o sistema.
Script Kiddies: Eles não procuram pela maneira mais fácil possível. Fazem isto utilizando um
pequeno número de portas, então eles procuram pela Internet inteira, até que conseguem
máquina que seja vulnerável (cedo ou tarde isto certamente acontecerá), deixam para trás as
sofisticadas. Alguns não têm a mínima idéia do que está fazendo. Uma maneira de você se
proteger é executar somente os serviços que são necessários. Se você não precisa de um
serviço, desligue-o. Se você precisa do serviço, verifique se você possui a última versão ou
se você tem todos os patches/fixes instalados.
Os servidores DNS são muito usados para construir bases de dados dos sistemas que
podem ser testados/escaneados. Limite os sistemas que podem fazer a transferência de
zona dos seus Servidores de DNS. É altamente recomendado atualizar para a última versão
do BIND, que você pode encontrar em http://www.isc.org/bind.html. E por último, observe se
os seus sistemas sofrem ataques de scanning.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
154
O script kiddie é uma ameaça a todos os sistemas, eles não têm nenhum preconceito,
escaneiam qualquer sistema, em qualquer lugar do mundo, independente do valor do
sistema. Cedo ou tarde seu sistema será testado/escaneado.
Algoritmos e Estrutura de Dados
http://www.eduardostefani.eti.br/bennett/algoritmos2/algoritmos-estrutura-dados.pdf
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
155
U
NIDADE
25
Objetivo: Conhecer a Engenharia Social.
ENGENHARIA SOCIAL
Os Administradores de Sistemas e Analistas de Segurança têm a tarefa de garantir que a
rede e os sistemas estejam disponíveis, operacionais e íntegros, utilizando as últimas
ferramentas e tecnologias disponíveis para atingir esses objetivos. Infelizmente não importa
quanto dinheiro em equipamentos ou programas forem investidos na segurança, sempre
haverá um elemento desprezado: o elemento humano. Muitos atacantes com conhecimentos
medíocres de programação podem vencer ou ultrapassar a maioria das defesas utilizando
uma técnica designada como Engenharia Social.
Na segurança da informação a Engenharia Social é a aquisição de alguma informação ou
privilégios de acesso inapropriado por alguém do lado de fora, baseado na construção de
relações de confiança inapropriadas com as pessoas de dentro de uma organização. Ou
seja, é a arte de manipular pessoas a fazer ações que elas normalmente não fazem. O
objetivo da Engenharia Social, como técnica de ataque à segurança, é enganar alguma
pessoa para que ela diretamente forneça informações, ou facilite o acesso a essas
informações. Essa técnica é baseada nas qualidades da natureza humana, como a vontade
de ajudar, a tendência em confiar nas pessoas e o medo de “se meter em problemas”. O
resultado de uma ação de Engenharia Social bem sucedida é o fornecimento de informações
ou acesso a invasores sem deixar nenhuma suspeita do que eles estão fazendo.
A Engenharia Social é um problema sério. Uma organização deve pregar uma política que
possa protegê-la contra essa ameaça, sendo que essa política deve ser repassada para toda
a organização. Não adianta implementar as mais modernas ferramentas de segurança se os
funcionários fornecem “a chave da porta” para todos que pedirem.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
156
Existe algum método mais rápido e eficiente de se descobrir uma senha?
Que tal simplesmente perguntar? Por mais extraordinário que possa parecer, o método mais
simples, mais usado e talvez mais eficiente de se recolher informações é simplesmente
chegar e perguntar. Você também poderia subornar, mas dependendo da situação, isto pode
lhe custar muito caro, então por que não tentar enganar e obter tais informações? De fato,
este método é bastante utilizado, e existem hackers que sabem usá-lo com grande destreza,
como o famoso hacker Kevin Mitnick que era um expert em fazer tais “vigarices”.
Esta é arte de fazer com que outras pessoas concordem com você e atendam aos seus
pedidos ou desejos, mesmo que você não tenha autoridade para tal. Pode-se dizer que
engenharia social é simplesmente a arte de se contar uma mentira bastante convincente.
Dentro da área de segurança podemos definir engenharia social como a aquisição de
informações preciosas ou privilégios de acesso por “alguém de fora”, baseado em uma
relação de confiança estabelecida, inapropriadamente, com “alguém de dentro”. Profissionais
utilizam este tipo de aproximação para adquirir informações confidenciais, como
organogramas de organizações, números de cartões de crédito e telefone, senhas de
acesso, diagrama da rede, etc. com o objetivo de avaliar as vulnerabilidades de uma
organização para futuros ataques. Geralmente este tipo de aproximação envolve muito mais
do que simples raciocínio rápido e uma variedade de frases na ponta da língua. Engenharia
social pode envolver muito trabalho de aquisição de informação antes de uma real ação de
qualquer tipo.
Para se iniciar um ataque, a maior parte do trabalho está na preparação, muito mais que no
próprio ataque. Dizem que o único computador totalmente seguro é aquele desligado da
tomada. A arte da engenharia social concentra-se no elo mais fraco da corrente da
segurança de computadores: os seres humanos. O simples fato de que se pode facilmente
convencer uma pessoa a ligar o computador, torna vulnerável, até mesmo, os computadores
desligados.
Na medida em que a parte humana de um sistema de segurança é a mais essencial, não
existe computador na face da Terra que não necessite de seres humanos. Isso significa que
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
157
essa é uma fraqueza universal, independente de plataforma, software, tipo de conexão de
rede ou idade do equipamento. Qualquer pessoa com acesso a qualquer parte do sistema,
física ou remota, pode ser uma falha de segurança em potencial. Qualquer informação
adquirida pode ser utilizada para outro ataque de engenharia social. Isso significa que
qualquer pessoa, mesmo que não seja considerada integrante da política de segurança pode
servir como uma porta de entrada.
O primeiro método é também o mais óbvio. Um pedido simples e direto, onde se solicita ao
indivíduo alvo que se execute uma determinada tarefa. Embora este método seja o menos
provável a trazer um resultado positivo, é com certeza o mais simples, onde o indivíduo sabe
exatamente o que você quer que ele faça. O segundo é criar uma situação onde o indivíduo
é apenas uma parte dela. Com muito mais fatores que um simples pedido, o indivíduo
preocupado estará bem mais predisposto a ser persuadido. Isso não significa que as
situações propostas devam ser fictícias. Quanto menos você faltar com a verdade melhor.
Isso requer muito mais trabalho por parte de quem faz o ataque e com certeza envolve um
recolhimento de informação e conhecimento prévio do alvo.
Se a situação proposta, real ou imaginária possuir certas características, o indivíduo alvo
estará mais propenso a concordar com o seu pedido.
Estas características incluem:
• Difusão da responsabilidade: fazer com que o alvo acredite que ele não é o único
responsável por suas ações e pelas informações que ele possa divulgar.
• Manter a responsabilidade: longe do alvo.
• Troca de favores: permitir que o alvo acredite que esta prestando um favor a você e
que você é extremamente grato. As pessoas geralmente mostram-se mais dispostas a
cooperar quando acreditam que poderão obter alguma vantagem no futuro, como se
você ou o chefe ficassem devendo um favor.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
158
• Dever moral: é quando o alvo coopera, pois acha que é a coisa certa a fazer. É seu
dever moral. Parte disso é culpa. As pessoas procuram evitar o sentimento de culpa e
farão o possível para evitar esse sentimento.
• Escolha: procure escolher seu alvo levando em consideração seu envolvimento, sua
experiência e tempo de trabalho junto ao sistema alvo. Alunos, estagiários, secretárias
e profissionais iniciantes mostram-se sempre mais dispostos a cooperar. Isto se deve
ao fato de que estes indivíduos possuem ainda pouco conhecimento e pouca
experiência a respeito do sistema alvo e desejam mostrarem-se úteis. Eles querem
“mostrar serviço”.
Quanto menos conflito com o alvo melhor. É muito mais fácil ganhar a confiança do alvo
sendo gentil. Utilizar um tom de voz calmo e ser gentil é um bom começo para que o alvo
coopere.
Como um ataque de engenharia social pode revelar muitas informações, como se pode
tornar um sistema de computadores mais seguro?
Educação e difusão da informação, explicando aos empregados e pessoas ligadas direta ou
indiretamente ao sistema a importância de uma política de segurança, evitando assim o
ataque de pessoas que poderão tentar manipulá-los para ganhar acesso a informações
privadas. Isto já é um excelente começo para tornar segura sua rede ou sistema.
O que é PhishTank?
PhishTank é um centro de limpeza colaborativo para dados e informação sobre
phishing no Internet. Também, PhishTank fornece um API aberto para
colaboradores e investigadores para integrar dados anti-phishing em suas
aplicações sem nenhum custo.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
159
U
NIDADE
26
Objetivo: Conhecer as pragas virtuais.
VÍRUS, WORMS E TROJANS
Vírus, Worms e Trojans
Batizadas genericamente de Malware, as pragas virtuais têm ganhado terreno nos últimos
anos no que diz respeito aos prejuízos encarados por empresas.
Como se defender com eficiência contra as pragas? Pergunta freqüente na mente de
administradores, gestores de segurança e empresários, cada vez mais preocupados com as
perdas que enfrentam ao ingressar nesse admirável mundo novo chamado Internet. Se
houvesse apenas uma resposta para essa dúvida, de como aproveitar todos os recursos
trazidos pela rede sem sofrer com os riscos, estariam todos satisfeitos. Infelizmente, a
experiência mostra que lidar com ameaças virtuais exige uma série de cuidados que não se
restringe ao uso de antivírus.
Anualmente, os vírus causam muitos prejuízos ao redor do mundo. A Internet é o meio ideal
para transmissão destas “pestes virtuais”. Na década de oitenta, transmitir um vírus tinha
poucos recursos, sendo transmitido de máquina em máquina através de disquetes, o que
tornava a contaminação bastante lenta. Atualmente as coisas são bem diferentes, através da
Internet a contaminação é muito mais rápida e atinge facilmente nível mundial. Além disso,
surgiram conceitos novos como vírus de macro, worms e trojans.
Abordaremos os vírus e suas variantes no ambiente Windows. Existem vírus nos ambiente
UNIX, mas a proporção é infinitamente menor. Além disso, os conceitos abordados aqui se
aplicam em ambos os casos. A seguir, um pequeno esclarecimento sobre as diferenças entre
os vários invasores que podem vir a nos incomodar:
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
160
Vírus: são programas espúrios inseridos em computadores contra vontade do usuário e
desempenham funções indesejadas. Alguns vírus têm a capacidade de se reproduzir e
infectar outros dispositivos por toda a rede. Já outros não se reproduzem, mas são
distribuídos em falsos programas na rede ou em CDs vendidos em publicações.
Suponha que um vírus contamine o COMMAND.COM, arquivo executável carregado pelo
computador toda vez que se liga o micro. Desta forma, o programador que fez o vírus sabe
que sua “criatura” sempre vai ser carregada na memória. Já se fosse um arquivo de dados
como, por exemplo, MYFILE.TXT, nada aconteceria, pois o micro em princípio não executa
arquivos com extensão TXT.
Alguns vírus:
TROJAN (Cavalos de Tróia): nome foi baseado na clássica peça da mitologia grega onde os
soldados do país conseguem se infiltrar na cidade de Tróia escondidos dentro de um imenso
cavalo de madeira. Os Cavalos-de-tróia são programas projetados para assumir controle de
um servidor ou estação de trabalho de maneira furtiva, sem que o administrador de rede ou
usuário se dê conta.
Para que o invasor descubra quem possui a parte servidor do software ele faz uma varredura
de endereços na Internet. Quem estiver infectado pelo cavalo-de-tróia responderá à
varredura.
Os Trojans são códigos maliciosos, geralmente camuflados como programas inofensivos
que, uma vez instalados no computador da vítima, podem permitir que o criador da praga
obtenha o controle completo sobre a máquina infectada, que passa a ser chamada de
“zumbi”. Os programas para ataques Denial-of-Service (DoS) geralmente são Trojans.
Alguns tipos de Trojans conhecidos, como o BO e o Netbus, permitem acesso ao
computador, deixando vulneráveis arquivos do sistema e senhas gravadas no disco e na
memória. Neste caso, um usuário de Internet banking infectado pela praga pode estar
fornecendo sem saber o passaporte para a sua conta corrente.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
161
Para evitar a infecção por cavalos-de-tróia, muitos sites visados pelos invasores
disponibilizam arquivos para download com esquemas de verificação de integridade como
verificação de soma, PGP, entre outros.
Vírus de Macro: Macro é uma VBA – Visual Basic Application (linguagem script desenvolvida
pela Microsoft), que é interpretada pelo MS OFFICE (Word, Excel, Access, Power Point), ou
seja, podemos fazer pequenos programas que nos ajudem a trabalhar no Office. Como por
exemplo, criar um botão na barra de ferramentas do Word que permita abrir diretamente a
calculadora do Windows. No entanto, nas mãos erradas, se torna uma arma poderosa capaz
de causar muitos prejuízos. Um Vírus de Macro é um programa escrito em VBA. No
momento que abrimos um documento do Word contaminado, este macro é ativado, podendo
apagar documentos importantes.
Worms: são trojans ou vírus que fazem cópias do seu próprio código e as enviam para outros
computadores, seja por e-mail ou via programas de bate-papo, dentre outras formas de
propagação pela rede. Tem se tornado cada vez mais comuns e perigosos porque o seu
poder de propagação é muito grande.
Do lado dos servidores, os worms mais recentes exploram vulnerabilidades dos serviços ou
programas instalados no servidor para se infiltrar e fornecer acesso ao atacante. Além disso,
uma vez instalados eles começam a procurar novos endereços vulneráveis para atacar. Já
do lado das estações, os worms mais comuns exploram vulnerabilidades dos programas de
recebimento de e-mail para se infiltrarem e se propagarem para todos os endereços
cadastrados no cliente de e-mail, além de se anexarem automaticamente em todas as
mensagens enviadas.
Os worms são uma das pragas mais perigosas atualmente, se unem ao conceito de vírus e
trojan utilizando a Internet para se propagarem automaticamente.
Port Scanning: é o processo de verificação de quais serviços estão ativos em um
determinado host, podendo verificar redes inteiras, apontando quais hosts estão ativos e
quais são os seus serviços de rede em funcionamento. Além disso, as ferramentas mais
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
162
modernas inclusive podem informar qual é o sistema operacional do host verificado. Hosts
podem ser considerados como estações, servidores ou equipamentos ligados em rede.
Geralmente essa a primeira técnica utilizada por hackers para se obter informações sobre o
seu alvo. Sabendo quais são os serviços disponíveis e qual o sistema operacional, eles
podem buscar por vulnerabilidades nesses sistemas. Para realizar um trabalho obscuro,
muitas das ferramentas de Port Scanning utilizam técnicas como Spoofing para ocultar
origem da sua ação, e possuem um tipo de scanning chamado “Stealth”, que dificilmente
pode ser detectado. A técnica de Port Scanning também pode ser utilizada pelos
administradores de sistemas para realizar uma auditoria nos serviços ativos da rede. Dessa
maneira, pode-se identificar e eliminar quaisquer serviços que estejam rodando sem
necessidade, auxiliando na manutenção da segurança.
O Port Scanning é muito útil, tanto para os administradores de sistemas quanto para os
Hackers. Atualmente, existem ferramentas que podem identificar e reagir contra essa
técnica, devendo ser utilizadas com precaução, pois os invasores podem estar utilizando
endereços falsos. Assim, uma reação poderia estar sendo realizada contra o host errado.
Antivírus: os vírus formam uma grande indústria de antivírus, que agem de forma
semelhante. Existem dois métodos básicos usados para combater vírus. O primeiro consiste
em manter nos antivírus de dados onde ficam registradas todas as assinaturas (parte do
vírus que o caracteriza) de vírus conhecidos. Daí a importância de manter seu antivírus
atualizado, pois a cada dia surgem centenas de novos vírus. Assim, quando scaneamos o
sistema, na verdade o que estamos fazendo é comparar cada arquivo nosso com a
assinatura dos vírus registrados. A segunda forma de proteção é conhecida como
inoculação, que nada mais é que a criação de um banco de dados contendo as principais
informações (tamanho, data de criação e data da ultima alteração) sobre os arquivos
inoculados. Assim, cada vez que scaneamos o sistema o programa antivírus compara as
informações do banco de dados criado com as que estão no disco. Se houver alguma
diferença é emitido um alerta. Mas não é qualquer arquivo que deve ser inoculado, uma vez
que arquivos de dados sempre são alterados. Os arquivos executáveis, DLLs e arquivos de
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
163
sistema são exemplos de arquivos que devem ser inoculados, pois são as principais vítimas
de vírus e não mudam seu conteúdo com freqüência.
Portal da Segurança
http://www.jseg.net/cms/index.php?option=com_content&task=view&id=1566&Itemid=
148
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
164
U
NIDADE
27
Objetivo: Conhecer os tipos de Ataques e Medidas de Segurança.
MEDIDAS DE SEGURANÇA
Algumas Medidas de Segurança
Nenhuma empresa está livre de ataques de vírus. Existem algumas medidas que ao menos
podem diminuir o risco de contaminação. Primeiramente é muito importante que haja uma
conscientização por parte dos funcionários sobre as normas de segurança, a fim de evitar
problemas futuros. Nada adianta uma equipe super treinada em segurança se os
funcionários insistirem em baixar arquivos de origem duvidosa na Rede externa, ou inserirem
discos inseguros nos micros.
Um dos pontos mais importante do processo de conscientização dos funcionários é a
questão do e-mail, pois este é o principal “trampolim” dos vírus atualmente.
Medidas simples podem evitar muita dor de cabeça futura:
• Não abrir e-mails de pessoas desconhecidas;
• Não abrir arquivos executáveis anexados a e-mails, mesmo que venham de pessoas
conhecidas;
• Não abrir documentos do Office contendo macros, se abrir, desabilitar os macros;
• Não baixar programas de sites da Internet;
• Não usar disquetes de dentro da empresa em computadores de segurança duvidosa.
Apesar de tudo, o ideal é também ter uma equipe preparada para agir em caso de
contaminação, e que se mantenha atualizada se tratando tratar de contaminações e de
segurança do site em geral.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
165
Algumas atribuições básicas de uma equipe de segurança:
• Manter o antivírus sempre atualizado;
• Fazer backups periódicos;
• Configurar os clientes de e-mail para não interpretarem HTML ou qualquer script;
• Configurar o Office para não executar macros sem permissão;
• Atualizar o Office periodicamente (cada dia que passa descobrem-se novas falhas,
que podem ser exploradas).
Distribute DoS
O DoS tem sido usado por profissionais de segurança como ferramenta para avaliar a
capacidade de sua rede. Por outro lado, do mundo todo têm trazido muitos problemas a
pequenos e até grandes sites, como Yahoo redes. O poder de sobrecarga desses ataques
aumenta quando eles vêm de várias máquinas para um alvo, ou seja, o envio de pacotes
parte de vários pontos.
DDoS – Distributed Denial-of-Services Attacks: ao longo de 1999 e 2000, diversos sites
sobre segurança da informação (como o CERT, SANS e SecurityFocus) começaram a
anunciar uma nova categoria de ataques de rede que acabou se tornando bastante
conhecida: o ataque distribuído. Para iniciar um ataque são utilizados centenas ou até
milhares de computadores desprotegidos e ligados na Internet para lançar coordenadamente
o ataque. A tecnologia distribuída não é completamente nova, no entanto, vem
amadurecendo e se sofisticando de tal forma que até mesmo vândalos curiosos e sem muito
conhecimento técnico podem causar danos sérios.
Os ataques DDoS são resultados de se conjugar dois conceitos: negação de serviço e
intrusão distribuída, e podem ser definidos como ataques DoS diferentes partindo de várias
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
166
origens, disparados simultânea e coordenadamente sobre um ou mais alvos. De uma
maneira simples, são ataques DoS em larga escala.
Os primeiros ataques DDoS documentados surgiram em agosto de 1999 [CERT00:web], no
entanto, esta categoria se firmou como a mais nova ameaça na Internet na semana de 7 a 11
de Fevereiro de 2000, quando vândalos cibernéticos deixaram inoperantes por algumas
horas sites como o Yahoo, EBay, Amazon e CNN. Uma semana depois, teve-se notícia de
ataques DDoS contra sites brasileiros, tais como: UOL, Globo On e IG, causando com isto
uma certa apreensão generalizada.
Para realização de um ataque DDoS são envolvidos os seguintes personagens:
• Atacante: quem efetivamente coordena o ataque.
• Master: máquina que recebe os parâmetros para o ataque e comanda os agentes.
• Agente: máquina que efetivamente concretiza o ataque DoS contra uma ou mais
vítimas, conforme for especificado pelo atacante. Geralmente um grande número de
máquinas que foram invadidas para ser instalado o programa cliente.
• Vítima: alvo do ataque; máquina que é "inundada" por um volume enorme de pacotes,
ocasionando um extremo congestionamento da rede e resultando na paralisação dos
serviços oferecidos por ela.
• Daemon: processo que roda no agente, responsável por receber e executar os
comandos enviados pelo cliente.
• Cliente: aplicação que reside no master e que efetivamente controla os ataques
enviando comandos aos daemons.
Os ataques DDoS amplificam o poder de ação dos ataques DoS utilizando computadores
comprometidos, os agentes, onde os daemons foram instalados indevidamente devido a
vulnerabilidades exploradas pelos atacantes. A partir do momento que o master envia o
comando de início para os agentes, o ataque à vítima se inicia em grande escala. Esse tipo
de ataque mostra como a segurança de qualquer equipamento à Internet é importante,
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
167
qualquer host vulnerável pode ser utilizado como recurso para um ataque. A idéia é instalar
programas para ataque DoS em diferentes hosts. Este computador central, esses Zumbis
começam a enviar o máximo de pacotes ao alvo, sendo que na primeira está o cracker na
última camada as máquinas às quais irão enviar diretamente os pacotes que irão causar o na
vítima.
Antes de existirem ferramentas que automatizassem esse ataque, era necessário usar para
disparar o ataque. Usando telnet ou SSH, o hacker dispararia o comando para causar o na
máquina vítima. Para isso, ele poderia usar, por exemplo, o ping do UNIX nos hosts.
Vulnerabilidades do TCP/IP são a chave para o desenvolvimento de novos programas, cada
vez mais poderosos nesses ataques. Uma delas é o Stream Attack, descoberta por Tim
Yardley. Esta categoria de ataque funciona da seguinte maneira: na conexão, pacotes são
enviados com os indicadores (flags) ACK e SYN ligados ou apenas o ACK ligado. Devido a
estes flags não fazerem parte de uma primeira etapa da conexão, a máquina alvo ficará
confusa e levará algum tempo para processar tais dados. Imagine então o Stream Attack
partindo de várias hosts (modo distribuído), isto ocasionaria uma sobrecarga utilizando-se um
menor número de hosts (Zumbis) que o DDoS “padrão”.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
168
U
NIDADE
28
Objetivo: Diferenciar os Ataques, Metodologia empregada e técnicas de ataque a senhas.
DoS
Tipos de Ataques de DoS:
Consumo de Largura de Banda: neste tipo de ataque, existem pelo menos duas
possibilidades:
1. O atacante possui uma largura de banda maior que a da vítima, o que facilita a
inundação.
2. O atacante agrega outros computadores para que juntos, disparem o ataque,
amplificando seu efeito e consumindo a largura de banda do computador vítima.
Consumo dos Recursos: a idéia é esgotar os recursos do sistema, tais como memória, CPU,
quotas de disco, etc., o que pode ocasionar travamento dos processos, entupimento de
discos, indisponibilização de recursos.
Ataques a Servidores de Nomes de Domínios (DNS) e a Roteadores: o ataque baseado em
roteamento, o atacante manipula a tabela de roteamento com a finalidade de negar serviço a
quem consultá-la, explorando falhas dos protocolos de roteamento, como o Protocolo de
Informações de Roteamento (RIP) e o Protocolo de Gateway de Fronteira (BGP). Com isso,
o atacante pode direcionar todo tráfego para a máquina dele, ou mesmo para uma rede que
não existe, o que chamamos de buraco negro. Assim como nos ataques baseados em
roteamento, o ataque a DNS permite direcionar o tráfego. Porém, esses ataques, em sua
maioria, consistem em armazenar endereços falsos no cache do servidor da vítima.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
169
Exemplos de Ataques DoS:
Ataque de Senhas: a utilização de senhas seguras é um dos pontos fundamentais para uma
estratégia efetiva de segurança [CLIFF01:web], garantindo que somente as pessoas
autorizadas terão acesso a um sistema ou à rede, o que nem sempre é realidade. As senhas
geralmente são criadas e implementadas pelos próprios usuários que utilizam os sistemas ou
a rede. Palavras, símbolos ou datas fazem com que as senhas tenham algum significado
para os usuários, permitindo que eles possam facilmente lembrá-las. Neste ponto é que
existe o problema, pois muitos usuários priorizam a conveniência ao invés da segurança,
escolhendo senhas relativamente simples. Enquanto isso permite que possam lembrar
facilmente das senhas, também facilita o trabalho de quebra dessas senhas por hackers, e
invasores em potencial estão sempre testando as redes e sistemas em busca de falhas para
entrar. O modo mais notório e fácil a ser explorado é a utilização de senhas inseguras. A
primeira linha de defesa, a utilização de senhas, pode se tornar um dos pontos mais falhos.
Parte da responsabilidade dos administradores de sistemas é garantir que os usuários
estejam cientes da necessidade de utilizar senhas seguras. Isto leva a dois objetivos a serem
alcançados: primeiro, educar os usuários sobre a importância do uso de senhas seguras; e
segundo, implementar medidas que garantam que as senhas escolhidas pelos usuários são
efetivamente adequadas. Para alcançar o primeiro objetivo, a educação do usuário é o ponto
chave. Já para alcançar o segundo objetivo, é necessário que o administrador de sistemas
esteja um passo à frente, descobrindo senhas inseguras antes dos atacantes. Para fazer isso
é necessária a utilização das mesmas ferramentas utilizadas pelos atacantes.
Duas principais técnicas de ataque a senhas [CLIFF01:web]:
Ataque de Dicionário: são utilizadas combinações de palavras, frases, letras, números,
símbolos, ou qualquer outro tipo de combinação geralmente que possa ser utilizada na
criação das senhas pelos usuários. Os programas responsáveis por realizar essa tarefa
trabalham com diversas permutações e combinações sobre essas palavras. Quando alguma
dessas combinações se referir à senha, ela é considerada como quebrada (Cracked).
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
170
Geralmente as senhas estão armazenadas criptografadas utilizando um sistema de
criptografia HASH. Dessa maneira os programas utilizam o mesmo algoritmo de criptografia
para comparar as combinações com as senhas armazenadas, ou seja, eles adotam a mesma
configuração de criptografia das senhas, e então criptografam as palavras do dicionário e
comparam com senha.
Força-Bruta: enquanto as listas de palavras, ou dicionários, dão ênfase a velocidade, o
segundo método de quebra de senhas se baseia simplesmente na repetição. Força-Bruta é
uma forma de se descobrir senhas que compara cada combinação e permutação possível de
caracteres até achar a senha. Este é um método muito poderoso para descoberta de senhas,
no entanto é extremamente lento porque cada combinação consecutiva de caracteres é
comparada, como por exemplo, aaa, aab, aac ..... aaA, aaB, aaC... aa0, aa1, aa2, aa3... aba,
aca, ada...
Outras técnicas de ataque a senhas:
SMURF: é um dos mais temidos, envolvendo vítima, atacante e uma rede auxiliar. Funciona
da seguinte maneira: são enviados pacotes ICMP echo a rede auxiliar, de origem falsificada
como sendo o endereço da vítima e quando os pacotes chegam a rede auxiliar, eles serão
multiplicados e, portanto, a vítima será inundada com quantos pacotes forem ecoados na
rede.
SYN FLOOD: para entendermos este ataque precisamos ver como funciona uma conexão
TCP entre duas máquinas A e B, que é realizada em 3 etapas. Primeiramente, a máquina A
envia um pacote SYN. A máquina B então responde com outro pacote SYN/ACK que ao
chegar a máquina A, reenvia um pacote ACK e então a conexão é estabelecida. A
vulnerabilidade explorada é que a maioria dos sistemas aloca uma quantidade finita de
recursos para cada conexão potencial. Mesmo que um servidor seja capaz de atender muitas
conexões concorrentes para uma porta específica (porta 80), o que o atacante explora é que
apenas cerca de 10 conexões potenciais são tratáveis. Iniciando o ataque, o cracker envia
um pacote SYN com origem falsificada (buraco negro), o que deixará a vítima procurando por
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
171
algum tempo (que varia de acordo com o sistema) a origem para enviar o pacote SYN/ACK.
Sendo assim, esta possível conexão fica alocada na fila, que é bastante limitada.
Detectando e evitando
DDoS gera dois tipos de tráfego: tráfego de controle (entre cliente e servidor) e tráfego “flood”
(entre servidor DDoS e a vítima). Para habilitar uma eficiente detecção deve-se procurar por
sinais gerais (assinaturas), alguns óbvios, outros pelo volume de tráfego e que causam
suspeita. Ainda não existe uma solução para bloquear um ataque DoS/DDoS. O que se pode
fazer é tentar minimizar seu impacto, para fazer isso temos que primeiro identificar
corretamente um ataque de DoS e depois criar soluções para “escoar” o fluxo de pacotes,
seja através de um firewall na fronteira ou algum esquema de alteração de endereçamento
IP ou DNS.
Metodologia dos ataques:
Footprinting (Coletando informações do alvo): arte de obter informações sobre um sistema
alvo usando táticas “seguras”, sem perigo de detecção e, que pode dar informações sobre
ele, como visitar o site da empresa em que se quer invadir e ler as secções para ver se
encontra algo diferente.
Antes da diversão real do Hacker começar, três passos especiais, e às vezes árduos,
precisam ser executados. Primeiramente, a aquisição de alvos (footprinting), e coleta
informações do alvo. Por exemplo, quando um ladrão decide roubar um banco ele não entra
simplesmente no banco e começa a exigir o dinheiro (pelo menos, não os expertos). Em vez
disso, eles fazem grandes esforços para obter informações sobre o banco – as rotas dos
carros-fortes e horários de entrega de dinheiro, as câmeras de vídeo, o número de caixas,
etc. O mesmo se aplica a invasores bem-sucedidos. Eles precisam colher uma grande
quantidade de informações para executar um ataque cirúrgico e bem direcionado (um que
não seja descoberto imediatamente). Como resultado, um atacante irá coletar o máximo de
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
172
informações sobre todos os aspectos de segurança de uma organização. Eles acabarão
obtendo um footprint (perfil) único de sua presença na Internet.
Seguindo uma metodologia estruturada, atacantes podem juntar sistematicamente
informações de uma grande variedade de fontes e compilar esse footprint crítico de qualquer
organização. Embora haja diferentes técnicas de footprinting, seu objetivo primário é
descobrir informações relacionadas a tecnologias de Internet, intranet, acesso remoto e
extranet.
Métodos e Ferramentas de Segurança: as ferramentas de segurança podem ser
classificadas inicialmente quanto ao seu escopo:
Ferramentas de segurança de hosts
São voltadas para análise, correção, implementação de novos controles em sistemas
computacionais, como o crack para verificação de senhas;
Ferramentas de segurança de rede;
Estão direcionadas para a verificação e implementação de controles sobre o tráfego de uma
rede, como os filtros de pacotes;
Outra categorização é referente à função:
Verificação da integridade e vulnerabilidade;
Compreende programas que analisam ou controlam a situação de um ou mais sistemas,
relacionando os serviços disponíveis, os erros de permissão em arquivos, mudanças em
programas, acesso a serviços, etc.;
Autenticação.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
173
Uma vez conhecidas as principais ameaças e técnicas utilizadas contra a segurança da
Informação, podem-se descrever as principais medidas e ferramentas necessárias para
eliminar essas ameaças e garantir a proteção de um ambiente computacional.
Segurança Física: medidas de proteção física, como serviços de guarda, uso de no-breaks,
alarmes e fechaduras, circuito interno de televisão e sistemas de escuta, são realmente uma
parte da segurança da informação. As medidas de proteção física são freqüentemente
citadas como “segurança computacional”, visto que têm um importante papel também na
prevenção.
Salienta-se as ameaças sempre presentes, mas nem sempre lembradas, como incêndios,
desabamentos, relâmpagos, alagamentos, problemas na rede elétrica, acesso indevido de
pessoas aos servidores ou equipamentos de rede, treinamento inadequado de funcionários,
etc.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
174
U
NIDADE
29
Objetivo: Conhecer Sistemas de Detecção de Intrusão, técnicas de reconhecimento de
ataque e programas para Identificação de Intrusos através de Rede.
SISTEMAS
Instalação e Atualização
A maioria dos sistemas operacionais, principalmente as distribuições Linux, vem
acompanhada de muitos aplicativos que são instalados opcionalmente no processo de
instalação do sistema. Temos como exemplo a distribuição Shrike RedHat Linux, que na sua
versão mais atual (9) vem acompanhada de dois CDs com mais de 3000 aplicativos. Muitas
vezes a instalação desses aplicativos não focaliza a segurança, mas sim a facilidade de uso.
Sendo assim, torna-se necessário que vários pontos sejam observados para garantir a
segurança desde a instalação do sistema, dos quais podemos destacar:
• Seja minimalista: instale somente os aplicativos necessários, pois aplicativos com
problemas podem facilitar o acesso de um atacante;
• Devem ser desativados todos os serviços de sistema que não serão utilizados: muitas
vezes o sistema inicia automaticamente diversos aplicativos que não são necessários,
e que podem facilitar a vida de um atacante;
• Deve-se tomar um grande cuidado com as aplicações de rede: problemas nesse tipo
de aplicação podem deixar o sistema vulnerável a ataques remotos que podem ser
realizados através da rede ou Internet;
• Use partições diferentes para os diferentes tipos de dados: a divisão física dos dados
facilita a manutenção da segurança;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
175
• Remova todas as contas de usuários não utilizadas: contas de usuários sem senha,
ou com a senha original de instalação, podem ser facilmente exploradas para obter-se
acesso ao sistema.
Grande parte das invasões na Internet acontece devido à falhas conhecidas em aplicações
de rede, as quais os administradores de sistemas não foram capazes de corrigir a tempo
[CERT00]. Afirma-se facilmente pelo simples fato de que quando uma nova vulnerabilidade é
descoberta, um grande número de ataques é realizado com sucesso. Por isso, é
extremamente importante que os administradores de sistemas se mantenham atualizados
sobre os principais problemas encontrados nos aplicativos utilizados, através dos sites dos
desenvolvedores ou específicos sobre segurança da Informação. As principais empresas
comerciais desenvolvedoras de software e as principais distribuições Linux possuem boletins
periódicos informando sobre as últimas vulnerabilidades encontradas e suas devidas
correções. Alguns sistemas chegam até a possuir o recurso de atualização automática,
facilitando ainda mais o processo. O ponto-chave é que as técnicas de proteção de dados
por mais sofisticadas que sejam não têm serventia nenhuma se a segurança física não for
garantida.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
176
Sistemas de Detecção de Intrusão (IDS)
As tecnologias de infra-estrutura, de serviços e protocolos para redes de computadores
evoluem com velocidades impressionantes e tornam-se cada vez mais complexas. Podemos
citar novos protocolos, o SSL (Secure Socket Layers), o IPSec (extensões de segurança
para o protocolo IP) – utilizado na implementação de VPN’s. Como exemplos de novas
tecnologias de interconexão e infra-estrutura, temos as redes comutadas, redes de altas
velocidades etc. Estas novas tecnologias, algumas criadas com o objetivo de oferecer maior
segurança nas comunicações digitais, acabam por criar dificuldades na implantação de
sistemas de detecção de intrusos (IDS – Intrusion Detection System). Tais dificuldades
incluem a limitação de análise de tráfego dos atuais IDS’s em redes com taxas de
transmissão maior que 100 Mbps e a falta de suporte a tecnologias como ATM. Para a
implementação adequada de um IDS, muitas vezes são necessárias alterações estruturais
na topologia destas redes, mas, sobretudo, é necessário o completo conhecimento do
ambiente em questão. Uma das soluções para os problemas apresentados acima e outros
descritos ao longo deste artigo é a utilização de IDS’s baseados na monitoração individual
dos sistemas, conhecidos como host-based IDS (ou IDS’s híbridos), que agregam checagens
do tráfego de rede.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
177
Uma das áreas de maior expansão, pesquisa e investimento na segurança em redes de
computadores é a detecção de Intrusão. Com o grande crescimento da interconexão de
computadores em todo o mundo, materializado pela Internet, é verificado um conseqüente
aumento nos tipos e no número de ataques a esses sistemas, gerando uma complexidade
muito elevada para a capacidade dos tradicionais mecanismos de prevenção. Para maioria
das aplicações atuais, desde redes corporativas simples até sistemas de e-commerce ou
aplicações bancárias, é praticamente inviável a simples utilização de mecanismos que
diminuam a probabilidade de eventuais ataques.
Um ataque força, em casos extremos, causa interrupções totais dos serviços para que um
lento e oneroso processo de auditoria e de posterior restauração manual seja feito. Isso
justifica todo o investimento feito visando a criação de mecanismos que ultrapassem a
barreira da simples prevenção, garantindo aos sistemas um funcionamento contínuo e
correto mesmo na presença de falhas de segurança, principal objetivo dos chamados
Sistemas de Detecção de Intrusão (IDS – Intrusion Detection Systems) (CAMPELO et al,
2001:25).
Define-se IDS como uma ferramenta inteligente capaz de detectar tentativas de invasão em
tempo real. Esses sistemas podem atuar de forma a somente alertar as tentativas de
invasão, como também em forma reativa, aplicando ações necessárias contra o ataque. Ou
seja, IDS é um sistema de configurações e regras que tem como objetivo gerar alertas
quando detectar pacotes que possam fazer parte de um possível ataque.
Existem diversos tipos de ferramentas IDS para diferentes plataformas, porém as
ferramentas IDS trabalham basicamente de modo parecido, ou seja, analisando os pacotes
que trafegam na rede e comparando-os com assinaturas já prontas de ataques,
identificando-os de forma fácil e precisa qualquer tipo de anomalia ou ataque que possa vir a
ocorrer em sua rede/computador.
Uma ferramenta IDS serve basicamente para nos trazer informações sobre nossa rede,
informações como:
• Quantas tentativas de ataques sofreram por dia;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
178
• Qual tipo de ataque foi usado;
• Qual a origem dos ataques.
Enfim, a partir dele, você vai tomar conhecimento do que realmente se passa em sua rede e
em casos extremos, poderá tomar as medidas cabíveis para tentar solucionar qualquer
problema.
Em função das técnicas com que o IDSs reconhecem um ataque, eles podem ser divididos
em dois tipos:
Sistemas Baseados em Regras (Rule-based systems): baseado em bibliotecas ou bases de
dados que contenham assinaturas dos ataques. Quando algum tráfego coincide com um
critério ou regra, ele é marcado como sendo uma tentativa de intrusão. A desvantagem é a
necessidade de se manter a base de dados constantemente atualizada, e além de que essa
técnica somente identifica os ataques conhecidos. Além disso, às vezes pode existir uma
relação inversa entre a especificação da regra e sua taxa de acerto. Isto é, se uma regra for
muito específica, ataques que sejam similares, mas não idênticos, não serão reconhecidos.
Sistemas Adaptáveis (Adaptive Systems): emprega técnicas mais avançadas, incluindo
inteligência artificial, para reconhecer novos ataques e não somente ataques conhecidos
através de assinaturas. As principais desvantagens dos sistemas adaptáveis são o seu custo
muito elevado e a dificuldade no seu gerenciamento, que requer um grande conhecimento
matemático e estatístico.
Além da divisão pelas técnicas de reconhecimento de ataque, os IDSs podem ser também
classificados em dois tipos principais: NIDS e HIDS.
NIDS (Sistemas de Detecção de Intrusão de Rede): grande parte dos sistemas comerciais de
detecção de intrusão é baseada em rede. Nesse tipo de IDS os ataques são capturados e
analisados através de pacotes de rede.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
179
Em um segmento de rede, o NIDS pode monitorar o tráfego afetando múltiplas estações que
estão conectadas ao segmento de rede, assim protegendo essas estações. Os NIDSs
também podem consistir em um conjunto de sensores ou estações espalhados por vários
pontos da rede. Essas unidades monitoram o tráfego da rede, realizando análises locais do
tráfego e reportando os ataques a um console central. As estações que rodam esses
sensores devem estar limitadas a executar somente o sistema de IDS, para se manterem
mais seguras contra ataques. Muitos desses sensores rodam num modo chamado “stealth”,
de maneira que torne mais difícil para o atacante determinar as suas presenças e
localizações.
Vantagens do IDS baseados em rede:
A implementação de um NIDS tem pouco impacto sobre a performance da rede, pois
geralmente ficam em modo passivo, apenas escutando o tráfego da rede sem interferir no
seu funcionamento;
NIDs bem posicionados podem monitorar uma grande rede;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
180
Os IDSs baseados em rede podem ser muito seguros contra a maioria dos ataques, além de
ficarem invisíveis aos atacantes.
Exemplo de programas para Identificação de Intrusos através de Rede (NIDS):
• SNORT: sistema capaz de analisar o tráfego da rede em tempo real, tendo base de
dados para identificar os ataques usando uma linguagem flexível para determinação
das regras que descrevem o tráfego que deve ser analisado ou ignorado, oferece um
mecanismo de detecção modular através de plugins, tem potencialidade de gerar
alertas em tempo real enviando mensagens ao syslog, alertas em arquivos ou outros
meios.
• NESSUS: ao contrário do SNORT que somente monitora e alerta as tentativas de
invasão, identifica as vulnerabilidades dos sistemas, verificando a segurança do
sistema. Seu funcionamento é baseado num conjunto de regras que definem ações a
serem realizadas para identificar as vulnerabilidades, possui uma arquitetura clienteservidor, onde o servidor realiza os testes e o cliente apenas comanda as ações e
recebe os resultados.
Apesar de ambos serem IDS de Rede (NIDS), os sistemas não se excluem. O SNORT é
capaz de identificar e alertar os ataques durante a sua execução, enquanto o NESSUS
permite realizar busca de vulnerabilidades nos hosts da rede.
Vantagens:
• Monitoramento para múltiplas plataformas;
• Detecta ataques de rede: ip spoofing, port scanning, smurf;
• Pode monitorar atividades específicas em portas conhecidas;
• Trabalha em tempo real: detecção e alerta;
• Detecta ataques e também tentativas;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
181
• É difícil apagar rastros com um NDIS na rede;
• É transparente ao hacker;
• Não causa impacto no desempenho da rede.
Desvantagens:
• Perda de pacotes em redes saturadas (rede que possua um grande tráfego de dados);
• Dificuldade compreensão de protocolos de aplicação específicos, como o SMB
(Microsoft);
• Não é capaz de monitorar tráfego cifrado;
• Dificuldade de utilização em redes segmentadas: Taps, Hubs, Espelhamento de porta,
etc.
• Geralmente precisa de hardware específico.
A maioria dos NIDSs não pode reconhecer se um ataque foi bem sucedido, apenas apontam
que um ataque foi iniciado, apenas detectam um ataque, sendo que o administrador de
sistemas deve verificar se o host apontado foi atacado.
A maioria dos switchs não tem um sistema de monitoramento de portas limitando o NIDS
apenas analisar uma estação. Mesmo que o switch possua o recurso de monitoramento,
apenas uma porta não poderá receber todo o tráfego passando pelo equipamento.
Alguns IDSs baseados em rede têm problemas em lidar com pacotes de dados
fragmentados. Esses tipos de pacotes podem até tornar um NIDs instável ou mesmo travar o
seu funcionamento.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
182
U
NIDADE
30
Objetivo: Conhecer os Sistemas de Detecção de Instrução de Host.
SISTEMAS DE DETECÇÃO DE INSTRUÇÃO DE HOST
HIDS (Sistemas de Detecção de Instrução de Host): operam sobre informações coletadas em
computadores individuais, podendo analisar as atividades das estações com confiança e
precisão, determinando exatamente quais processos e usuários estão envolvidos em um tipo
particular de ataque no sistema operacional. Além disso, ao contrário dos sistemas baseados
em rede, os baseados em host (estação) podem ver as conseqüências de uma tentativa de
ataque, como eles podem acessar diretamente e monitorar os arquivos e processos do
sistema usualmente alvos de ataques.
Alguns HIDSs suportam um gerenciamento centralizado e relatórios que podem permitir que
um apenas um console possa gerenciar várias estações. Outros geram mensagens em
formatos que são compatíveis com os sistemas de gerenciamento de redes.
Vantagens:
• Atividades específicas do sistema podem ser monitoradas detalhadamente;
• Ataques físicos ao servidor (keyboard attack) podem ser detectados;
• Ataques que utilizam criptografia podem ser descobertos;
• Independe da topologia de rede;
• Gera poucos falsos positivos;
• Não precisa de hardware específico;
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
183
• Quando o IDS de host opera em nível de sistema operacional, ele pode ajudar a
detectar Trojan Horses ou outros tipos de ataques que envolvam problemas de
integridade nos programas;
• Tem a capacidade de monitorar eventos locais de um host, podendo detectar ataques
que não poderiam ser detectados por um IDS de rede.
Desvantagens:
• Difícil de gerenciar e configurar (exige muita customização) e é específico por hosts;
• Dependente do Sistema Operacional;
• Não detecta ataques de rede (smurf, scanning, etc);
• Caso o servidor seja invadido, as evidências podem ser removidas;
• Necessidade de espaço de armazenamento adicional;
• Diminui o desempenho do host monitorado;
• Como as informações utilizadas para análise do HIDS estão armazenadas no host, um
atacante pode invadir o sistema e desabilitar essas funcionalidades;
• IDS baseado em host consome recursos de processamento do host monitorado,
influenciando na sua performance.
Assim, enceramos o estudo deste módulo. Muito obrigado.
Antes de dar início à sua Prova Online é fundamental que você acesse sua SALA
DE AULA e faça a Atividade 3 no “link” ATIVIDADES.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
184
G
LOSSÁRIO
Caso haja dúvidas sobre algum termo ou sigla utilizada, consulte o link glossário em sua sala
de aula, no site da ESAB.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
185
B
IBLIOGRAFIA
BERTALANFFY, L. V. Teoria geral dos sistemas. 3 ed. Petrópolis: Vozes, 1977.
HIGA, W.; NETO , A. F.; FURLAN, J. D., Engenharia da Informação: Metodologia, Técnicas e
Ferramentas. Editora Mc Graw Hill, p. 18-52, 1996.
JENSEN, B. O Desafio da Simplicidade, HSM Management, p. 24-30, 1998.
LAUDON, K. C., LAUDON, J.P. Sistemas de informação gerenciais. 5. ed. São Paulo:
Person Brasil, 2003.
LEMMANN, M., Palavras ao Vento, Revista Exame, p. 36-40, 2000.
Mathias, Carlos Alberto. Disponível em: <http://www.inclusao.com.br/projeto_textos_29.
htm>. Acesso em: 10/04/2008.
MCLEOD JR., Raymond. Management information System: a study of computer-base
information system. United States of America: Macmillian Publishing Company, 1993.
NAKAGAWA, M. Introdução à controladoria: conceitos, sistemas e implementação. 2. ed.
São Paulo: Atlas, 1993.
OLIVEIRA, D. P. R. Sistemas de informações gerenciais: estratégias, táticas, operacionais. 2.
ed. São Paulo: Atlas, 1993
POSNER, M. (Ed.). Foundations of Cognitive Science. MIT Press, 1989.
REZENDE, Denis Alcides. Sistemas de informações organizacionais: Guia Prático para
Projetos em Cursos de Administração, Contabilidade, Informática. 2. ed. São Paulo: Atlas,
2007. 112 p.
_____; ABREU, Aline Franca. Tecnologia da informação Aplicada a Sistemas de Informação
Empresariais. 5. ed. São Paulo: Atlas, 2008.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
186
STAIR, Ralph M. Princípios de Sistemas de Informação: uma abordagem gerencial. Rio de
Janeiro: LTC, 1998.
BARRETO, Jorge M. Introdução às Redes Neurais Artificiais. Anais V Escola Regional de
Informática da SBC Regional Sul, 5 a 10 de maio, 1997. p. 41-71.
CARVALHO FILHO, Edson Costa de Barros. Modelagem, Aplicações e Implementações de
redes Neurais. Anais da IV Escola Regional de Informática da SBC Regional Sul, 21 a 27 de
abril, 1996. p. 36-53.
FREEMAN, James A.; SKAPURA, David M. Neural Networks: Algorithms, Applications and
Programming Techniques. Loral Space Information Systems and Adjunct Faculty, School of
Natural and Applied Sciences University of Houston at Clear Lake.
GORNI, Antônio Augusto. Redes Neurais Artificiais: Uma Abordagem revolucionária em
Inteligência Artificial. Revista Micro-Sistemas, edição 133, p. 14-25, edição 134, p. 14-17,
Ano XII.
GUPTA, Madan M.; RAO, Dandina H. Neuro-Control Systems: Um volume selecionado
reeditado. IEEE Neural Networks Council, Sponsor.
HAYKIN, S. Redes Neurais: Princípios e Prática. 2. ed. Bookman Companhia Editora, 2001.
HECHT-NIELSEN, Robert. Neurocomputing. HNC, Inc. and University of California, San
Diego.
KOVÁCS, Zsolt L. Redes Neurais Artificiais. 2. ed., editora Collegium Cognitio, 1996.
NISSEN, Mark. Intelligent Agents: A Technology and Business Application Analysis.
Disponível em: http://haas.berkeley.edu/~heilmann/agents, 1995.
RIVER, Charles. Intelligent Agents. Disponível em: http://www.opensesame.com/webpages/
corp/background.html, 1996.
RUSSELL, S.; NOVIG, P. Inteligência Artificial, 1. ed., Elsevier Editora Ltda., 2004.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
187
YOSHIDA, Keila M. Redes Neurais e suas aplicações em Inteligência Artificial. Trabalho de
graduação. 1996
Disponível em: http://arquivos.coinfo.cefetpb.edu.br/~candido/ed-apostila.pdf.
CELES, Waldemar; CERQUEIRA, Renato; RANGEL, Jose Lucas. Estrutura de Dados. São
Paulo: Campus.
DROZDEK, Adam. Estrutura de dados e algorithmo C++, normal. São Paulo: Pioneira.
ESAKOV, Jeffrey & WEISS, Tom. Data Strutures: An advanced Approach usibg C.
GODRICH, Michael & TAMASSIA, Roberto.
LAGES, G. Algoritmos e Estruturas de Dados. São Paulo: LTC, 1988.
SILVA, Osmar Quirino da. Fundamentos e Aplicações. Ciência Moderna, 2007. 472 p.
TENENBAUM, Aaron M., et alli. Estruturas de Dados usando C.
CATELL, R. G. Objest Data Management. Addison-Wesley, 2. Ed., 1994.
ELMASRI & NAVATHE. Fundamentals of Database Systems. Benjamin-Cummings. 3. ed.,
2000.
KIM, W. "Modern Database Systems" ACM Press, 1995.
KOSHAFIAN, S. Object-oriented Database Systems. Morgan Kaufmann, 1993.
TAKAI, O. K.; FERREIRA, J. E. Introdução a Banco de Dados. Disponível em:
http://www.ime.usp.br/~jef/apostila.pdf. Acesso em: 30/04/2008.
CARUSO, Carlos. Segurança em Informática e de Informações. 3. ed., SENAC, 2006.
Disponível em: http://www.projetoderedes.com.br/apostilas/arquivos/segurancadedados. zip.
Acesso em: 30/04/2008.
Disponível em: http://www.malima.com.br/article_read.asp?id=18. Acesso em: 30/04/2008.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
188
Disponível
em:
http://www.projetoderedes.com.br/apostilas/arquivos/seguranca_de_
informacoes.zip. Acesso em: 30/04/2008.
Copyright © 2007, ESAB – Escola Superior Aberta do Brasil
189
Download