WirelessBR

WirelessBr é um site brasileiro, independente, sem vínculos com empresas ou organizações, sem finalidade  comercial,  feito por voluntários, para divulgação de tecnologia em telecomunicações 

Segurança em Transações e Aplicações WAP (5)

Autores: Jorge Luis Morales Cabral  e  Leonardo Mascarenhas Leite 

Esta página contém muitas figuras grandes. Aguarde a carga se a conexão estiver lenta.

6. Protocolos

6.1 Modelo OSI

No final da década de 70 foi criado um modelo padrão para implementação de protocolos, a partir de então todos os protocolos deveriam buscar uma série de objetivos, pois a heterogeneidade de padrões existentes praticamente impossibilitava a interconexão entre sistemas de fabricantes distintos.
Alguns dos objetivos necessários para a implementação de um sistema aberto são [MOU86]:
 interoperabilidade: capacidade que os sistemas abertos possuem de troca de informações entre eles, mesmo que sejam fornecidos por fabricantes diversos;
 interconectividade: é a maneira através da qual se pode conectar computadores de fabricantes distintos;
 portabilidade da aplicação: é a capacidade de um software de rodar em várias plataformas diferentes;
 Ser escalável: capacidade de um software rodar com uma performance aceitável em computadores de capacidades diversas, desde computadores pessoais até supercomputadores. 
Para se atingir estes objetivos, a ISO (International Organization for Standardization) passou a se ocupar em criar um padrão de arquitetura aberta e baseada em camadas. Foi então definido o Modelo de Referência para Interconexão de Sistemas Abertos (Reference Model for Open Systems Interconection - RM OSI) [ISO89].
A utilização de um ambiente de sistema aberto nos oferece algumas vantagens, como:
 liberdade de escolha entre soluções de diversos fabricantes;
 acesso mais rápido a novas tecnologias e a preços mais accessíveis, já que é mais barato e rápido fabricar produtos baseados em uma plataforma padrão;
 redução de investimentos em novas máquinas, já que os sistemas e os softwares de aplicação são portáveis para os vários tipos de máquinas existentes.
A adoção de um modelo baseado em camadas também não é arbitrária.
Considerando que uma rede de computadores tem como objetivo o processamento de 
tarefas distribuídas pela rede de forma harmônica e cooperativa entre os vários processos de aplicação, o projeto desta deve levar em conta vários fatores, como:
 considerar todos os eventos possíveis de acontecer durante a comunicação;
 conhecer todos os efeitos e causas destes eventos;
 especificar em detalhes todos os aspectos técnico-operacionais dos meios físicos a serem utilizados como suporte à comunicação;
 detalhes das próprias aplicações a serem executadas.
Pode ser percebido, então, que o problema é extremamente complexo e 
abrangente. A fim de se lidar com esta complexidade (facilitando a implementação e manutenção), projeta-se a rede como um conjunto de camadas.
Este conjunto de camadas é hierárquico, ou seja, cada camada baseia-se na camada inferior [MOU86]. Reduzindo-se o projeto global da rede ao projeto de cada uma das camadas, simplifica-se consideravelmente o trabalho de desenvolvimento e de manutenção. O projeto de uma camada é restrito ao contexto dessa camada e supõe que os problemas fora deste contexto já estejam devidamente resolvidos.
Na realidade existem duas vantagens práticas na utilização de uma arquitetura em camadas. Em primeiro lugar, a complexidade do esforço global de desenvolvimento é reduzida através de abstrações (não interessa para uma determinada camada como as demais implementam o fornecimento de seus serviços, só o que elas oferecem). Na arquitetura hierárquica, a camada (N) sabe apenas que existem a camada (N-1), prestadora de determinados serviços e a camada (N+1), que lhe requisita os serviços. A camada (N) não toma conhecimento da existência das camadas (N±2), (N±3), etc.
O segundo aspecto é relacionado com a independência entre as camadas. A camada (N) preocupa-se apenas em utilizar os serviços da camada (N-1), independentemente do seu protocolo. É assim que uma camada pode ser alterada sem mudar as demais (facilidade de manutenção) - desde que os serviços que ela presta não sejam modificados. É assim também que novas aplicações podem ser implementadas, na camada apropriada, aproveitando os mesmos serviços já fornecidos pelas outras camadas (redução dos esforços para evoluções).
Porém a elaboração de um sistema aberto passa por algumas etapas obrigatórias que podem ser observadas claramente na definição do modelo OSI, da ISO:
 definição do modelo do sistema aberto (padrão para arquitetura do sistema aberto);
 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 estrutura de armazenamento de dados, etc;
 seleção dos perfis funcionais.
Pode ser observado que o modelo OSI da ISO corresponde exatamente ao primeiro item citado acima. O modelo OSI é um modelo de referência e define apenas a arquitetura do sistema. O padrão criado para o modelo OSI, então, 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 o realizará. Este primeiro passo já está bem definido pela ISO.
A definição dos protocolos de cada camada, então, fica por conta do segundo passo. Esta parte também está definida pela ISO, mas é realizado por grupos de estudo diversos. Este passo é uma tarefa muito dinâmica, pois novas tecnologias de transmissão surgem a todo instante. Portanto por um lado existem alguns padrões bem documentados, mas por outro, existem tecnologias emergentes que precisam ser adaptadas às condições do modelo OSI e ainda estão em processo de definição.
Já a terceira etapa não é uma fase de responsabilidade da ISO. Esta etapa de definição de perfis funcionais é realizada por cada país, que escolhe os padrões que lhe cabem baseados em condições tecnológicas, base instalada, visão futura, etc. Por exemplo, no Brasil existe o Perfil Funcional do Governo Brasileiro. A escolha do Perfil Funcional é uma etapa importante, pois apesar de dois sistemas seguirem o Modelo OSI, se eles adotarem perfis diferentes, eles nunca vão conseguir interoperar.
A arquitetura OSI foi desenvolvida a partir de três elementos básicos, conforme figura 6.1 [MOU86]:
 os processos de aplicação existentes no ambiente OSI;
 as conexões que ligam os processos de aplicação e que lhes permitem trocar
informações;
 os sistemas.

 

FIGURA 6.1 - PROCESSOS DE APLICAÇÃO, CONEXÕES E SISTEMAS

A figura 6.2 nos dá uma idéia da arquitetura de uma máquina pertencente a um sistema de comunicação.

FIGURA 6.2 - ARQUITETURA DE UMA MÁQUINA DO SISTEMA

Hardware: provê a infra-estrutura necessária (no nível mais baixo) para o processamento da aplicação, como a manipulação de bits, acesso a disco, etc.
Sistema operacional: provê os serviços básicos de acesso a hardware, etc.
Gerenciamento de dados: cuida de tarefas como o acesso, manipulação e troca de vários tipos de dados. Uma consistência nesta tarefa é um grande passo rumo à portabilidade de aplicações.
Linguagem: tem sido feitos esforços em relação à criação de uma linguagem com independência da plataforma, de forma a prover a portabilidade de código.
Interface com o usuário: um dos principais fatores de portabilidade, já que provê a interface com o usuário da aplicação.
Comunicação: Proporciona a comunicação e interoperação entre máquinas e sistemas diferentes, cuidando de características como padrões de interoperação, endereçamento, etc.
O modelo OSI, então, se encaixa na figura 6.2 como um conjunto de funções que possibilitam que máquinas distintas possam se comunicar e trocar informações. Ele possui sete camadas, conforme figura 6.3, onde cada camada é responsável por uma determinada função específica. Os princípios utilizados para se chegar a estas camadas são [TAN94]:
 uma camada deve ser criada onde é necessário um nível de abstração diferente;
 cada camada deve desempenhar uma função bem definida;
 a função de cada camada deve ser definida tendo em vista a definição de protocolos
padrões internacionais;
 as fronteiras entre as camadas devem ser escolhidas de forma a minimizar o fluxo de informações através das interfaces;
 o número de camadas deve ser grande o suficiente para que não seja preciso agrupar funções em uma mesma camada por necessidade, e pequeno o suficiente para que a arquitetura fique manejável.
Cada camada é usuária dos serviços prestados pela camada imediatamente inferior e presta serviços para a camada imediatamente superior. Esta troca de informações entre as camadas adjacentes ocorre por meio da troca de primitivas de serviços nas interfaces entre as camadas.
Apesar do modelo OSI estar dividido em sete níveis, pode-se considerar genericamente que as três camadas mais baixas cuidam dos aspectos relacionados à transmissão propriamente dita e a camada de transporte lida com a comunicação fim-a-fim, enquanto que as três camadas superiores se preocupam com os aspectos relacionados à aplicação, já a nível de usuário.
A comunicação entre sistemas ocorre a nível de camadas, ou seja, a camada de aplicação do sistema A se comunica com a camada de aplicação do sistema B e assim por diante até o nível físico, onde ocorre a comunicação física entre os sistemas.

FIGURA 6.3 - MODELO DE REFERÊNCIA OSI

Uma maneira bastante fácil e simplificada de se enxergar a funcionalidade de um modelo em camadas, como o 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, conforme figura 6.4. 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.

FIGURA 6.4 - TRANSFERÊNCIA DE DADOS ENTRE CAMADAS

Os dados entregues pelo usuário à camada de aplicação do sistema recebem a denominação de SDU (Service Data Unit). A camada de aplicação, então, junta à 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.

6.1.1 Primitivas de Serviços

As primitivas de serviços são informações trocadas entre duas camadas adjacentes de forma a realizar um serviço. No modelo OSI são definidas quatro tipos de primitivas:
 pedido (Request): utilizada para solicitar ou ativar um determinado serviço;
 indicação (Indication): informa a ocorrência de um determinado evento;
 resposta (Response): utilizada para responder a um determinado evento;
 confirmação (Confirmation): utilizada para confirmar a execução de um serviço solicitado.

As primitivas possuem parâmetros de entrada e saída. Por exemplo, em um pedido de conexão, os parâmetros podem especificar a máquina à qual se conectar, o tipo de serviço desejado e o tamanho máximo de mensagem a ser utilizada e os parâmetros em uma indicação de conexão podem conter a identidade do solicitante, o tipo de serviço e o tamanho máximo de mensagem proposto. Quem cuida dos detalhes desta negociação é o protocolo. Por exemplo, caso duas propostas para o tamanho máximo das mensagens trocadas seja conflitante, o protocolo deve decidir qual das duas será aceita.
Os serviços prestados podem ser basicamente de dois tipos: confirmado e não confirmado. No serviço confirmado, há um pedido, uma indicação, uma resposta e uma confirmação. Já no serviço não confirmado, há apenas um pedido e uma indicação. Um exemplo de um serviço confirmado é o estabelecimento de uma conexão, enquanto que a desconexão é um serviço não confirmado. Será visto o exemplo de um serviço de conexão na figura 6.5.

FIGURA 6.5 - DIAGRAMA DE TEMPO DE ESTABELECIMENTO DE CONEXÃO

Este serviço pode ser descrito da seguinte forma:
 request.CONEXÃO - solicita o estabelecimento de uma conexão;
 indication.CONEXÃO - informa à parte chamada;
 response.CONEXÃO - entidade chamada aceita ou rejeita chamadas;
 confirmation.CONEXÃO - indica ao solicitante se a chamada foi aceita;
 request.DADOS - solicita a transmissão de dados;
 indication.DADOS - avisa sobre a chegada de dados;
 request.DESCONEXÃO - solicita que a conexão seja liberada;
 indication.DESCONEXÃO - informa ao parceiro sobre o pedido.

6.1.2 Serviços e Protocolos

Faz-se necessário deixar bem clara a distinção entre serviços e protocolos. Um serviço é um conjunto de primitivas que uma camada oferece à camada superior adjacente, ou seja, é uma interface entre duas camadas onde a inferior se comporta como provedora do serviço e a superior a usuária do serviço. O serviço define as operações que a camada está preparada para realizar em nome de seus usuários, mas não diz nada a respeito do modo como isso deve ser implementado [MOU86].
Já um protocolo é um conjunto de regras que governa o formato e o significado dos quadros, pacotes ou mensagens trocados entre entidades parceiras dentro de uma mesma camada. Os protocolos são utilizados para implementar os serviços, não sendo diretamente visíveis aos usuários, ou seja, o protocolo utilizado pode ser modificado, desde que o serviço oferecido ao usuário permaneça o mesmo.
Deve-se sempre lembrar que ao falar em serviços, fala-se em camadas adjacentes (níveis diferentes, no mesmo sistema), e ao falar em protocolo, fala-se de entidades pares (no mesmo nível, em sistemas diferentes), conforme figura 6.6.

FIGURA 6.6 - SERVIÇOS E PROTOCOLOS NO MODELO OSI

Os serviços providos pela camada (N) são disponíveis para a entidade (N+1) através dos SAP´s (Service Access Point). Os SAP´s são interfaces lógicas entre as entidades (N) e (N+1). Portanto, quando a entidade (N+1) precisa utilizar o serviço provido pela camada (N), ela busca este no SAP(N).
As informações entre entidades (N+1) são trocadas através de uma associação chamada conexão (N) , estabelecida na camada (N) utilizando o protocolo (N). A figura 6.7 ilustra este conceito.

FIGURA 6.7 - SAP´S E CONEXÕES

6.2 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 [SOU99], demonstrado na figura 6.8, 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.

FIGURA 6.8 - MODELO EM CAMADAS DA INTERNET

Estas camadas trocam informações entre si de uma forma vertical e hierárquica, ou seja, a camada APLICAÇÕES passa informações para TRANSPORTE, que passa para REDE que passa para ACESSO A REDE. Cada camada trata das informações que correspondem a sua função.
Quando fala-se em comunicação entre dois hosts, a comunicação entre as camadas é vista então de uma maneira horizontal, ou seja, a Camada TRANSPORTE do host destino conversa somente com a Camada TRANSPORTE do host Origem, assim como a camada APLICAÇÕES só conversará com a camada APLICAÇÕES, e assim por diante.

 

Anterior                Home WirelessBR                 Próxima