Com
o objetivo de facilitar o processo de padronização e
obter interconectividade entre máquinas de diferentes
fabricantes, a Organização Internacional de Normalização
(ISO - International Standards Organization), uma das
principais organizações no que se refere à elaboração
de padrões de comunicação de âmbito mundial, aprovou,
no início da década de 1980, um modelo de arquitetura
para sistemas abertos, visando permitir a comunicação
entre máquinas heterogêneas e definindo diretivas genéricas
para a construção de redes de computadores independente
da tecnologia de implementação.
Esse modelo foi denominado
OSI (Open Systems Interconnection), servindo
de base para a implementação de qualquer tipo de rede,
seja de curta, média ou longa distância.
Elaboração do Modelo
Para atingir os objetivos
de interoperabilidade, compatibilidade, portabilidade
e escalabilidade exigidos para a implementação de um
sistema aberto são necessárias algumas etapas obrigatórias
que podem ser observadas na definição do modelo OSI:
Definição do modelo
(padrão para arquitetura do sistema aberto) - O padrão
criado para o modelo OSI define exatamente o que cada
camada deve fazer, mas não define como isto será feito,
ou seja, define os serviços que cada camada deve prestar,
mas não o protocolo que os realizará;
Definição dos protocolos
de cada camada – Definição dos padrões dos componentes
que fazem parte do modelo (padrões de interoperabilidade
e portabilidade), não só os relacionados à comunicação,
mas também alguns não relacionados como a estrutura
de armazenamento de dados e outros;
Seleção dos perfis
funcionais – Etapa realizada pelos órgãos de padronização
de cada país que escolhem os padrões que lhes cabem,
baseados em condições tecnológicas, base instalada,
visão futura, etc.
Arquitetura OSI
A arquitetura de
uma rede é formada por camadas (ou níveis), interfaces
e protocolos. As camadas são processos, implementados
por hardware ou software, que se comunicam com o processo
correspondente na outra máquina. Cada camada oferece
um conjunto de serviços ao nível superior, usando funções
realizadas no próprio nível e serviços disponíveis nos
níveis inferiores.
Em uma estrutura baseada
em camadas, os dados transferidos em uma comunicação
de um nível específico não são enviados diretamente
ao processo do mesmo nível em outra estação, mas descem,
através da cada camada adjacente da máquina transmissora
até o nível inicial, onde é transmitido, para depois
subir através de cada nível adjacente da máquina receptora.
Os protocolos são conjuntos
de regras e formatos que permitem a comunicação entre
as camadas nas diferentes máquinas. Em cada camada podem
ser definidos um ou mais protocolos. Já as interfaces
representam o limite entre cada nível adjacente onde
uma camada compreende as informações vindas de outra
camada.

Figura 1
- Camadas, interfaces e protocolos
Dentro dessa
filosofia, o modelo OSI define uma arquitetura genérica
de sete camadas para o sistema computacional. Com exceção
da camada mais alta, cada camada é usuária dos serviços
prestados pela camada imediatamente inferior (n-1) e
presta serviços para a camada imediatamente superior
(n+1). Esta troca de informações entre as camadas adjacentes
ocorre por meio da troca de primitivas de serviços (funções
que um nível oferece ao nível imediatamente superior
de forma a prover a comunicação entre os mesmos) nas
interfaces entre as camadas.
Apesar da divisão em
sete níveis, pode-se considerar genericamente que as
três camadas mais baixas do modelo cuidam dos aspectos
relacionados à transmissão propriamente dita, a quarta
camada lida com a comunicação fim-a-fim, enquanto que
as três camadas superiores se preocupam com os aspectos
relacionados à aplicação, já ao nível de usuário.
Uma maneira bastante
simples de se enxergar a funcionalidade do modelo OSI
é imaginar que cada camada tem como função adicionar
um cabeçalho aos dados do usuário a serem transmitidos
para outro sistema. Deste modo, a função de cada camada
do outro sistema é exatamente a inversa, ou seja, retirar
os cabeçalhos dos dados que chegam e entregá-los ao
usuário em sua forma original. As camadas do Modelo
de Referência OSI são as seguintes:
Camada Física
Os protocolos deste
nível são os que realizam a codificação/decodificação
de símbolos e caracteres em sinais elétricos lançados
no meio físico, que fica logo abaixo dessa camada.
O nível físico tem a
função de transmitir uma seqüência de bits através de
um canal de comunicação. As funções típicas dos protocolos
deste nível são fazer com que um bit "1" transmitido
por uma estação seja entendido pelo receptor como bit
"1" e não como bit "0". Assim, este
nível trabalha basicamente com as características mecânicas
e elétricas do meio físico, como por exemplo:
Número
de volts que devem representar os níveis lógicos
"1" e "0";
Velocidade
máxima da transmissão;
Transmissão
simplex, half duplex ou full duplex;
Número
de pinos do conector e utilidade de cada um;
Diâmetro
dos condutores.
Camada de Enlace de
Dados
O principal objetivo
da camada de enlace é receber/transmitir uma seqüência
de bits do/para o nível físico e transformá-los em uma
linha que esteja livre de erros de transmissão, a fim
de que essa informação seja utilizada pelo nível de
rede. O nível de enlace está dividido em dois subníveis:
Subnível superior
- controle lógico do enlace (LLC - Logical Link Control)
- O protocolo LLC pode ser usado sobre todos os protocolos
IEEE do subnível MAC, como por exemplo, o IEEE 802.3
(Ethernet), IEEE 802.4 (Token Bus) e IEEE 802.5 (Token
Ring). Ele oculta as diferenças entre os protocolos
do subnível MAC. Usa-se o LLC quando é necessário
controle de fluxo ou comunicação confiável;
Subnível inferior
– controle de acesso ao meio (MAC - Medium Access
Control) possui alguns protocolos importantes, como
o IEEE 802.3 (Ethernet), IEEE 802.4 (Token Bus) e
IEEE 802.5 (Token Ring). O protocolo de nível superior
pode usar ou não o subnível LLC, dependendo da confiabilidade
esperada para esse nível.
Camada de Rede
A camada de rede tem
a função de controlar a operação da rede de um modo
geral. Suas principais funções são o roteamento dos
pacotes entre fonte e destino, mesmo que estes tenham
que passar por diversos nós intermediários durante o
percurso, o controle de congestionamento e a contabilização
do número de pacotes ou bytes utilizados pelo usuário,
para fins de tarifação.
O principal aspecto
que deve ser observado nessa camada é a execução do
roteamento dos pacotes entre fonte e destino, principalmente
quando existem caminhos diferentes para conectar entre
si dois nós da rede. Em redes de longa distância é comum
que a mensagem chegue do nó fonte ao nó destino passando
por diversos nós intermediários no meio do caminho e
é tarefa do nível de rede escolher o melhor caminho
para essa mensagem.
A escolha da melhor
rota pode ser baseada em tabelas estáticas, que são
configuradas na criação da rede e são raramente modificadas;
pode também ser determinada no início de cada conversação,
ou ser altamente dinâmica, sendo determinada a cada
novo pacote, a fim de refletir exatamente a carga da
rede naquele instante. Se muitos pacotes estão sendo
transmitidos através dos mesmos caminhos, eles vão diminuir
o desempenho global da rede, formando gargalos. O controle
de tais congestionamentos também é tarefa da camada
de rede.
Camada de Transporte
A camada de transporte
inclui funções relacionadas com conexões entre a máquina
fonte e máquina destino, segmentando os dados em unidades
de tamanho apropriado para utilização pelo nível de
rede, seguindo ou não as orientações do nível de sessão.
As principais funções
do nível de transporte são a criar conexões para cada
requisição vinda do nível superior, multiplexar as várias
requisições vindas da camada superior em uma única conexão
de rede, dividir as mensagens em tamanhos menores, a
fim de que possam ser tratadas pelo nível de rede e
estabelecer e terminar conexões através da rede.
Sob condições normais,
o nível de transporte cria uma conexão distinta para
cada conexão de transporte requisitada pelo nível superior.
Se a conexão de transporte requisitada necessita uma
alta taxa de transmissão de dados, este nível pode criar
múltiplas conexões de rede, dividindo os dados através
da rede para aumentar a velocidade de transmissão, conforme
as indicações do nível de sessão. Por outro lado, a
camada de transporte pode multiplexar as várias conexões
de transporte na mesma conexão de rede, a fim de reduzir
custos. Em ambos os casos, a camada de transporte deixa
essa multiplexação transparente ao nível superior.
Existem várias classes
de serviço que podem ser oferecidas ao nível superior,
e, em última instância, aos usuários da rede. A mais
popular é uma comunicação através de um canal ponto-a-ponto
livre de erros, que envia as mensagens seqüencialmente,
na mesma ordem que elas foram recebidas. Existem outras
classes permitidas, como o envio de mensagens isoladas,
sem garantia sobre a ordem da entrega, ou enviar mensagens
para múltiplos destinos (mensagens multicast).
O nível de transporte
é o primeiro que trabalha com conexões lógicas fim a
fim, ou seja, um programa na máquina fonte conversa
com um programa similar na máquina destino, diferente
dos níveis anteriores, que conversavam somente com o
nó vizinho. Vale ressaltar que a conexão criada pelo
nível de transporte é uma conexão lógica, e os dados
são transmitidos somente pelo meio físicos, através
da camada física do modelo. Assim, os dados devem descer
nível a nível até atingir o nível 1, para então serem
transmitidos à máquina remota.
As funções implementadas
pela camada de transporte dependem da qualidade de serviço
desejada. Foram especificadas, então, cinco classes
de protocolos orientados à conexão:
Classe 0: simples,
sem nenhum mecanismo de detecção e recuperação de
erros;
Classe 1: recuperação
de erros básicos sinalizados pela rede;
Classe 2: permite
que várias conexões de transporte sejam multiplexadas
sobre uma única conexão de rede e implementa mecanismos
de controle de fluxo;
Classe 3: recuperação
de erros sinalizados pela rede e multiplexação de
várias conexões de transporte sobre uma conexão de
rede;
Classe 4: detecção
e recuperação de erros e multiplexação de conexões
de transporte sobre uma única conexão de rede.
Camada de Sessão
A função da camada de
sessão é administrar e sincronizar diálogos entre dois
processos de aplicação. Este nível oferece dois tipos
principais de diálogo: half duplex e full duplex.
O nível de sessão fornece
mecanismos que permitem estruturar os circuitos oferecidos
para o nível de transporte. Neste nível ocorre a quebra
de um pacote com o posicionamento de uma marca lógica
ao longo do diálogo. Esta marca tem como finalidade
identificar os blocos recebidos para que não ocorra
uma recarga, quando ocorrer erros na transmissão.
Uma sessão permite transporte
de dados de uma maneira mais refinada que o nível de
transporte em determinadas aplicações. Uma sessão pode
ser aberta entre duas estações a fim de permitir a um
usuário se logar em um sistema remoto ou transferir
um arquivo entre essas estações. Os protocolos desse
nível tratam de sincronizações (checkpoints) na transferência
de arquivos.
Camada de Apresentação
A função da camada de
apresentação é assegurar que a informação seja transmitida
de tal forma que possa ser entendida e usada pelo receptor.
Dessa forma, este nível pode modificar a sintaxe da
mensagem, mas preservando sua semântica. Por exemplo,
uma aplicação pode gerar uma mensagem em ASCII mesmo
que a estação interlocutora utilize outra forma de codificação
(como EBCDIC). A tradução entre os dois formatos é feita
neste nível.
A camada de apresentação
também é responsável por outros aspectos da representação
dos dados, como criptografia e compressão de dados.
Camada de Aplicação
A camada de aplicação
é o nível que possui o maior número de protocolos existentes,
devido ao fato de estar mais perto do usuário e os usuários
possuírem necessidades diferentes.
Esta camada fornece
ao usuário uma interface que permite acesso a diversos
serviços de aplicação, convertendo as diferenças entre
diferentes fabricantes para um denominador comum. Por
exemplo, em uma transferência de arquivos entre máquinas
de diferentes fabricantes pode haver convenções de nomes
diferentes (DOS tem uma limitação de somente 8 caracteres
para o nome de arquivo, UNIX não), formas diferentes
de representar as linhas, e assim por diante.
Transferir um arquivo
entre os dois sistemas requer uma forma de trabalhar
com essas incompatibilidades, e essa é a função da camada
de aplicação. O dado entregue pelo usuário à camada
de aplicação do sistema recebe a denominação de SDU
(Service Data Unit). A camada de aplicação, então, junta
a SDU (no caso, os dados do usuário) um cabeçalho chamado
PCI (Protocol Control Information). O objeto resultante
desta junção é chamado de PDU (Protocol Data Unit),
que corresponde à unidade de dados especificada de um
certo protocolo da camada em questão.
A tabela seguinte resume
as funções das diferentes camadas do modelo OSI:
CAMADA |
FUNÇÃO |
APLICAÇÃO |
Funções
especializadas (transferência de arquivos, terminal
virtual, e-mail) |
APRESENTAÇÃO |
Formatação
de dados e conversão de caracteres e códigos |
SESSÃO |
Negociação
e estabelecimento de conexão com outro nó |
TRANSPORTE |
Meios
e métodos para a entrega de dados ponta-a-ponta |
REDE |
Roteamento
de pacotes através de uma ou várias redes |
ENLACE |
Detecção
e correção de erros introduzidos pelo meio de
transmissão |
FÍSICA |
Transmissão
dos bits através do meio de transmissão |
Sistema Operacional
de Rede
O sistema operacional
de rede é um conjunto de programas que constitui o software
básico de uma estação (computador) na rede. Ele oculta
as peculiaridades do hardware e disponibiliza as funções
necessárias para a execução de uma série de serviços
computacionais de alto nível, simplificando o desenvolvimento
de aplicações para os usuários. A maioria das funções
do modelo OSI é implementada pelo sistema operacional
de rede nas estações.
Além de gerenciar os
recursos locais do computador, o sistema operacional
de rede incorpora os módulos necessários para suportar
toda a comunicação em rede. Esses sistemas são geralmente
multiprotocolos, isto é, suportam mais de um tipo de
protocolo para cada camada. Esta característica permite
interligar, em uma mesma rede, computadores com sistemas
operacionais de fabricantes diferentes.

Figura 2
- Relação entre o Sistema Operacional de Rede e o Modelo
OSI
Conclusão
O objetivo do modelo
OSI é fornecer uma base comum que permita o desenvolvimento
coordenado de padrões para a interconexão de sistemas,
onde o termo aberto não se aplica a nenhuma tecnologia,
implementação ou interconexão particular de sistemas,
mas sim à adoção dos padrões para a troca de informações,
padrões esses que representam uma análise funcional
de qualquer processo de comunicação.
A elaboração do modelo
OSI representou um esforço na tentativa de padronização
e direcionamento do desenvolvimento das novas tecnologias
para a implementação de produtos de redes que fossem
compatíveis entre si. Entretanto, o modelo OSI é conceitual
e não uma arquitetura de implementação real de protocolos
de rede. Por exemplo, a internet se baseia em um modelo
de quatro camadas onde não existe a estruturação formal
dessas camadas 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. |