sábado, 1 de outubro de 2011

Resumo de Arquitetura de Computadores

Definição 1: Um computador é uma máquina composta de um conjunto de partes eletrônicas e eletromecânicas, com capacidade de coletar, armazenar e manipular dados, além de fornecer informações, tudo isso de forma automática.

Definição 2: O hardware do computador é tudo aquilo que o compõe fisicamente. Constitui-se em hardware o próprio gabinete do computador e seus periféricos. 

Componentes do computador

Gabinete

Contém fonte, placa mãe, dispositivos de armazenamento, placas de expansão, memória, etc... Existem vários modelos de designes e tamanhos variados. Também exigem compatibilidade com o tipo de fonte e, em alguns casos, com a placa mãe.
Exemplo de gabinete de um computador

Fonte

Recebe corrente alternada de 110 ou 220 Volts vinda do estabilizador e a transforma em corrente contínua de 5, -5, 12 e -12 Volts. O dois tipos de fonte mais conhecidos são: AT e ATX. 

AT

Possui uma chave liga/desliga e a saída é um conjunto de dois conectores semelhantes.

ATX

Também chamada de fonte inteligente, ela não possui uma chave liga/desliga (seu desligamento é realizado por um pulso enviado através da placa mãe. Possui um único conector de saída.

Placa Mãe

A placa mãe (motherboard) é possivelmente a parte mais importante do computador. Ela gerencia toda a transação de dados entre a CPU e os periféricos. Ela define a arquitetura do seu computador. Componentes da Placa Mãe: chipset, BIOS, barramentos, slots.
Exemplo de placa-mãe para processadores AMD

Microprocessador

O termo microprocessador não é o mesmo que CPU. Para os microcomputadores porém, pode-se dizer que o microprocessador é a sua CPU. Antes da existência dos microcomputadores, as CPUs dos computadores eram formadas por um grande número de chips, distribuídos ao longo de uma ou diversas placas. O microprocessador é uma CPU inteira dentro de um único chip. É o cérebro do computador.
Processadores Pentium III, Pentium 4 (Socket 423), Pentium 4 (Socket 478) e Athlon

Desde o advento do processador Intel 8088 (Linha PC-XT) até o atual Pentium 4 passando pelos 80286, 80386 e 80486, apresentam sempre uma evolução exponencial em relação ao seu antecessor, medido atualmente em milhões de transistores e paradoxalmente em mícrons de espessura de trilha. Confira os dados abaixo a respeito dos CIs Intel.

Existem dois tipos básicos de processadores com relação as instruções que estes realizam: CISC e RISC.

CISC (Complex Instruction Set Computer)

O processador contém um grande número de instruções. Dessa forma, o microcódigo deve utilizar sua próprias instruções. Dissipam mais calor que o RISC.

RISC (Reduced Instruction Set Computer)

O processador contém um número pequeno de instruções mais simples. Dessa forma, o próprio software em execução faz o trabalho pesado. Acontece que o aumento de performance do chip compensa em muito esse trabalho extra do programa. Atinge frequências maiores do que os CISC.

Clock

Toda placa tem um cristal piezoelétrico (ou um circuito integrado) para a geração dos sinais de sincronismo e determinação da velocidade de processamento. O cristal fornece um pulso de alta precisão cuja frequência depende do processador em uso. Assim como o processador, outros sinais são obtidos do clock para os circuitos da motherboard via divisão de frequência. Exceção feita ao barramento de expansão, que tem um cristal de 14,31818 MHz independente para seu funcionamento.

Clock Speed ou Clock Rate

É a velocidade na qual um microprocessador executa instruções. Quanto mais rápido o clock, mais instruções uma CPU pode executar por segundo. A velocidade de clock é expressada em MegaHertz (MHz), sendo 1MHz igual a 1 milhão de ciclos por segundo.

Memórias

As memórias dos computadores são uma parte muito importante no seu funcionamento e performance. Elas estão intimamente ligadas ao processador, chipset e placa mãe. Existem vários tipos de memória, variando a capacidade de armazenamento, de velocidade, e o preço.

Exemplos de módulos de memória

Placas de expansão

Permitem que se acrescentem novos recursos ao computador. São conectadas à placa mãe através dos slots. Exemplos: placas de som, placa de vídeo, placa de rede, etc.

Periféricos

Unidades de entrada/saída. Exemplos: teclado, mouse, monitor, impressora, scanner, etc.

CMOS

O chip denominado CMOS é composto por um relógio eletrônico e 64 Bytes de memória RAM. É nesta memória que estão armazenadas as informações relativas à configuração do hardware do computador.

BIOS

O BIOS (Basic Input-Output System) é um pequeno programa armazenado em um chip de memória ROM da placa mãe. Ele é responsável por “acordar” o computador. Assim que um computador é ligado o BIOS começa suas atividades: contar e verificar a memória RAM, inicializar dispositivos, e o principal, dar início ao processo de boot. Boot é a operação de passagem do sistema operacional do disco onde se encontra para a memória do computador.

Chipset

Denomina-se chipset os circuitos de apoio ao computador que gerenciam praticamente todo o funcionamento da placa-mãe (controle de memória cache, DRAM, controle do buffer de dados, interface com a CPU etc.). É responsável pelas informações necessárias ao reconhecimento de hardware (armazenadas na sua memória ROM).

Arquitetura básica de um computador

O computador é uma máquina programável capaz de processar informações com grande rapidez. A figura abaixo mostra a estrutura básica de um computador.
Estrutura básica
Entrada/Saída

As unidades de entrada permitem ao computador acessar informações do mundo externo. As informações são traduzidas em códigos que podem ser entendidos pela Unidade Central de Processamento. Exemplos de dispositivos de entrada são: teclado, mouse, tela touchscreen, leitora de cartão magnético, joystick, caneta ótica, scanner de código de barras, driver de disquete, driver de CD-ROM, disco rígido (hard disk ou HD), leitora de fita magnética, leitora de cartão perfurado, sensores, etc.
Exemplos de dispositivos de entrada

As unidades de saída convertem pulsos elétricos, permitindo a saída de informações para meios externos e possibilitando sua visualização, armazenamento ou utilizaçõo por outro equipamento. Exemplos de dispositivos de saída são: impressora, plotadora, monitor ou vídeo, driver de disquete, disco rígido (hard disk ou HD), gravadora de fita magnética, emissor de som, controladores, etc.
Exemplos de dispositivos de saída

As unidades de entrada e saída são os dispositivos que servem tanto para entrada quanto para a saída de dados em um computador. Como exemplo temos: unidades de disco flexível (floppy disk), discos rígidos, modems, unidades de backup, etc.
Exemplos de dispositivos de entrada e saída

Unidade Central de Processamento

A Unidade Central de Processamento, também conhecida pela sigla inglesa CPU (Central Processor Unit), é o componente vital do sistema de computação, responsável pela realização das operações de processamento (cálculos matemáticos, cálculos lógicos, etc) e de controle, durante a execução de um programa. A função da CPU consiste em:
1. Buscar uma instrução na memória, uma de cada vez - fase de leitura;

2. Interpretar a instrução - decodificar;

3. Buscar os dados onde estiverem armazenados, para trazê-los à CPU;
4. Executar a operação com os dados;

5. Guardar, se for o caso, o resultado no local definido na instrução;

6. Reiniciar o processo, apanhando nova instrução.

Para efetuar tais procedimentos a CPU é composta por vários componentes:

Unidade Aritmética e Lógica - ALU: responsável por realizar as operações matemáticas com os dados;

Registradores: utilizados para o armazenamento temporário de dados;

Unidade de Controle - UC: é o dispositivo mais complexo da CPU, responsável pela busca de instruções na memória principal e determinação de seus tipos, controla a ação da ALU, realiza a movimentação de dados e instruções de e para a CPU;

Relógio: dispositivo gerador de pulsos cuja duração é chamada de ciclo. A quantidade de vezes em que este pulso se repete em um segundo define a unidade de medida do relógio, denominada de frequência. A unidade de medida usual para a frequência dos relógios da CPU é o Hertz (Hz), que significa um ciclo por segundo. Como se trata de frequências elevadas, abreviam-se os valores usando-se milhões de Hertz, ou ciclos por segundo - MHz.
Estrutura simplificada de uma CPU
Memória

RAM


A memória principal do computador é conhecida por RAM (Random Access Memory). Na memória principal estão as instruções que estão sendo executadas e os dados necessários à sua execução. Todo programa que você executa é armazenado na memória RAM, seja ele um software antivírus, um protetor de tela, uma impressão, ou o próprio sistema operacional. A memória principal, também chamada de memória de trabalho ou memória temporária, é uma memória de leitura e escrita (read/write). Suas características são: rápido acesso (da ordem de nanosegundos em computadores mais modernos), acesso aleatório e volatilidade (em caso de falta de energia elétrica ou desligamento do computador há perda de informações).

Em termos de hardware são pequenos módulos (placas retangulares) que são encaixadas nos slots de memória das placas mãe. Atualmente, temos módulos (os mais comuns) de 512, 1024, 2048 e 4096 MB. A capacidade total de memória depende do módulo e do número de slots na placa mãe.

Cache

A memória cache é um tipo de memória RAM, porém mais rápida e mais cara. Serve para acelerar o processamento. O cache reduz sensivelmente a velocidade de acesso médio a memória principal, armazenando instruções e dados mais requisitados.

ROM

O computador possui também uma memória chamada ROM (Read Only Memory) onde são guardadas informações para iniciar o computador, ativando o sistema operacional. Esta memória é não volátil, e em geral gravada pelo fabricante e com pequena capacidade de armazenamento. Geralmente, depois de gravada a ROM não pode ser mais gravada pelo usuário. Ela pode ser encontrada das seguintes formas:

• ROM programável (PROM), memórias “em branco” que mediante circuitos especiais porem ser escritas somente uma vez, assim como os CD-R;

• EPROM, programável e apagável mediante o uso de ultra violeta em uma pequena janela do chip, podendo ser reescrita;

• EEPROM, programável e eletricamente apagável, também podendo ser reescrita, facilitando a atualização de seus programas;

Memória secundária

A memória secundária ou memória auxiliar é usada para armazenar grandes quantidades de informações. Um exemplo comum de memória secundária é o disco rígido, que é usado para armazenar grandes volumes de informações.

Barramento

Barramentos são caminhos que permitem o transporte de dados entre os vários elementos: CPU, memória, placas de expansão, sistema de entrada e saída, etc.

Resumo sobre organização de computadores


Principais modos de endereçamento de memória

Imediato: O campo operando contém o dado, desta forma o dado é transferido da memória juntamente com a instrução.


Vantagem: Rapidez na execução da instrução, pois não requer acesso à memória principal, apenas na busca da própria instrução.

Desvantagem: Limitação do tamanho do campo operando das instruções reduzindo o valor máximo do dado a ser manipulado. Trabalho excessivo para alteração de valores quando o programa é executado repetidamente e o conteúdo das variáveis são diferentes em cada execução.

Direto: O campo operando da instrução contém o endereço onde se localiza o dado.

Vantagem: Flexibilidade no acesso a variáveis de valor diferente em cada execução do programa.

Indireto: O campo operando contém o endereço de uma célula, sendo o valor contido nesta célula o endereço do dado desejado.

Vantagem: Usar como “ponteiro”. Elimina o problema do modo direto de limitação do valor do endereço do dado. Manuseio de vetores (quando o modo indexado não está disponível).

Desvantagem: Muitos acessos à memória principal para execução. Requer ao menos 2 acessos à memória principal.

Por registrador: característica semelhante aos modos direto e indireto, exceto que a célula (ou palavra) de memória referenciada na instrução é substituída por um dos registradores da UCP. O endereço mencionado na instrução passa a ser o de um dos registradores.

Vantagem: Menor quantidade de bits para endereçar os registradores, por consequência, redução da instrução. E o dado pode ser armazenado em um meio mais rápido (registrador).

Desvantagem: Devido ao número reduzido de registradores existentes na UCP causa uma dificuldade em se definir quais dados serão armazenados nos registradores e quais permanecerão na UCP.

Indexado: consiste em que o endereço do dado seja a soma do valor do campo operando (que é fixo para todos os elementos de um dado vetor) e um valor armazenado em um dos registradores da UCP (normalmente denominado registrador índice).

Vantagem: Rapidez de execução das instruções de acesso aos dados, visto que a alteração do endereço dos elementos é realizada na própria UCP.

Base mais deslocamento: o endereço é obtido da soma do campo de deslocamento com o conteúdo do registrador base. Este modo de endereçamento tem como objetivo permitir a modificação de endereço de programas ou módulos destes, bastando para isso alterar o registrador base.

Vantagem: Reduz o tamanho das instruções e facilita o processo de relocação de programas.


Compilação e Interpretação

A compilação consiste na análise de um programa escrito em linguagem de alto nível (programa fonte) e sua tradução em um programa em linguagem de máquina (programa objeto). A interpretação tem como vantagem sobre a compilação a capacidade de identificação e indicação de um erro no programa-fonte (incluindo erro da lógica do algoritmo) durante o processo de conversão do fonte para o executável.

Na interpretação cada comando do código fonte é lido pelo interpretador, convertido em código executável e imediatamente executado antes do próximo comando. A interpretação tem como desvantagem o consumo de memória devido ao fato de o interpretador permanecer na memória durante todo o processo de execução do programa. Na compilação o compilador somente é mantido na memória no processo de compilação e não utilizado durante a execução. Outra desvantagem da interpretação está na necessidade de tradução de partes que sejam executadas diversas vezes, como os loops que são traduzidos em cada passagem. No processo de compilação isto só ocorre uma única vez. Da mesma forma pode ocorrer para o programa inteiro, em caso de diversas execuções, ou seja, a cada execução uma nova interpretação. 


Computadores Vetoriais e Computadores Matriciais

O termo computadores vetoriais corresponde a sistemas compostos por processadores vetoriais que frequentemente são associados à organização de ULAs com pipeline de operações.

E o termo computadores matriciais corresponde a sistemas compostos por processadores matriciais cuja organização é formada de ULAs paralelas.

Sistemas SMP (ou UMA) têm como característica o acesso a todas as partes da memória principal com tempo de acesso uniforme.

Nos sistemas NUMA, todos os processadores possuem também acesso a todas as partes da memória principal, podendo diferir o tempo de acesso em relação às posições da memória e ao processador. Nos sistemas SMP o aumento no número de processadores tem como consequência problemas de tráfego no barramento comum, degradando o desempenho. Uma solução para isto é a utilização de clusters, que tem, usualmente, como consequência alterações significativas na aplicação (software). Nos sistemas NUMA podem-se ter vários nós multiprocessadores, cada qual com seu próprio barramento, resultando em pequenas alterações na aplicação (software). 


Arquiteturas RISC e CISC

RISC: Reduced Instruction Set Computer ou Computador com um conjunto reduzido de instruções.

CISC: Complex Instruction Set Computer ou Computador com um conjunto complexo de instruções.


Principais características do CISC:

Possui microprogramação para aumento da quantidade de instruções incluindo novos modos de endereçamento, de forma a diminuir a complexidade dos compiladores e em conseqüência permitir linguagens de alto nível com comandos poderosos para facilitar a vida dos programadores. Em contrapartida, muitas instruções significam muitos bits em cada código de operação, instrução com maior comprimento e maior tempo de interpretação.

Exemplos: IBM/370-168 (exemplo antigo), Intel 80486, Intel Pentium, Intel Xeon.
 
Principais características do RISC:

Menor quantidade de instruções e tamanho fixo. Não há microprogramação. Permite uma execução otimizada, mesmo considerando que uma menor quantidade de instruções vá conduzir a programas mais longos. Uma maior quantidade de registradores e suas utilizações para passagem de parâmetros e recuperação dos dados, permitindo uma execução mais otimizada de chamada de funções. Menor quantidade de modos de endereçamento com o objetivo da redução de ciclos de relógio para execução das instruções. Instruções de formatos simples e únicos tiram maior proveito de execução com pipeline cujos estágios consomem o mesmo tempo.

Exemplos: Power PC, Série Sparc, Alpha 21064. 


Barramento PCI

PCI - Peripheral Component Interconnect (Interconexão de Componentes Periféricos).
Uma placa PCI típica

O PCI é uma mistura do ISA e do VL-Bus. Fornece acesso direto à memória do sistema para dispositivos conectados, mas usa uma ponte para se conectar ao barramento frontal (frontside bus) e, portanto, ao processador. Basicamente, significa que tem um desempenho ainda melhor do que o VL-Bus, além de eliminar uma possível interferência com o processador.
Placas PCI têm 47 pinos
O PCI conecta mais dispositivos do que o VL-Bus, até cinco componentes externos. Cada um dos cinco conectores para um componente externo pode ser substituído por dois dispositivos fixos na placa-mãe. Além disso, você pode ter mais do que um barramento PCI no mesmo computador, apesar de ser raro. O chip da ponte do PCI regula a velocidade do barramento, independentemente da velocidade do processador. Isto torna o sistema mais seguro, e faz com que os fabricantes de hardware PCI saibam exatamente o que fazer.

O PCI no início operava a 33MHz, usando um caminho de 32 bits de largura. O padrão foi atualizado, e sua velocidade subiu de 33MHz para 66MHz, e sua largura dobrou para 64 bits. Atualmente, o PCI-X transfere em 64 bits a uma velocidade de 133MHz a uma incrível taxa de transferência de 1GBps (gigabyte por segundo).

As placas PCI têm 47 pinos (49 para uma placa com "bus mastering", que controla o barramento PCI sem intervenção do processador). O barramento PCI consegue trabalhar com poucos pinos por causa da multiplexação de hardware, que significa que o dispositivo envia mais do que um sinal por pino. Além disso, o PCI é compatível com dispositivos que usam tanto 5 Volts como 3,3 Volts.

Podem ocorrer alguns problemas se dois dispositivos desejarem tornar-se mestres ao mesmo tempo. Para resolver esse conflito surge a necessidade de um mecanismo pra efetuar a arbitragem do barramento. No barramento PCI um único árbitro determina quem será o próximo mestre (arbitragem centralizada).

Arbitração:

Quando enxerga uma requisição de uso, o árbitro envia um sinal de garantia de uso do barramento por uma linha que está ligada a todos os dispositivos de E/S.

Passa a ser o mestre o dispositivo que fez uma requisição de uso e está mais próximo fisicamente do barramento. Esse procedimento é denominado Daisy Chaining. Uma outra maneira de fazer a arbitragem do barramento, que evita a questão da distância física dos dispositivos, é a arbitragem por prioridades.

quinta-feira, 22 de setembro de 2011

Como evitar ataques de SQL Injection no PHP e MySQL

A melhor função para proteger sistemas em PHP e MySQL contra SQL Injection é a mysql_real_escape_string(). Ela faz escapar os caracteres especiais, como aspas simples e duplas, antes de enviar para o banco de dados.

Esta função não funciona em todas as versões do PHP, então devemos verificar se ela existe, e caso não exista, utilizar a função mysql_escape_string().

Também devemos ter em mente que se a diretiva get_magic_quotes_gpc() está ligada ela acrescenta barras invertidas automaticamente antes de aspas simples e duplas. O problema é que ela envia para o banco de dados com as barras invertidas, estragando o texto. Para contornar isso usamos a função stripslashes() para remover essas barras invertidas.

Então vamos montar a nossa função com o nome de anti_sql_injection():

function anti_sql_injection($str) {
     if (!is_numeric($str)) {
          $str = get_magic_quotes_gpc() ? stripslashes($str) : $str;
          $str = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($str) : mysql_escape_string($str);
          }
     return $str;

Note que em nossa função primeiro verificamos se o valor informado não é numérico, ou seja, que precisa ser tratado. Em seguida verificamos se a diretiva get_magic_quotes_gpc() está ativada. Se estiver usamos a função stripslashes(). Em seguida verificamos se existe a função mysql_real_escape_string(). Se existir usamos ela, caso contrário, usamos a função mysql_escape_string().

Veja um exemplo de como usar a função:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     $usuario = trim($_POST['POST']);
     $senha = trim($_POST['senha']);

     $sql = 'SELECT COUNT(id_usuario) ';
     $sql .= 'FROM usuarios ';
     $sql .= 'WHERE usuario = \'' . anti_sql_injection($usuario) . '\' ';
     $sql .= 'AND senhha = \'' . anti_sql_injection($senha) . '\' ';
     $query = mysql_query($sql) or die('Erro na consulta: ' . mysql_error());
     $total = mysql_result($query, 0);
     if ($total > 0) {
          echo 'Usuário e senha corretos.';
     } else {
          echo 'Usuário e/ou senha inválido(s).';
     }

Pronto! Estamos vacinados contra ataques de SQL Injection.

Ligue a vontade para qualquer celular ou fixo em todo o Brasil, EUA e Canadá, através do 99TelexFREE. Teste nosso serviço por 1 hora gratuitamente: http://www.telexfree.com/ad/marcelmesmo 

Netfilter, iptables

Publiquei em meu Scribd slides sobre o firewall Netfilter iptables, de uma aula do professor Sales Filho, da disciplina de Segurança de Redes do curso de Redes de Computadores do IFRN.

Clique aqui para acessar

Segurança perimetral: firewall e proxy

Postei no meu Scribd uma aula sobre firewall e proxy, do professor Sales Filho, do IFRN.

Clique aqui para acessar

Ataques e mecanismos de segurança de redes de computadores

Publiquei em meu Scribd alguns slides sobre ataques e mecanismos de segurança da informação, referentes a três aulas do professor Sales Filho, da disciplina de Segurança de Redes, do curso de Redes de Computadores do IFRN.

Clique aqui para acessar

segunda-feira, 19 de setembro de 2011

Classificação da informação

Existem quatro aspectos importantes para a classificação das informações. Cada tipo de informação deve ser examinado a partir desses aspectos para poder ser mais bem classificada:

Integridade - a informação é atual, completa e mantida por pessoas autorizadas.

Disponibilidade - a informação está sempre disponível quando necessária ao pessoal autorizado.

Confidencialidade - a informação só é acessada pelos indivíduos autorizados. 

Valor - a informação tem um alto valor para a organização.

Outro fator que deve ser considerado ao se gerar uma política de segurança é o nível de ameaça conhecido que cada informação tem. Para isso devem ser respondidas questões como: Existem concorrentes buscando a informação? É possível que ela fique indisponível? E por qual motivo isso pode acontecer? É uma informação fácil de perder a integridade, ficar desatualizada?

Níveis de segurança

Com base na análise dos parâmetros acima podemos chegar ao nível de segurança da informação. Um nivelamento de segurança pode seguir a seguinte classificação:

Irrestrito - Esta informação é pública, podendo ser utilizada por todos sem causar danos à organização. 

Interna - Esta informação é aquela que a organização não tem interesse em divulgar, cujo acesso por parte de indivíduos externos a ela deve ser evitado. Entretanto, caso esta informação seja disponibilizada ela não causa danos sérios à organização.

Confidencial - Informação interna da organização cuja divulgação pode causar danos financeiros ou à imagem da organização. Essa divulgação pode gerar vantagens a eventuais concorrentes e perda de clientes.

Secreta - Informação interna, restrita a um grupo seleto dentro da organização. Sua integridade deve ser preservada a qualquer custo e o acesso bastante limitado e seguro. Esta é a informação considerada vital para a companhia.

Para podermos chegar nestes níveis de segurança podemos nos guiar também pela seguinte tabela:

O que devemos notar é que o nível de segurança pode ser aumentado tanto pela necessidade de confidencialidade quanto pela de disponibilidade. Uma informação que deve estar sempre disponível deve ter um serviço robusto trabalhando para isso, assim como uma informação confidencial também. E existem ainda os casos onde estes fatores se somam. Por exemplo, uma informação pode ter requisitos de confidencialidade média, mas integridade alta. Assim o nível de segurança da informação deve ser definido levando em conta todos estes fatores em conjunto e não apenas um deles isoladamente. E para isso surge a próxima questão que é "quem define este nível".

Estabelecendo responsabilidades

Para definir o nível de segurança da informação de cada setor da organização a pessoa mais indicada é o próprio responsável daquele setor. Ele é quem certamente conhece melhor as informações do seu setor assim como as necessidades de confidencialidade, integridade e disponibilidade do setor.

Após esta classificação ser feita também é importante que alguém de um nível superior a ele esteja verificando a classificação para garantir que as informações que precisem transitar entre os diversos setores não sejam demais protegidas e isoladas em um setor e também que as informações que não podem transitar estejam protegidas.

Além do responsável pela classificação é preciso também estabelecer os responsáveis pela manutenção dos níveis de segurança definidos. Neste caso todos os funcionários devem ser envolvidos e deve ser criado um plano com um regime de responsabilidades claro e disponível para todos. Além disso, deve ser feito um treinamento para passar os dados deste plano e se possível deve haver um supervisor que verifique a efetivação do plano nos diversos setores da organização.

Implementando a classificação

Para a implementação da categorização devem ser consideradas as seguintes práticas:

• Identificação/marcação dos recursos informacionais;

• Armazenamento da informação;

• Transmissão de informações;

• Eliminação de informação desnecessária;

• Garantia da integridade da informação;

• Permissão de acesso apropriado;

• Estabelecimento de responsabilidades.

Vejamos alguns exemplos destas implementações:

- Para a identificação/marcação dos recursos informacionais:

- Para o armazenamento das informações, de acordo com sua classificação:

- Para transmissão das informações:

O descarte de informações

O lixo de certas empresas pode vir a ser uma grande fonte de informações confidenciais caso as mesmas não se preocupem com o descarte das informações. De nada adianta um relatório ser confidencial, acessado com uma boa senha e transmitido com criptografia caso ele seja impresso e o papel jogado no lixo sem as informações serem eliminadas.

Assim toda mídia impressa que contenha informações relevantes deve ser destruída antes de ser descartada. Isso pode ser feito por picotadores de papel.

Protegendo a integridade

Para a proteção da integridade nos documentos eles todos devem conter informações que identifiquem sua origem assim como um carimbo caso se faça necessário. No caso de documentos eletrônicos eles devem ser controlados através de esquemas de permissão de acesso, restringindo a possibilidade de gravação aos usuários autorizados.

Caso a necessidade de integridade seja alta, certos documentos devem ser armazenados em uma localização central, só podendo ser retirados sob-custódia e com tempo limitado.

O acesso às informações

O acesso às informações deve ser feito de acordo com as políticas estabelecidas para o armazenamento das mesmas. 

Responsabilidades

Após as responsabilidades serem estabelecidas e definidas e os treinamentos serem feitos cada funcionário deve assinar um termo de responsabilidade indicando sua concordância com a política estabelecida.

Um processo para a implementação da classificação

Para implantar a classificação proposta, considerando as práticas acima, podemos seguir os seguintes passos:

• Inventário;

• Classificação de risco;

• Definir política da organização;

• Definir políticas por projetos;

• Implementação de práticas de segurança;

• Treinamento;

• Identificação (marcação);

• Monitoramento.

Arquitetura TCP/IP

A arquitetura internet foi criada pelo Departamento de Defesa dos Estados Unidos, com o objetivo de se ter uma rede interligando várias universidades e órgãos do governo de maneira descentralizada (ARPANET), para evitar a sua destruição no caso de ocorrência de uma guerra. Com o passar do tempo, esta idéia inicial perdeu o sentido e a infraestrutura foi aproveitada para se tornar o que hoje é a maior rede de computadores do mundo: a Internet.

Os padrões da internet não são criados por órgãos internacionais de padronização, como a ISO ou o IEEE, mas ela é uma arquitetura muito aceita, sendo chamada por isso como padrão "de facto", ao contrário do modelo OSI, considerado padrão "de jure". O corpo técnico que coordena a elaboração de protocolo e padrões da internet é o IAB (Internet Activity Board). Qualquer pessoa pode criar um protocolo para ser utilizado pela rede internet. Para isto, basta que ela documente este protocolo através de um RFC (Request for Comments), que pode ser acessado na Internet. Estes RFC's são analisados pelos membros da IAB que poderão sugerir mudanças e publicá-lo. Se após seis meses da publicação não houver nenhuma objeção, este protocolo se torna um Internet Standard.

A arquitetura internet se destaca pela simplicidade de seus protocolos e pela eficiência com que atinge o seu objetivo de interconectar sistemas heterogêneos.

Obs: cabe comentar aqui que por rede internet entende-se qualquer rede que utiliza os protocolos TCP/IP, enquanto que o termo Internet (com I maiúsculo) é utilizado para designar a Internet (conjunto de redes baseada na ARPANET, com milhões de usuários em todo o mundo).

Arquitetura internet

A arquitetura internet se baseia praticamente em um serviço de rede não orientado à conexão (datagrama não confiável), o Internet Protocol (IP) e em um serviço de transporte orientado à conexão, oferecido pelo Transmission Control Protocol (TCP). Juntos, estes protocolos se completam, oferecendo um serviço confiável de uma forma simples e eficiente.

A arquitetura internet se baseia em um modelo com quatro camadas (figura abaixo), onde cada uma executa um conjunto bem definido de funções de comunicação. No modelo em camadas da internet, não existe uma estruturação formal para cada camada, conforme ocorre no modelo OSI. Ela procura definir um protocolo próprio para cada camada, assim como a interface de comunicação entre duas camadas adjacentes.
Modelo em Camadas da Internet

Camada de rede de comunicação

Na camada de rede de comunicação da internet, não existe um padrão para a sub-rede de acesso, possibilitando a conexão de qualquer tipo de rede, desde que haja uma interface que compatibilize a tecnologia da rede com o protocolo IP. Desta forma, um número muito grande de tecnologias pode ser utilizado na sub-rede de acesso, como Ethernet, Token Ring, FDDI, X.25, Frame Relay, ATM, etc.

Para que todas estas tecnologias possam ser "vistas" pela rede internet, existe a necessidade de uma conversão de endereçamentos do formato utilizado pela sub-rede e o formato IP. Esta conversão é realizada pelos gateways, que tornam a interconexão das redes transparente para o usuário (figura abaixo).

Além das conversões de protocolos, os gateways são responsáveis pela função de roteamento das informações entre as sub-redes.
Interconexão de Sub-Redes à Rede Internet

Camada de interrede

A camada de interrede, também chamada de internet, é equivalente à camada de rede do modelo OSI. Nela são especificados vários protocolos, dentre os quais se destaca o IP (Internet Protocol).

O IP é um protocolo não orientado a conexão, cuja função é transferir blocos de dados denominados datagramas da origem até o destino, podendo passar inclusive por várias sub-redes (a origem e o destino são hosts identificados por endereços IP). A operação no modo datagrama é uma comunicação não confiável, não sendo usado nenhum reconhecimento fim-a-fim ou entre nós intermediários, nem qualquer tipo de controle de fluxo.

Nenhum mecanismo de controle de erro de dados é utilizado, apenas um controle de verificação do cabeçalho, para garantir que os gateways encaminhem as mensagens corretamente. Algumas das principais características do protocolo IP são as seguintes:

· Serviço de datagrama não confiável;

· Endereçamento hierárquico;

· Facilidade de fragmentação e remontagem de pacotes;

· Campo especial indicando qual o protocolo de transporte a ser utilizado no nível superior;

· Identificação da importância do datagrama e do nível de confiabilidade exigido;

· Descarte e controle de tempo de vida dos pacotes interredes no gateway. 

Endereçamento IP

O roteamento dos datagramas através das sub-redes são feitos baseados no seu endereço IP, números de 32 bits normalmente escritos como quatro octetos (em decimal), por exemplo 9.179.12.66. Devido ao fato de existirem redes dos mais variados tamanhos compondo a interrede, utiliza-se o conceito de classes de endereçamento:
Formato dos Endereços IP

Os endereços IP indicam o número da rede e o número do host, sendo que a classe A suporta até 128 redes com 16 milhões de hosts cada uma, a classe B 16384 redes com até 64 mil hosts cada uma, a classe C 2 milhões de redes com até 256 hosts cada uma e a classe D, onde um datagrama é dirigido a um grupo de hosts. Os endereços a partir de 1111 estão reservados para uso futuro.

A Internet utiliza a classe C para endereçamento de suas redes e máquinas. Quando um novo provedor de acesso se conecta à ela, ele recebe 256 endereços para serem utilizados pelos seus hosts (ou "usuários"). Como um provedor pode ter mais de 256 clientes, ele utiliza um esquema de alocação dinâmica de IP, ou seja, quando o usuário se conecta ao provedor de acesso, ele recebe um endereço IP, podendo desta forma haver até 256 usuários conectados simultaneamente a um provedor de acesso.

Formato do datagrama IP

O protocolo IP recebe da camada de transporte mensagens divididas em datagramas de 64 kbytes cada um, sendo que cada um destes é transmitido através da Internet, sendo ainda possivelmente fragmentados em unidades menores à medida em que passam por sub-redes. Ao chegarem ao seu destino, são remontados novamente pela camada de transporte, de forma a reconstituir a mensagem original.

O datagrama utilizado pelo protocolo IP consiste em um cabeçalho e um payload, sendo que o cabeçalho possui um comprimento fixo de 20 bytes mais um comprimento variável (figura abaixo).
Cabeçalho IP

O campo VERS identifica a versão do protocolo que montou o quadro. O campo HLEN informa o tamanho do quadro em palavras de 32 bits, pois este pode ser variável. O campo SERVICE TYPE indica às sub-redes o tipo de serviço que deve ser oferecido ao datagrama (por exemplo, para transmissão de voz digitalizada necessita-se mais de uma entrega rápida do que um controle rigoroso de erros, ao passo que para um serviço de transferência de arquivos, o tempo de entrega pode ser sacrificado para se obter um maior controle de erro).

O campo TOTAL LENGTH armazena o comprimento total do datagrama (dados e cabeçalho), com um valor máximo de 65.536 bytes. O campo IDENTIFICATION possibilita ao host determinar a que datagrama pertence um fragmento recém-chegado (todos os fragmentos de um datagrama possuem o mesmo valor). O campo FLAGS é composto de um bit não utilizado seguido por dois bits, DF e MF.

O DF significa Don't Fragment e indica que os gateways não devem fragmentar este datagrama (por incapacidade do destino juntar novamente os fragmentos). MF significa More Fragments, e é utilizado como dupla verificação do campo TOTAL LENGTH, sendo que todos os fragmentos, menos o último possuem este bit setado.

O FRAGMENT OFFSET informa a que posição no datagrama atual pertence o fragmento. O campo TIME TO LIVE é um contador utilizado para se limitar o tempo de vida de um pacote. Quando o datagrama é criado, este campo recebe um valor inicial, que é decrementado toda vez que passa por um gateway. Quando este contador atinge o valor zero, isto indica que a rede está em congestionamento ou que o datagrama está em loop, e o datagrama é descartado.

O campo PROTOCOL indica o protocolo que gerou o datagrama e que deve ser utilizado no destino. O campo HEADER CHECKSUM é utilizado pelos gateways para se fazer uma verificação do cabeçalho (apenas do cabeçalho, não dos dados), para que o gateway não roteie um datagrama que chegou com o endereço errado.

SOURCE IP ADRESS e DESTINATION IP ADRESS são, respectivamente, os endereços de host origem e destino. O campo IP OPTIONS é usado para o transporte de informações de segurança, roteamento na origem, relatório de erros, depuração, fixação da hora e outras. O campo PADDING possui tamanho variável e é utilizado para se garantir que o comprimento do cabeçalho do datagrama seja sempre um múltiplo inteiro de 32 bits. Finalmente, o campo DATA transporta os dados do datagrama.

Roteamento

O roteamento consiste no processo de escolha do caminho através do qual deve ser enviado o dado para o sistema destino. Caso o destino esteja localizado na mesma sub-rede, esta é uma tarefa fácil. Porém quando o destino se encontra em um sub-rede diferente, a transmissão dos dados é feita através de um gateway. O gateway faz o roteamento baseado no endereço IP de destino do datagrama. Se o gateway já estiver conectado à rede para onde o dado deve ser enviado, o problema acabou. Porém, o gateway pode não estar ligado diretamente à rede de destino. Neste caso, a partir da identificação da sub-rede, o endereço físico do próximo gateway na rota é obtido, através de processos de mapeamento. É importante observar que o gateway utilizado em uma rede internet possui funcionalidades distintas das normalmente aplicadas a ele nas redes OSI.

O roteamento pode, então, ser dividido em dois tipos:

· roteamento direto: quando o destino do datagrama se encontra na mesma sub-rede;

· roteamento indireto: quando o destino se encontra em outra sub-rede, necessitando de um gateway para o roteamento;

Para realizar o roteamento indireto, os gateways utilizam tabelas de roteamento, que armazenam informações sobre como atingir cada sub-rede da rede internet. Uma tabela de roteamento possui, tipicamente, entradas do tipo (N,G), onde N é um endereço IP (de destino) e G é o endereço IP do próximo gateway a ser utilizado para se atingir N (figura abaixo):
Tabela de Roteamento

Para diminuir o tamanho das tabelas de roteamento, existem algumas técnicas a serem utilizadas. Por exemplo, pode-se utilizar rotas default (pré-estabelecidas) para quando não se encontra referência na tabela sobre uma determinada rota. Este caso se aplica tipicamente para redes que possuem um único gateway, como por exemplo, departamentos de uma universidade ligados ao backbone por apenas um gateway. Ao invés de se ter uma rota para cada sub-rede, utiliza-se a rota default.

Algoritmos de Roteamento

Um algoritmo de roteamento é a parte do software da camada de rede que tem por objetivo decidir sobre qual linha de saída um pacote que chega deve ser transmitido. Para uma rede que trabalha com datagrama, a decisão deve ser tomada para cada pacote de dados que chega. Já para a rede que trabalha com circuitos virtuais, a decisão de roteamento deve ser tomada apenas quando se estabelece um circuito virtual.

Quando uma máquina M tem um datagrama a ser enviado, ela deve executar os seguintes passos:

· retirar do datagrama o endereço IP do destinatário (IPD);

· a partir do IPD obter o id.rede da sub-rede de destino (IRD);

· caso o IRD corresponda a uma rede na qual a máquina M está diretamente conectada, enviar o datagrama diretamente a IPD (roteamento direto);

· senão, se IRD aparece na tabela de roteamento, rotear o datagrama como especificado na tabela;

· senão, se foi especificado um gateway pré-definido na tabela de roteamento, rotear o datagrama conforme especificado na tabela;

· senão, indicar situação de erro utilizando, por exemplo, o protocolo ICMP.

Existem basicamente dois tipos de algoritmos utilizados em redes internet: Vetor-Distância e Estado-do-Enlace, porém não nos compete entrar em detalhes sobre eles neste momento.

Fragmentação e Remontagem de Datagramas

Como os datagramas IP atravessam redes das mais diversas tecnologias, os tamanhos dos quadros nem sempre devem ser os mesmos. Portanto deve haver uma certa flexibilidade em termos de tamanho de pacote a ser transmitido, de forma a este pacote se adaptar à sub-rede que vai atravessar.

Esta flexibilidade se dá através da facilidade de fragmentação e remontagem de datagramas.

Quando for necessário transmitir um datagrama maior do que o suportável pela rede, deve-se particionar o pacote em fragmentos. Estes fragmentos são transportados como se fossem datagramas independentes. Para poder recompor o datagrama original no destino, são utilizados alguns campos do cabeçalho do datagrama.

Quando o destino recebe o primeiro fragmento, inicia-se uma temporização para se aguardar o conjunto completo dos fragmentos que compõem o datagrama. Caso um dos fragmentos não chegue durante este intervalo, o datagrama é descartado, acarretando em uma perda de eficiência. 

Camada de Transporte

A camada de transporte tem o objetivo de prover uma comunicação confiável entre dois processos, estando eles ocorrendo dentro da mesma rede ou não. Ela deve garantir que os dados sejam entregues
livres de erros, em seqüência e sem perdas ou duplicação.

A Arquitetura Internet especifica dois tipos de protocolos na camada de transporte: o UDP (User Datagram Protocol) e o TCP (Transmission Control Protocol). O UDP é um protocolo não orientado à conexão que pode ser considerado como uma extensão do protocolo IP, e não oferece nenhuma garantia em relação à entrega dos dados ao destino.

Já o protocolo TCP oferece aos seus usuários um serviço de transferência confiável de dados, através da implementação de mecanismos de recuperação de dados perdidos, danificados ou recebidos fora de seqüência, minimizando o atraso na sua transmissão.

A cada fragmento transmitido é incorporado um número de seqüência, de forma a não se perder a ordem dos segmentos a serem juntados para formar o datagrama. Existe um mecanismo de reconhecimento para executar essa função que funciona da seguinte forma: o reconhecimento transmitido pelo receptor ao receber o segmento X é o número do próximo segmento que o receptor espera receber (X+1), indicando que já recebeu todos os segmentos anteriores a este. Através da análise dos números de segmento, o receptor pode ordenar os segmentos que chegaram fora de ordem e eliminar os segmentos duplicados.

Com base no checksum que é adicionado a cada segmento transmitido, os erros de transmissão são tratados e os segmentos danificados são descartados. Existe ainda um controle de fluxo baseado no envio da capacidade de recebimento do receptor, contado a partir do último byte recebido, ao transmissor. Desta forma o transmissor consegue controlar a quantidade de dados que são enviados ao receptor para não haver descarte de segmentos nem necessidade de retransmissão, que ocasionam a queda do desempenho da rede.

Para permitir que vários usuários (processos de aplicação) possam utilizar simultaneamente os serviços do protocolo TCP, foi criado o conceito de porta. Para não haver problemas de identificação de usuários, o identificador da porta é associado ao endereço IP onde a entidade TCP está sendo realizada, definindo assim um socket. A associação de portas a processos de aplicação (usuários) é tratada de forma independente por cada entidade TCP. No entanto, processos servidores que são muito utilizados, como FTP, Telnet, etc, são associados a portas fixas, divulgadas aos usuários. Uma conexão é identificada pelo par de sockets ligados em suas extremidades. Um socket local pode participar de várias conexões diferentes com sockets remotos.

Uma conexão pode ser utilizada para transportar dados em ambas as direções simultaneamente, ou seja, as conexões TCP são full-duplex.

É importante observar aqui que quando se fala que o TCP é orientado à conexão, não se fala em conexão a nível físico, mas sim a nível lógico. Este conceito pode ser compreendido através da figura
abaixo.
Serviços orientados e não orientados à conexão

No caso da figura acima, a máquina A quer se comunicar com a máquina B através de uma rede em anel utilizando TCP/IP. A única conexão física que existe entre A e B é através do anel, passando pelas máquinas C e D. A nível de IP, a comunicação não é orientada à conexão, portanto é muito simples enxergar que os dados possuem apenas dois caminhos para ir de A até B: através de C ou através de D.

A nível de TCP, porém, a comunicação entre os computadores A e B ocorre como se houvesse uma conexão direta entre eles. Isso implica que, se a nível de IP os dados podem chegar fora de ordem, o TCP tem que garantir a ordenação destes dados, de forma que eles sempre chegem na ordem correta, como aconteceria se houvesse uma conexão física direta entre A e B.

Camada de aplicação

As aplicações na arquitetura Internet, ao contrário do que ocorre com as OSI, são implementadas de uma maneira isolada, ou seja, não existe um padrão que defina como deve ser estruturada uma aplicação. Cada aplicação possui seu próprio padrão, correspondente a um RFC (Request for Comments).

RPC (Remote Procedure Call)

O RPC é um mecanismo criado para suportar aplicações distribuídas baseadas em um modelo cliente/servidor.

A aplicação cliente faz uma chamada de procedimento remoto onde o RPC, de forma automática, obtém os valores dos argumentos da chamada, monta a mensagem correspondente, a envia ao servidor e aguarda a resposta, armazenando os valores retornados nos argumentos definidos na chamada. Na realidade, o que ocorre é a mesma coisa que nas chamadas de funções locais comumente encontradas em aplicações, com a diferença que a execução real da função está ocorrendo em um local remoto.
Funcionamento de uma RPC

SMTP (Simple Mail Transfer Protocol)

O SMTP é o protocolo utilizado no correio eletrônico da arquitetura TCP/IP. Ela prevê uma interface com o usuário para enviar e receber mensagens que são armazenadas, inicialmente, em uma área de transferência de mensagens do sistema para serem, posteriormente, enviadas em background, conforme a figura abaixo.
Funcionamento do SMTP

O SMTP enxerga a mensagem como que dividida em duas partes: o corpo e o cabeçalho. O corpo da mensagem é onde são enviadas as mensagens propriamente ditas, sendo que o cabeçalho contém dados de endereçamento, assunto da mensagem etc. O protocolo SMTP não provê mecanismos sofisticados de controle de envio e recebimento de mensagens, tais como notificações, segurança de violação, criptografia dentre outros.

FTP (File Transfer Protocol)

O FTP provê serviços de transferência, renomeação e remoção de arquivos, bem como criação, remoção e modificação de diretórios, entre outros. Para que um serviço FTP seja prestado, são estabelecidas duas conexões TCP entre o cliente e o servidor: uma para a transferência dos dados e outra para controle. A confiabilidade das transferências de arquivos realizadas fica por conta do protocolo TCP, já que o FTP não possui nenhuma função de controle adicional sobre os arquivos, a não ser a exigência da senha do usuário para permitir a transferência. O FTP pode transmitir dois tipos de arquivos: arquivos texto (com dados no formato ASCII ou EBCDIC) ou arquivos binários (dados enviados como uma seqüência de bytes sem qualquer conversão).

TELNET (Terminal Virtual)

O TELNET é o protocolo utilizado para se permitir que o usuário de um sistema acesse um sistema remoto através de uma sessão de terminal, operando como se estivesse diretamente conectado neste sistema.

DNS (Domain Name System)

O DNS é o mecanismo utilizado pelo TCP/IP que define um sistema de nomes baseado em uma estrutura de árvore, que possibilita uma nomeação organizada de sistemas de domínio universal. O DNS estabelece a sintaxe de nomes e regras para delegação de autoridade sobre os nomes além de implementar um algoritmo computacional eficiente para mapear nomes em endereços.

Os nomes das máquinas são divididos em partes separadas por pontos correspondendo cada parte a um novo domínio de autoridade, em que o primeiro nome corresponde ao nível mais baixo e o último ao nível mais alto da hierarquia. No caso do nível mais alto, foram designados os seguintes nomes:

· ARPA - identificação do host da ARPA;

· COM - organizações comerciais;

· COUNTRY - qualquer país que utilize o padrão ISO3166 para nomes de país;

· EDU - instituições educacionais;

· GOV - instituições governamentais;

· INT - organizações internacionais;

· MIL - grupos militares;

· ORG - outras organizações.

A figura abaixo representa uma estrutura de nomes onde, por exemplo, o nome cctmn.inatel.br representa o domínio do CCTMN do INATEL.
Estrutura de nomes utilizada pelo DNS

Gerenciamento TCP/IP

O gerenciamento de uma rede TCP/IP se baseia no protocolo SNMP - Simple Network Management Protocol. O SNMP é um protocolo da camada de aplicação que atua sobre o UDP - User Datagram Protocol. A figura abaixo mostra a configuração típica da implementação do protocolo SNMP. O protocolo UDP é um protocolo não orientado à conexão, e a sua utilização (ao invés do TCP) se explica pelo fato de que não deve haver interrupções na comunicação de mensagens SNMP. No caso do TCP, uma interrupção em uma conexão, ou rota, influiria no desempenho do sistema de gerência. 

Ao se utilizar um serviço de datagrama, apesar de se obter um serviço de menor qualidade, esta limitação é contornada, pois em caso de impossibilidade de utilização de uma rota, outra rota é automaticamente escolhida.
SNMP

O gerenciamento de uma rede TCP/IP é baseado na estrutura agente-gerente, onde o gerente faz as requisições das operações a serem executadas sobre os recursos gerenciados. Estas requisições são enviadas ao agente, que executa as operações sobre os objetos gerenciados (abstrações dos recursos gerenciados para o agente). Através de uma interface, estas operações realizadas nos objetos gerenciados se refletem nos recursos gerenciados, e geralmente uma resposta é enviada de volta ao gerente, completando a operação de gerenciamento.

O protocolo SNMP é baseado no paradigma conhecido como fecth-store (busca-armazenamento), ou seja, todas as operações previstas para este protocolo são derivadas de operações básicas de busca e armazenamento. Estas operações básicas incluem:

· get-request: leitura do valor de uma variável;

· get-next-request: leitura do valor da próxima variável;

· get-response: resposta à operação de leitura;

· set-request: gravação do valor de uma variável;

· trap: notificação da ocorrência de um evento específico.

Segundo Marshall Rose, "o impacto do gerenciamento de rede adicionado para gerenciar os nós deve ser mínimo, refletindo o menor denominador comum. Cada nó é visto como tendo algumas variáveis. 

Pela leitura dos valores destas variáveis, o nó é monitorado. Alterando os valores destas variáveis, o nó é controlado".

Em decorrência disto, os agentes SNMP são simples e executam operações elementares, como estabelecer e obter valores das variáveis. O programa que analisa, manipula, combina ou aplica algum algoritmo sobre os dados deve residir no gerente. 

Comparação entre as arquiteturas TCP/IP e OSI

Atualmente, com a necessidade da utilização de modelos abertos em sistemas de comunicação, torna-se imprescindível conhecer os dois principais modelos que visam atender esta necessidade (o modelo OSI e o modelo TCP/IP) e suas diferenças.

A principal diferença entre os dois, é que o modelo OSI evoluiu de uma definição formal elaborada por comissões da ISO para o desenvolvimento de produtos, enquanto que o TCP/IP nasceu da necessidade do mercado e da demanda de produtos para resolver o problema de comunicação e a partir daí passou por uma série de implementações onde muitos produtos foram desenvolvidos fora da arquitetura internet, passando a ser incorporados a ela.

Vale então dizer que a arquitetura OSI é considerado um modelo de jure, enquanto que arquitetura internet é considerada um modelo de facto.

Analisando-se comparativamente a estrutura dos dois modelos (figura abaixo), pode-se observar que a parte referente às sub-redes de acesso da arquitetura internet corresponde à camada física, à de enlace e, parcialmente, à de rede do modelo OSI, sem que haja nenhuma padronização neste sentido.
O IP corresponde à camada de rede, enquanto o TCP e o UDP oferecem serviços semelhantes aos prestados, respectivamente, pelos protocolos de transporte orientados e não-orientados à conexão do modelo OSI. Nas camadas superiores, a arquitetura Internet coloca sob responsabilidade da aplicação os serviços fornecidos pelas camadas de sessão, apresentação e aplicação do modelo OSI.
Comparação entre as arquiteturas OSI e TCP/IP

O fato da arquitetura TCP/IP possuir menos camadas que o modelo OSI implica na sobrecarga de algumas camadas com funções que não lhe são específicas. Por exemplo, podemos citar a transferência de arquivos: no ambiente TCP/IP, as funções correspondentes à camada de apresentação OSI são desempenhadas pelo próprio protocolo de transferência de arquivos FTP. Por outro lado, o TCP/IP nos fornece aplicações simples, eficiente e de fácil implementação a nível de produtos. Uma das maiores limitações da arquitetura TCP/IP é quanto a sua capacidade de endereçamento, que já está se tornando limitada, devido ao crescimento da Internet.

Já a arquitetura OSI sofre críticas por apresentar "modelos e soluções acadêmicas" e objetivar atendimento a requisitos de propósito geral em detrimento de soluções imediatas, compatíveis com as exigências atuais dos usuários. É também criticada por não apresentar meios de migração entre as arquiteturas atualmente em funcionamento e suas soluções.

Diante desta situação, observa-se atualmente um emergente esforço de aproximação entre as duas arquiteturas, objetivando-se aproveitar o que cada uma tem de melhor a oferecer, de forma a se encontrar soluções mistas.

sexta-feira, 16 de setembro de 2011

Acordo de Nível de Serviço

Publiquei no meu Scribd um acordo de nível de serviço - service level agreement ou SLA - fictício feito por mim como atividade avaliativa da disciplina de Gerenciamento de serviços de TI pelo modelo COBIT, da especialização em Governança de TI da Unisul.

Clique aqui para acessar

Request for Information

Publiquei no meu Scribd um RFI fictício feito por mim como atividade avaliativa da disciplina de Gerenciamento de serviços de TI pelo modelo COBIT, da especialização em Governança de TI da Unisul.

Clique aqui para acessar