Ciência da Computação


A Implementação de uma Rede de Computadores com os Sistemas Operacionais Unix e WindowsNT Utilizando o Protocolo TCP/IP e o Gerenciador de Arquivos Distribuídos NFS

Marcio Luís Bertella*

Neilor Avelino Tonin**

 

Resumo: A Implementação de uma Rede de Computadores consiste na interligação de vários computadores de forma que estes possam compartilhar informações. Nesse processo podem ser utilizados vários tipos de softwares existentes. Neste artigo, é apresentado um estudo referente á implementação de uma redes de computadores utilizado-se alguns destes softwares. São abordadas algumas características dos sistemas operacionais Unix e WindowsNT e do protocolo TCP/IP. Também é abordada a conexão do TCP/IP com cada um dos dois sistemas operacionais. A seguir é feito um estudo sobre o gerenciador de arquivos distribuídos NFS, sua utilização, conexão com os demais sistemas, características e modo de funcionamento. Por fim é apresentado um estudo de caso e a seguir as conclusões.

Palavras – chave: Rede de Computadores, Sistema Operacional, Protocolo, Gerenciador de Arquivos Distribuídos.

Abstract: The implementation of a computer network consists in several computers sharing information. With this process several types of existent softwares can be used in that process. This work includes a study referring to an imprementation of a computer network, using some of these softwares. Some features about Unix and WindowsNT operation systems and TCP/IP protocol are mentioned as well as the conection with each one of these systems. Also a study about the distributed file manager NFS, its use, conection with other systems, features and its working way is presented. Finally, it is presented a case study and the conclusions.

Keywords: Computer Networks, Operation System, Protocol, Distributed File Manager.

 

1 Introdução

A humanidade vem sofrendo mudanças radicais nos últimos anos. Fatos históricos como a descoberta da energia elétrica e a revolução industrial estabeleceram marcos do início de uma nova era. Uma nova era em que todo o conhecimento produzido pela humanidade dobra num espaço de tempo cada vez mais curto. Os processos manuais de manipulação das informações tornaram-se ultrapassados e ineficientes diante da enormidade do volume de informações a serem processadas.

A concorrência também obriga aos administradores de empresas a tomarem decisões rápidas e precisas, baseadas em informações corretas e atualizadas para poderem acompanhar o ritmo cada vez mais acelerado de mudanças no mercado. As ultrapassadas técnicas de manipulação de dados, devido à sua lentidão, imprecisão e conseqüente ineficiência, têm que ser substituídas por outras que possibilitem aos administradores terem rapidamente em mãos, informações atuais e precisas que os auxiliem na tomada de decisão. Com o auxilio do computador e da informática em geral, os processos que antes eram executados manualmente, começaram a ser automatizados, proporcionando um maior dinamismo e segurança na manipulação das informações.

As redes de computadores podem ser implementadas de várias maneiras diferentes. Também existe uma grande variedade de hardwares e softwares que podem ser utilizados em cada tipo de implementação. Cabe aos profissionais de informática realizar um estudo minucioso a fim de definir corretamente qual configuração ou topologia de rede é a mais adequada para cada caso e, também, que hardwares e softwares devem ser utilizados. Nesse estudo devem ser levados em conta fatores como desempenho, segurança, confiabilidade, disponibilidade e custo, dentre vários outros, para que a relação custo-benefício se mantenha equilibrada e para que a rede implementada seja uma rede segura, consistente e de fácil gerenciamento e operação, atendendo às necessidades da empresa.

2 Unix

2.1 Arquitetura do Unix

O Unix é composto de quatro partes básicas – o kernel, o sistema de arquivo, o shell e as ferramentas:

2.1.1 Kernel

Algumas funções dos sistemas operacionais são necessárias muitas vezes num curto espaço de tempo. Por exemplo, a parte do sistema Unix que se envolve na mudança de um programa para outro (no caso de tempo compartilhado) é solicitada muitas vezes a cada segundo. Com o objetivo de otimizar a performance, no sistema Unix todas as funções que são necessárias muitas vezes no decorrer do processamento e num curto espaço de tempo são mantidas constantemente na memória. Esse conjunto de funções é a parte residente na memória de um sistema operacional e é chamada de kernel ou núcleo.

Em contrapartida, muitas funções de sistemas operacionais são necessárias apenas ocasionalmente. Estes tipos de funções podem ser fornecidos por programas utilitários, os quais são solicitados de acordo com a demanda dos usuários. Com isso o kernel fica menor e pode ser carregado totalmente na memória. No sistema Unix pode-se incrementar o estoque de utilitários com certa facilidade, bastando para isso escrever um programa novo que implemente as funções desejadas e acrescentando o mesmo ao conjunto de utilitários já existentes.

O Kernel do Unix, dentre outras funções, realiza as seguintes atividades:

2.1.2 O Shell

Um dos programas mais importantes do sistema Unix é o shell. O shell é um programa interativo como vários outros programas utilizados no Unix. Pode-se controlar o shell através de comandos que ele mesmo interpreta (decodifica) e executa. Devido a essa característica, um nome técnico dado ao shell é interpretador de comandos.

No Unix, o shell tem duas funções: interpretar os comandos de linha fornecidos pelo usuário e, quando digitado dentro de um arquivo de lote (scripts), atua como linguagem de programação. Para se criar programas-scripts, pode ser utilizado o editor de texto "vi" do Unix.

A função básica de um interpretador de comandos é fazer com que os comandos inseridos sejam executados. Por exemplo, se o usuário quiser rodar o programa que mostra a data e a hora na tela, insere o comando "date" e o shell fará com que este programa seja executado pelo sistema Unix.

Em muitos sistemas o interpretador de comandos é uma parte da estrutura interna do sistema operacional. No sistema Unix, o shell é meramente um programa comum, semelhante ao programa da data ou a qualquer outro programa que rode no sistema Unix. O único diferencial do shell sobre os demais programas é o fato de ele ser central à maioria das interações com o sistema Unix, de fazer o papel de intermediador entre o sistema Unix e o usuário [6].

2.1.3 O sistema de arquivos

O sistema de arquivos é a estrutura organizacional do grupo de arquivos. A utilização de um sistema de arquivos simples pode ser eficiente se usado em um modelo computacional simples. Já em um modelo computacional mais complexo, como um sistema multiusuário, um sistema de arquivos simples não é apropriado.

O desenvolvimento do sistema de arquivos do Unix levou em consideração algumas idéias básicas. A idéia mais importante foi conveniência. O sistema de arquivos deveria instigar os usuários a agruparem seus arquivos de maneira lógica e que facilitasse a sua manipulação posteriormente. O sistema de arquivos desenvolvido usa o conceito de diretórios para armazenar conjuntos de arquivos. Os usuários podem, então, criar vários diretórios diferentes para armazenar conjuntos de arquivos diferentes, de acordo com sua necessidade ou senso organizacional.

Outra idéia importante foi a de hierarquizar os vários diretórios. Os usuários podem criar subdiretórios dentro de seus diretórios, de forma a criar uma estrutura de diretórios com vários níveis hierárquicos. Isso facilita ainda mais a distribuição e armazenamento dos arquivos de maneira lógica e de fácil manuseio.

Em um computador multiusuário, o sistema de arquivos necessita ainda implementar um sistema de restrição de acesso aos arquivos. Isto se faz necessário para garantir a segurança dos arquivos que estão gravados.

O acesso ao hardware no sistema Unix se dá através de acessos a arquivos especiais. Cada dispositivo de E/S possui pelo menos um arquivo especial associado. Um programa pode acessar um arquivo especial para acessar o hardware de E/S.

2.2 Auditoria

Quanto maior o nível de auditoria desejado para o sistema, mais o desempenho do mesmo será afetada. Com a auditoria habilitada, a criação de arquivos de transação e logs (gravação de ocorrências) será o agravante para a queda do desempenho do sistema [1].

2.3 Segurança

A segurança de um sistema é sua flexibilidade em face da adversidade. Se acontecer algum acidente inesperado com o sistema, como perda de arquivos ou acesso não autorizado aos arquivos, então ele é inseguro. Um sistema seguro trabalha confiantemente, mantém e protege os arquivos dos usuários. Apesar de ainda não existir um sistema de computador completamente seguro, grandes esforços estão sendo feitos nesse sentido.

O Unix possibilita vários níveis de senha de acesso e auditoria, restringindo filesystems, diretórios, contas especiais para administradores de subsistemas e gerenciamento de impressoras, redes e outros grupos. O administrador do sistema é responsável por usar de maneira correta estes recursos oferecidos pelo Unix para manter o sistema seguro. Além disso, outros cuidados devem ser tomados, cuidados como limitar o número de pessoas que conhecem e usam a senha de superusuário, limitar o acesso ao console do sistema ou qualquer outro terminal para evitar que pessoas que não são confiáveis acessem o sistema e possam quebrar o esquema de segurança.

Com o objetivo de estabelecer critérios de avaliação de segurança de sistemas de computação, o Departamento de Defesa dos Estados Unidos criou o National Computer Security Center (NCSC). Este órgão definiu para o sistema operacional Unix System V release 3.2 um nível de segurança C2.

2.4 Portabilidade

A portabilidade é a possibilidade dos programas que rodam em um determinado equipamento operem normalmente em outro diferente. Um programa com alta portabilidade é um programa que pode ser implantado em vários tipos diferentes de plataformas com pouca ou nenhuma modificação. Devido ao fato de o kernel do Unix ser predominantemente escrito em C, isso o tornou portável para várias plataformas [1].

3 Windows NT

3.1 O Funcionamento do WindowsNT

O WindowsNT é organizado usando um modelo cliente/servidor. Os códigos são executados em dois modos diferentes, o modo usuário e o modo kernel. A finalidade de se ter dois modos é reforçar o controle do sistema operacional sobre o computador, pois, esse esquema impede que um programa aplicativo acesse inadequadamente um recurso do sistema.

3.1.1 Modo Usuário

Os programas executados no modo usuário são os programas aplicativos. Um programa executando em modo usuário não pode interagir diretamente com o hardware do computador ou com os níveis mais baixos do sistema operacional. Para obter acesso ao hardware e aos serviços de baixo nível, o aplicativo interage com a interface do kernel do sistema operacional.

3.1.2 Modo Kernel

O que roda em modo kernel, geralmente é o próprio núcleo do sistema operacional e os seus serviços. No modo kernel, um serviço do sistema tem acesso a todos os serviços do sistema e ao próprio hardware, ou seja, o modo kernel tem acesso total à máquina.

Diferentemente da maior parte dos demais sistemas operacionais tradicionais, nos quais todo o sistema operacional roda em modo kernel, o WindowsNT move a maior parte dos serviços do sistema operacional para fora do kernel, executando-os em modo usuário. Isso torna o kernel do WindowsNT muito pequeno, mantendo nele apenas um planejador (que gerencia as tarefas em execução no sistema), o código de interface com o hardware e o código que se comunica com os chamados servidores, que são os serviços que não estão mais rodando no modo kernel e sim no modo usuário.

Mesmo com o WindowsNT movendo a maior parte de seus serviços de sistema para fora do kernel e transformando-os em servidores rodando no modo usuário, um programa aplicativo não interage diretamente com esses servidores. No WindowsNT, os servidores continuam inteiramente protegidos e isolados dos programas aplicativos e a maneira como essa proteção é proporcionada é a principal característica do modelo cliente/servidor.

O modelo cliente/servidor baseia-se na passagem de mensagens entre o programa aplicativo e os servidores que este utiliza, de forma que, a única maneira de um programa aplicativo (o cliente) acessar um serviço do sistema (o servidor) é passando uma mensagem para o kernel. O kernel, por sua vez, retorna as informações para o programa aplicativo. Dessa forma, um programa aplicativo nunca pode se comunicar diretamente com um servidor. Toda a comunicação é encaminhada através do kernel, e qualquer acesso inadequado é eliminado tornando possível ao sistema operacional manter o controle completo do computador mesmo com um kernel de tamanho reduzido.

3.2 Principais Características da Arquitetura do WindowsNT

Quando a Microsoft iniciou o desenvolvimento do WindowsNT, estabeleceu vários objetivos a serem alcançados na caracterização da arquitetura do seu novo sistema operacional. Apesar de alguns sistemas operacionais de microcomputador implementarem algumas dessas características, o WindowsNT é a primeira plataforma planejada desde o início para incorporar todas elas. Elas tornam o WindowsNT uma plataforma firme e bem estruturada.

3.2.1 Operação Protegida em 32 Bits

Para oferecer uma maior proteção entre as aplicações e isolamento entre os processos o WindowsNT foi desenvolvido em 32 bits e utilizando o hardware de gerenciamento de memória das CPUs das séries Intel x86, MIPS R4000 e DEC Alpha, assim, no NT um processo representa um programa de aplicação ou um dos subsistemas do sistema operacional.

O WindowsNT utiliza um sofisticado esquema de gerenciamento de memória virtual, baseado em um modelo de memória virtual paginado por demanda, para tratar das necessidades das grandes aplicações que utilizam intensivamente a memória. O NT possui um gerenciador de memória virtual, o Virtual Memory Manager (VMM), que monitora constantemente a alocação de recursos de memória dentro do sistema operacional. O VMM verifica quando o número de páginas de memória física está quase no fim, então usa um algoritmo LRU (Least Recently Used - Menos Usado Recentemente) que determina quais as páginas que podem ser trocadas para o disco sem prejudicar o desempenho do sistema. À medida que o VMM passa as páginas ociosas para o disco, ele acusa seus endereços de memória como livres o que os torna disponíveis para outros processos dentro do sistema. Quando uma aplicação que teve sua página trocada necessita utilizá-la novamente, é gerada uma falta de página, então, o VMM troca uma página ociosa por essa solicitada colocando-a de volta na memória física.

3.2.2 Multitarefa Preemptiva

O modelo de escalonamento de processador utilizado pelo WindowsNT é o modelo de multitarefa preemptiva. Nesse modelo, o processador pode ser retirado do processo que está executando; é permitida uma atenção imediata aos processos mais prioritários (de tempo real); os tempos de resposta são melhores e ocorre um compartilhamento uniforme do processador, o que assegura um uso tranqüilo e eficiente dos ciclos de CPU do sistema. Os processos individuais podem conter vários threads (linhas) de execução, e cada thread recebe multitarefa preemptiva com relação ao restante do sistema. O escalonamento dos threads individuais é realizado pelo núcleo do WindowsNT que dá a cada thread, na sua criação, um nível de prioridade e esses valores de prioridade são utilizados pelo núcleo para determinar qual thread deve ser executado em seguida. Durante o processamento, podem ocorrer alguns eventos que fazem com que a prioridade de algum thread seja aumentada, ou seja, esse thread precisa ser processado urgentemente, então, o controle da CPU passa para esse thread que teve sua prioridade aumentada, o thread é executado e o controle retorna ao núcleo do NT [3].

Esse modelo de escalonamento baseado em prioridades possui duas exceções principais, isto é, eventos que quando ocorrem, possuem grandes chances de ganharem o processador mesmo que o nível de prioridade do processo que está executando seja alto. Essas exceções são as interrupções de hardware e exceções do processador. Em ambos os casos, quando ocorrer um evento como por exemplo, um dispositivo periférico exigindo atendimento (no caso de interrupção de hardware), ou uma tentativa de uma aplicação de realizar uma divisão por zero (no caso de exceções do processador), o núcleo do NT interrompe o thread em execução e atende a nova prioridade transferindo o controle do processador a uma rotina de tratamento adequada para cada caso.

3.2.3 Portabilidade

Devido ao fato de o WindowsNT ter sido escrito quase que em sua totalidade na linguagem de programação C e C++, acabou por tornar-se um sistema operacional de alta portabilidade entre diferentes plataformas. Apenas algumas funções específicas foram escritas na linguagem assembler, sendo que estas porções não portáveis foram isoladas em módulos específicos.

3.2.4 Segurança em Nível C2

O governo dos Estados Unidos estabeleceu alguns requisitos que devem ser satisfeitos para que um sistema tenha um nível de segurança C2. O WindowsNT foi desenvolvido para que fossem satisfeitos esses severos requisitos de segurança. Os principais são:

3.3 NTFS (New Technology File System)

O WindowsNT oferece uma interface de sistema de arquivo instalável para permitir que sistemas de arquivos adicionais sejam incorporados à plataforma NT. O sistema operacional WindowsNT básico é entregue com drivers de sistema de arquivo instaláveis para FAT do DOS e o NTFS do próprio WindowsNT. O NT ainda oferece suporte ao POSIX que é uma interface portável de sistema operacional baseada no Unix. O NTFS é o sistema de arquivo nativo do sistema operacional WindowsNT, sendo o único sistema a aceitar a faixa completa de recursos de segurança do NT. O NTFS possui algumas outras vantagens e desvantagens em relação aos outros sistemas de arquivos:

3.3.1 Vantagens do NTFS

3.3.2 Desvantagens do NTFS

3.4 Subsistemas de Ambiente

O WindowsNT implementa alguns subsistemas de ambiente protegido para facilitar a compatibilidade com os padrões de API existentes e oferecer uma base firme para implementação de proteção. Os subsistemas implementados são: POSIX, OS/2 Character Mode (Oferece suporte para as aplicações no modo de caracteres do OS/2) e Win32, e ainda, duas derivativas de uso especial do subsistema Win32 que são as VDMs: Virtual DOS Machine do DOS e a VDM Win16. Cada subsistema simula em particular um ambiente de sistema operacional e executa dentro do seu próprio espaço de endereço, com exceção do subsistema Win32 [3].

3.4.1 O subsistema Win32

O subsistema Win32 é o principal subsistema do WindowsNT, devido ao fato de ser ele o elo que une todos os outros subsistemas. Entre outras funções, o subsistema Win32 oferece para todos os outros subsistemas serviços de tela, teclado e I/O para mouse, sendo responsável pela criação e gerenciamento das VDMs do DOS e da VDM Win16. A Win32 recebe também chamadas do subsistema de segurança, que é responsável pela permissão de acesso do usuário ao sistema.

Como o subsistema Win32 executa um papel importante dentro do WindowsNT, ele não pode falhar, pois, uma falha no subsistema Win32 tem o potencial para destruir todos os outros subsistemas e até mesmo o próprio WindowsNT [3].

3.4.2 A VDM Win16

O WindowsNT implementa um ambiente Win16 protegido que simula um sistema Windows 3.1 em funcionamento, para manter a compatibilidade com os sistemas operacionais Windows 3.1 de 16 bits e o Windows for Workgroups 3.1. Na maioria dos casos, não se percebe diferenças entre a maneira como programas Windows 3.1 e programas NT são executados, exceto pela maior rapidez de execução dos programas de 32 bits do NT.

3.4.3 As VDMs do MS-DOS

Implementadas pelo WindowsNT para manter a compatibilidade com o MS-DOS.

3.4.4 O Subsistema POSIX

POSIX é um conjunto de padrões que define um sistema baseado no Unix por um conjunto de chamadas do sistema, bibliotecas e ferramentas. É uma especificação de interface de programação, semelhante à interface de programação Win32. É implementado pelo WindowsNT como um subsistema protegido para oferecer suporte para aplicações Unix.

Devido à arquitetura do WindowsNT, outras aplicações são protegidas contra falhas de uma aplicação POSIX. Como o WindowsNT está de acordo com o padrão POSIX, muitos fornecedores de aplicações para Unix podem passar seus pacotes para a plataforma WindowsNT. Com isso acontecendo, a conectividade transparente entre o WindowsNT e o Unix se torna ainda mais evidente.

3.5 Performance

3.5.1 Componentes de hardware que influenciam na performance do WindowsNT

A tarefa de determinar quais componentes de hardware influenciam mais na performance do WindowsNT é uma tarefa complexa, e deve ser executada por especialistas.

A dificuldade reside no fato de que os componentes variam de aplicação para aplicação, isto é, é necessário fazer uma análise específica a fim de determinar para qual tipo de aplicação o WindowsNT está sendo utilizado para determinar sobre qual componente deve-se dedicar mais atenção [9].

Basicamente, os principais componentes que são alvo de um processo de otimização são: CPU; Memória e Disco.

Dependendo do tipo de aplicação que está sendo utilizada no WindowsNT, um ou mais destes componentes pode aparece como fator limitante da performance do sistema e se tornar alvo principal do processo de otimização do hardware.

O WindowsNT é um sistema operacional bastante flexível no que se refere aos componentes citados acima, permitindo grandes expansões quando houver necessidade.

3.5.2 Otimização automática de performance

O WindowsNT foi projetado com uma série de mecanismos internos com o objetivo de permitir que ele se ajuste automaticamente para otimizar sua performance [9]. Dentre estes mecanismos pode-se destacar:

3.6 NT e Unix

O Unix e o WindowsNT possuem muitas características semelhantes. São sistemas operacionais de 32 bits com multitarefa preemptiva e protegidos, possibilitam a utilização de nomes longos para arquivos, possuem um modelo de memória virtual que oferece a cada processo seu próprio espaço de endereçamento único e seus processos são isolados um do outro por meio do hardware de gerenciamento de memória da CPU. São sistemas que trabalham inerentemente em rede, portáveis e trabalham em uma grande faixa de estações de trabalho e sistemas de multiprocessamento de última geração.

Uma característica negativa do Unix em relação ao WindowsNT é a sua falta de uma compatibilidade coerente entre plataformas, o que faz com que as aplicações do Unix normalmente sejam específicas à plataforma ou à marca, diferentemente do WindowsNT, onde, qualquer aplicação Win32 pode rodar em qualquer sistema aceito pelo WindowsNT.

O sistema operacional Unix foi promovido principalmente por vendedores de hardware, que o modificaram para tirar proveito dos pontos fortes específicos do sistema. Essas modificações em muitos casos acabaram por introduzir algumas incompatibilidades no sistema que prejudicaram o suporte para aplicações entre plataformas. Em alguns casos, dois sistemas, ambos rodando a mesma versão geral e revisão do Unix, podem ou não ser capazes de rodar a mesma aplicação sem modificação. Essa falta de coerência causou um grande prejuízo ao Unix como plataforma de sistema operacional de uso geral. Muitos esforços estão sendo realizados no sentido de tentar padronizar o Unix com a finalidade de ter coerência entre plataformas.

Apesar dessas diferenças, pode-se criar um ambiente misturado Unix/NT e empregar cada plataforma conforme forem as necessidades, devido ao fato de que o NT possui uma série de ferramentas de integração, incluindo aplicações FTP e Telnet, bem como suporte para TCP/IP, o padrão de interligação em rede do Unix.

4 TCP/IP

4.1 Introdução

O TCP/IP (Transmission Control Protocol/Internet Protocol) é o nome que se dá a toda uma família de protocolos utilizada nas comunicações de computador. Esta família de protocolos foi desenvolvida pela DARPA (Defense Advanced Research Project Agency) no Departamento de Defesa dos Estados Unidos.

Este conjunto de protocolos foi desenvolvido para permitir aos computadores compartilharem recursos numa rede. Toda a família de protocolos inclui um conjunto de padrões que especificam os detalhes de como comunicar computadores, assim como também convenções para interconectar redes e rotear o tráfego.

O TCP e o IP são protocolos individuais que podem ser apresentados de modo isolado, mas eles não são os únicos protocolos que compõem essa família. Pode acontecer de um usuário do TCP/IP não utilizar o protocolo TCP propriamente dito, mas sim alguns dos outros protocolos da família. A utilização do nome TCP/IP nessa situação não deixa de ser apropriada porque o nome se aplica de modo genérico ao uso de qualquer protocolo da família TCP/IP.

Os protocolos costumam ser agrupados em "famílias" (algumas vezes também denominadas grupos ou pilhas). Os implementadores de protocolos geralmente determinam quais protocolos serão agrupados em uma mesma família. Cada protocolo em uma família permite a utilização de um determinado recurso da rede. Mas ele sozinho não oferece muita utilidade, precisando ser combinado com outros protocolos de sua família.

4.2 Características

4.2.1 Formato de um endereço IP

Para que um protocolo roteável tenha uma capacidade de roteamento eficiente, o endereço deve ser composto por duas partes. Os endereços TCP/IP apresentam dois componentes (ou identificadores): um componente de rede e um componente de nó (ou host). Os endereços utilizados com o TCP/IP são compostos por quatro bytes (32 bits) e denominados simplesmente endereços IP. Esses endereços são gravados em uma notação de pontos padrão, ou seja, cada byte é gravado como um número decimal separado por pontos. Um exemplo seria 192.128.128.2. Como cada parte do endereço IP representa 1 byte, seu valor tem que estar entre 0 e 255 inclusive. Valores acima de 255 não podem ser utilizados pois não cabem em um único byte [8] [10].

Os endereços IP são endereços de nível 3. Os endereços de nível 3 são ditos endereços "virtuais", devido ao fato de que estes endereços não são pertinentes ao hardware e sim configurados e parametrizados pelo software.

Os endereços IP são divididos em cinco classes distintas (A, B, C, D, E). As três classes mais importantes são: A - utilizada para redes com número elevado de hosts; B - utilizada para redes de porte médio a grande e C - indicada para redes que possuam menos de 254 hosts. As classes D e E são reservadas para outros fins e não estão disponíveis.

4.2.2 Modelo de divisão em camadas da interligação em redes TCP/IP

O modelo de divisão em camadas da pilha de protocolos TCP/IP foi desenvolvido através de pesquisas, diferentemente do modelo OSI, que surgiu através de uma comissão normatizadora. O modelo de camadas da arquitetura TCP/IP é formado de cinco camadas e é semelhante ao modelo OSI (Open Systems Interconnection) de sete camadas. As camadas são as seguintes:

4.3 Conexão com o WindowsNT

O TCP/IP é um protocolo de rede que proporciona comunicação através de redes interconectadas constituídas de computadores de diversas arquiteturas de hardware e vários sistemas operacionais. Devido a essa característica e pelo fato de o TCP/IP ser o mecanismo de transporte mais aceito e completo no mundo, a Microsoft decidiu aceitá-lo originalmente. Para o usuário, isso significa que para usar o TCP/IP na comunicação com outros computadores não é necessário nenhum software adicional. Outros produtos gerados por terceiros podem aumentar a funcionalidade do TCP/IP na rede WindowsNT, mas com as ferramentas fornecidas, é possível se conectar a sistemas usando o WindowsNT, a outros produtos de interligação em rede da Microsoft ou sistemas que não são da Microsoft como o Unix. Algumas ferramentas que o WindowsNT não inclui, mas para as quais estão disponíveis recursos de outros fabricantes, são X Windows, NFS, Gopher e ferramentas de desenvolvimento como Xlib e ONC/RPC.

Adicionar o TCP/IP a uma configuração de sistema do WindowsNT oferece as seguintes vantagens:

4.4 Conexão com o Unix

O Unix e o TCP/IP estiveram inter-relacionados praticamente desde que começaram a ser desenvolvidos.

A redução de custos possibilitados pelas implementações comerciais e de domínio público do Unix, que podiam ser instaladas em computadores menores, facilitou a difusão do Unix para muitas empresas e universidades.

Enquanto o Unix estava sendo desenvolvido e aprimorado, a DARPA (Defense Advanced Research Projects Agency - órgão do governo norte-americano que fundou a ARPANET e, mais tarde, a Internet global) estava envolvida em pesquisas referentes a comunicações com o objetivo de desenvolver um sistema de informação para ser usado nos setores de segurança do governo norte-americano. Os resultados dessa pesquisa levaram ao estabelecimento de uma rede chamada ARPANET (Advanced Research Project Agency Network). O objetivo original da rede era interconectar computadores em instituições de pesquisa e instalações militares [2].

Com a preocupação em torno de uma possível interrupção nas comunicações telefônicas, resultante de uma guerra nuclear, foi trabalhado em um conceito de desmontagem de mensagens eletrônicas em pequenas partes, os pacotes. Os pacotes seriam enviados ao seu destino por um caminho que fosse o mais eficiente e, quando todos os pacotes chegassem, poderiam ser remontados formando a mensagem original. Com base nesse conceito, a Bolt Beranek and Newman, financiada pela DARPA, desenvolveu o TCP/IP. Após a sua instalação, a ARPANET foi utilizada para muitas das primeiras experiências com o TCP/IP.

Enquanto o acesso à ARPANET crescia, o Unix também se tornava mais conhecido. A universidade da Califórnia, Berkeley, desenvolveu um software de aprimoramento do Unix, o BSD (Berkeley Software Distribution), criando assim uma versão mais aprimorada do sistema Unix, o Unix BSD. Esse aprimoramento BSD do Unix foi fornecido a outras pessoas, aumentando ainda mais a popularidade do Unix.

A DARPA reconheceu a popularidade do Unix e, tendo já adotado o TCP/IP como o protocolo de comunicação da rede ARPANET, decidiu que a inclusão de recursos de rede ao Unix iria encorajar as universidades a aceitarem o TCP/IP. Para incentivar os pesquisadores das universidades a adotarem e utilizarem os novos protocolos, a DARPA financiou a Bold Beranek and Newman para que criassem um TCP/IP para ser utilizado com o sistema operacional Unix e, ao financiar a universidade da Califórnia, Berkeley, para integrar os protocolos TCP/IP ao Unix BSD, a DARPA conseguiu atingir a maior parte dos departamentos de ciência da computação das universidades.

A Berkeley fez mais do que simplesmente integrar os protocolos TCP/IP ao Unix BSD. Ela desenvolveu um conjunto de utilitários para tirar proveito da nova conectividade. Isso fez com que o software distribuído pela Berkeley se tonasse bastante popular, pois oferecia mais do que protocolos TCP/IP básicos.

As novas facilidades oferecidas para estabelecer conexão e compartilhar informações com outros computadores contribuíram para uma expansão em larga escala de redes como a ARPANET até o advento da Internet.

5 NFS

Desenvolvido pela Sun Microsystems, o NFS (Network File System) fornece acesso a arquivos que são compartilhados on-line, de forma transparente aos usuários e totalmente integrado ao sistema operacional e softwares aplicativos. A arquitetura TCP/IP muitas vezes adota NFS para efetuar a interconexão de seus sistemas de arquivo de computadores. Da perspectiva do usuário, o NFS é praticamente invisível. Um usuário pode executar um determinado programa aplicativo, o qual utilizará diversos arquivos de entrada e saída, não havendo diferenciação nos nomes dos arquivos quanto a sua localidade. O nome dos arquivos não indicam se eles estão localizados na máquina do usuário ou em uma máquina remota [8] [10].

O NFS é um modo transparente para múltiplas plataformas compartilharem dados. Ele pode ser rodado em vários sistemas operacionais, incluindo Unix, DOS, NetWare e Windows NT. Utiliza os mecanismos RPC e XDR, que serão descritos posteriormente. Foi desenvolvido para operar sobre o protocolo UDP da família de protocolos TCP/IP.

5.1 A utilização do NFS

O NFS oferece a possibilidade de criar dispositivos virtuais que conectam diretamente dispositivos remotos e fazem parecer ao usuário e ás aplicações que estes dispositivos estão diretamente conectados ao sistema. Seguem abaixo alguns exemplos de utilização do NFS.

5.2 A Implementação do NFS

Quando um programa aplicativo é executado, ele chama o sistema operacional para abrir um arquivo ou para armazenar e recuperar dados de um arquivo. O mecanismo de acesso a arquivos aceita o pedido e, automaticamente, passa esse pedido ou para o software de sistema de arquivo local ou para o cliente NFS, dependendo de o arquivo estar no disco local ou em uma máquina remota. No caso de o arquivo estar em uma máquina remota, o NFS cliente recebe a requisição e usa o protocolo NFS para contatar o NFS servidor da máquina remota, executando a operação requisitada. Quando o servidor remoto recebe a requisição, processa a mesma e devolve uma resposta (resultado) ao cliente NFS que a encaminha ao programa aplicativo. Um servidor de NFS é um host que possui um ou mais sistemas de arquivos (diretórios) e torna-os disponíveis para a rede. Um cliente NFS é um host que monta um sistema de arquivos remoto (cria um diretório) e o torna disponível para os usuários como se fosse um sistema de arquivos local. Um host pode ser ao mesmo tempo um servidor e um cliente NFS [8] [10].

5.3 RPC e XDR

Em vez de definir o protocolo NFS como uma unidade, os projetistas da Sun Microsystems dividiram o mesmo em três segmentos independentes: o próprio protocolo NFS, um mecanismo de RPC (Remote Procedure Call) para fins gerais e um XDR (eXternal Data Representation), também para fins gerais. Esta divisão foi estrategicamente efetuada para permitir a utilização de RPC e XDR com outros softwares, incluindo programas de aplicação e protocolos. Para um programador, a utilização apenas do NFS, já provê procedimentos de acesso transparente a arquivos remotos, que ele pode utilizar. Esta facilidade gera uma forma de acesso a arquivos transparente quanto à localização física dos mesmos. A utilização de RPC e XDR permite aos programadores a construção de programas distribuídos. Desta forma, um programador pode dividir determinado programa de forma que uma parte execute no cliente e outra no servidor, sendo que o protocolo RPC é utilizado como gerenciador da comunicação. A implementação desta facilidade é feita designando algumas procedures como remotas no cliente, o que força o compilador a incorporar codificação RPC dentro dessas procedures. No servidor, o programador implementa os procedimentos desejados e usa outros recursos RPC para declará-los parte do servidor. Quando um determinado programa do cliente aciona uma procedure remota, automaticamente o RPC cliente coleta valores para argumentos, criando a mensagem e transmitindo a mesma para o servidor, e quando recebe a resposta, armazena os valores retornados pelo servidor nos argumentos correspondentes. O RPC fornece esta comunicação de forma transparente quanto a protocolos utilizados, exigindo pouco conhecimento de protocolos dos programadores usuários desta ferramenta, permitindo aos mesmos a criação de sistemas distribuídos [8] [10].

A grande vantagem do XDR é automatizar grande parte da tarefa de conversão de dados. Ele permite que os programadores escrevam aplicações distribuídas onde são intercambiados dados entre máquinas que os representam de forma distinta, sem que seja necessário escrever procedimentos para compatibilizar as representações.

A solução adotada na ferramenta XDR foi a definição de uma representação independente de qualquer máquina que é usada para codificar os dados intercambiados.

Quando deseja transmitir dados, um programa de aplicação chama os procedimentos XDR que convertem a representação local para a representação de transferência e, em seguida, transmite os dados convertidos. O processo que recebe os dados chama os procedimentos XDR, que convertem a representação de transferência para a representação local específica.

Os programadores não precisam acrescentar ao código dos seus programas as chamadas aos procedimentos XDR. Ao invés disso, eles enviam ao compilador XDR as instruções do programa, as quais declaram os dados que deverão ser transformados, e o compilador automaticamente acrescenta ao código do programa as chamadas aos procedimentos XDR que são necessárias.

6 Estudo de Caso

Foi efetuado um estudo de caso utilizando-se dois computadores, interligados em rede através de um Hub. Um desses computadores tendo como sistema operacional o Unix SCO Openserver 5, nome do computador unix.uri.com, endereço IP 192.128.128.2 e o outro computador com o Windows95, nome do computador win.uri.com e endereço IP 192.128.128.20.

Foi obtido através da Internet uma versão de demonstração do Omni-NFS Server versão 4.0 para Windows NT/98/95 a ser instalada no computador com o Windows95. O Unix já tem o NFS instalado como parte do sistema não sendo necessário, portanto, a instalação do software nesse sistema.

6.1 Instalação do Omni-NFS Server

Para a instalação do NFS foi executado o arquivo de instalação (obtido na Internet). Seguindo os passos normais de instalação, ao surgir a caixa de diálogo que pede o número de série e a senha foi escolhida a opção "Next" deixando em branco os respectivos campos. Na caixa de diálogo que pede o diretório de instalação do NFS, foi aceita a opção sugerida.

Depois desses passos, os arquivos começaram a ser copiados e instalados. Ao final do processo surgiu a caixa de diálogo, que pede se deseja reiniciar o computador imediatamente para completar a instalação ou se deseja esperar para reiniciar posteriormente. Foi escolhida a primeira opção, completando a instalação.

6.2 Configuração do NFS.

Depois de completada a instalação foi dado inicio ao processo de configuração do NFS. O processo de configuração foi realizado em duas etapas, descritas nos itens a seguir.

6.2.1 Configuração do NFS para disponibilizar um diretório do Windows para o Unix.

6.2.1.1 No Unix SCO Openserver 5

a) Foi editado o arquivo /etc/hosts para cadastrar o computador Windows na tabela de servidores adicionando o seguinte:

192.128.128.20 win win.uri.com

b) O próximo passo foi adicionar um filesystem ao sistema. Para isto foi chamado o programa scoadmin, opção Filesystems, FileSystem Mananger, Mount, Add Mount Configuration, Remote e cadastrado o seguinte:

Remote Filesystem Type: NFS

Remote Host: win.uri.com

Remote Diretory: /c (diretório no Windows)

Mount Point: /x (diretório no Unix)

Access Mode: Read/write

Can Users Mount: No

When to Mount: Now – Para montar após a confirmação (a opção At System Startup, é para o filesystem ser montado quando da inicialização do servidor).

6.2.1.2 No Windows

a) Assim como no Unix, também no Windows é necessário cadastrar todos os servidores da rede na tabela de servidores. Para isso foi acessado o menu Iniciar, Configurações, Painel de Controle, Rede, Configurações, selecionado o componente de rede TCP/IP, Propriedades, Endereço IP e cadastrado o endereço IP.

b) A seguir foi acessado o menu Iniciar, Programas, Omni-NFS Server, Host Editor, New e cadastrado o nome dos computadores e o endereço IP. Por exemplo: unix.uri.com e endereço 192.128.128.2 (máquina Unix) e win.uri.com e endereço 192.128.128.20 (máquina Windows). A seguir surgiu uma caixa de diálogo com a pergunta Check one here if you know. Foi selecionada a opção "Yes", e "Next". A seguir surgiu uma última tela de configuração na qual foi foram mantidas as opções padrão, sem informar nome do usuário e a senha e foi finalizada a configuração dos endereços, clicando no botão "Finish".

Depois destes procedimentos, retornou a tela do editor de hosts mostrando o host cadastrado. Isto deve ser feito para todos os servidores da rede, inclusive o que se está instalando o software.

c) Para exportar os diretórios a serem disponibilizados na rede foi acessado o menu Programas, Omni-NFS Server, NFS Server Configuration, opção NEW e escolhidos os diretórios a serem exportados. Foram exportados três diretórios, sendo, dois deles para todos os clientes da rede e um apenas para o cliente "unix.uri.com". A partir destes procedimentos, ficou disponível no Unix um filesystem (diretório) com o nome de x (contendo arquivos do computador Windows), para qualquer operação sobre o mesmo.

6.2.2 Configuração do NFS para disponibilizar um diretório do Unix para o Windows.

Para executar este procedimento, também é necessário cadastrar os servidores na tabela de servidores. Como este procedimento já tinha sido realizado anteriormente, não foi necessário realizá-lo novamente. A configuração do NFS para disponibilizar um diretório do Unix para o Windows foi feita, então, através dos procedimentos descritos nos itens a seguir.

6.2.2.1 No Unix SCO Openserver 5

a) Foi exportado um filesystem. Para isto, foi chamado o programa scoadmin, opção Filesystems, FileSystem Mananger, Export, NFS, Add Export Configuration e cadastrado o seguinte:

Directory to Export: /u (nome do filesystem ou diretório do Unix a compartilhar)

Read Only Clients: No

Read-write Clients: All Systems

Export Now: Yes - para montar após a confirmação (a opção No é para o filesystem ser montado quando da inicialização do servidor).

6.2.2.2 No Windows

a) Foi montado o diretório cliente. Para isso foi selecionada a opção Windows Explorer.

b) A seguir foi selecionada a opção Mapear Unidade de Rede, selecionada a letra da unidade, a letra F:

c) Depois foi selecionado o Nome do Servidor. No caso: unix.uri.com

d) Finalizando, foram selecionadas a(s) pastas (diretórios).

Após estes procedimentos ficou disponível no Windows o diretório F: (contendo os arquivos do computador Unix) para os usuários realizarem as operações desejadas.

Conclusão

Através do estudo abordado neste artigo, pode-se verificar que os sistemas operacionais Unix e WindowsNT são sistemas operacionais que atendem a maioria dos requisitos fundamentais de um sistema operacional de uma rede segura e consistente na qual a troca de informações entre os diversos computadores pode ser feita eficientemente por usuários que não possuem um alto grau de conhecimento em informática. Verificou-se também que o TCP/IP é um protocolo eficiente no transporte de dados entre computadores interligados em rede devido á sua característica de ser um protocolo que transporta os dados de maneira segura e com perdas mínimas mesmo em redes que utilizam arquiteturas de hardware e software de diversos tipos.

Como os dois sistemas operacionais oferecem suporte para TCP/IP, o processo de integração de redes Unix com redes WindowsNT se torna bastante facilitado.

Existem alguns programas aplicativos desenvolvidos com o objetivo de se somarem aos já existentes a fim de oferecer novas capacidades e funcionalidades. O gerenciador de arquivos distribuídos NFS é um desses aplicativos. Conforme verificou-se no estudo apresentado, o NFS ajuda bastante na integração das plataformas WindowsNT e Unix devido a sua característica de prover acesso a arquivos que são compartilhados on-line, de forma transparente ao usuário e totalmente integrado com o sistema operacional e softwares aplicativos. O NFS oferece aos usuários e aos aplicativos transparência quanto a localização dos arquivos. Outra importante característica do NFS é a sua capacidade de automatizar a maior parte da tarefa de conversão dos dados compartilhados entre múltiplas plataformas heterogêneas, não sendo necessário desenvolver procedimentos especiais de conversão.

Com base no estudo apresentado neste trabalho pode-se afirmar que uma rede de computadores que seja implementada utilizando-se estes componentes certamente será uma rede segura, consistente, fácil de ser operada e que atende as necessidades de várias empresas.

Bibliografia

[1]

[2]

 

[3]

[4]

 

[5]

[6]

[7]

[8]

[9]

[10]

 

[11]

 

[12]

 

 

[13]

Anunciação, Heverton: Unix para redes brasileiras. Ed. Érica, São Paulo, 1997.

Arnett, Matthew F.; Dulaney, E.; Harper E.: Desvendando o TCP/IP. Ed. Campus, Rio de Janeiro, 1996.

Carvalho, José E. M. de: Aprendendo e Utilizando WindowsNT. Ed. Makron Books, São Paulo, 1994.

Carvalho, Tereza C. M. de B: Arquitetura de redes de computadores OSI e TCP/IP. 2ª Edição. Ed. Makron Books, São Paulo, 1997.

Christian, Kaare: Como funciona o Windows. Ed. Quark do Brasil Ltda, São Paulo,1994.

Christian, Kaare: Entendendo o Sistema UNIX. Ed. Campus, Rio de Janeiro, 1987.

Christian, Kaare: Tópicos Avançados do Sistema UNIX. Ed. Campus, Rio de Janeiro, 1987.

Comer, Douglas E.: Interligação em rede com TCP/IP. Ed. Campus, Rio de Janeiro, 1998.

Galeote, Sidney: WindowsNT: perguntas e respostas. Ed. Érica, São Paulo, 1994.

Gasparini, Anteu F. L.; Barrella, F. E.: TCP/IP: solução para conectividade. 3ª Edição, Ed. Érica, São Paulo, 1993.

Kennedy, Randall C.: WindowsNT: como integrar o WindowsNT ao seu ambiente de trabalho. Ed. Campus, Rio de Janeiro, 1994.

Soares, Luis F. G.; Lemos, Guido; Colcher, Sérgio: Redes de Computadores: das LANs, MANs e WANs às redes ATM. Ed. Campus, Rio de Janeiro, 1995.

Tanenbaum, Andrew S.: Redes de Computadores. Ed. Campus, Rio de Janeiro, 1997.

Endereços Internet

http://www.biul.co.kr/tucows

http://sunsite.unc.edu/sun/inform

http://www.jriver.com

http://www.xlink.com

http://www.penta.ufrgs.br

http://inf.ufrgs.br

  Voltar