(Open System Interconnection)
Para que dois ou mais equipamentos de uma rede se comuniquem é necessário que todos adotem as mesmas regras para o envio e recebimento de informações. Devido a essa premissa, foi elaborado pela ISO (International Stardards Organization) um modelo de referência chamado de RM-OSI (Reference Model - Open System Interconnection) ou simplesmente conhecido como modelo OSI. Esse modelo trás a idéia de estruturar a rede de computadores como um conjunto de camadas hierárquicas e interdependentes, cada uma com funções próprias e bem definidas. A seguir, na figura 1, é mostrado o modelo OSI:
Fonte: Tanenbaum (1997, p. 33).
Como pode ser visto, o modelo OSI é dividido em sete camadas: aplicação, apresentação, sessão, transporte, rede, enlace e física. Cada uma dessas camadas sintetiza, de modo abstrato, o funcionamento dos computadores interligados em rede. A seguir é mostrada a função de cada uma delas:
- Aplicação: é a de nível mais alto, ficando mais próxima do aplicativo que o usuário utiliza. Diógenes (2004, p. 26) assinala que essa camada é responsável pela comunicação direta entre o usuário do computador e a rede. Em vista disto, essa camada facilita o acesso do usuário à rede de computadores, fazendo a interação entre o usuário, o aplicativo, o protocolo e o meio de comunicação. Também têm a função de mostrar as informações para o usuário de uma forma que ele entenda (inteligível);
- Apresentação: ajuda o usuário em algumas tarefas como a conversão de padrões. Souza (2002, p. 29) afirma que esta camada faz a conversão de diferentes códigos ou formatos. Alguns códigos que podem ser convertidos são: ASCII (American Standard Code for Information Interchange), EBCDIC (Extended Binary Code Decimal Interchange Code) e Unicode. Para um melhor entendimento, Diógenes (2004, p. 27) acrescenta que esta camada é responsável por apresentar os dados à camada de aplicação através de uma semântica inteligível. Assim, no momento em que os bytes chegam da camada de sessão, há uma conversão para um padrão que o ser humano entenda (ex: ASCII), sendo que esse código convertido é enviado para a camada de aplicação. O inverso também é verdadeiro. Vale ressaltar que no modelo OSI, do nível físico ao de sessão, os dados dos usuários são vistos como sendo uma seqüência de bytes. Além dessa conversão de formatos, essa camada pode trabalhar com criptografia e compressão de dados;
- Sessão: oferece serviço orientado à conexão de sessão, faz a gerência de tokens e estabelece pontos de sincronização:
- Oferece serviço orientado à conexão de sessão: antes da troca de dados é necessário estabelecer uma conexão de sessão. O serviço orientado à conexão de sessão é fornecido em três fases: estabelecimento da conexão, troca de dados e encerramento da conexão (SOARES; LEMOS; COLCHER, 1995, p. 361). Esse serviço orientado à conexão é bem parecido com o que é oferecido na camada de transporte, mas não se pode confundí-los. O serviço que é oferecido pela camada de sessão, tem a função de dar suporte ao serviço que é oferecido pela de transporte. Ex: recuperando erros de rede que provoquem o encerramento de conexões de transporte. Uma conexão de sessão pode estar ligada a uma ou várias conexões de transporte. Ou ainda, várias conexões de sessão podem estar relacionadas a uma única conexão de transporte. Num estabelecimento de conexão de sessão é realizada a identificação da conexão de sessão, o tipo de qualidade de serviço, a distribuição inicial de tokens etc. Nos tópicos a seguir é exposto, de forma resumida, como o serviço orientado a conexão de sessão distribui os tokens e recupera erros na rede,
- Gerência de token: token é um controle que indica qual usuário pode transmitir. A camada de sessão é responsável pela posse e entrega desses tokens, auxiliando a controlar o ordenamento da transmissão (CORDEIRO, 2001, p. 35). Somente quem possuir o token é quem pode transmitir. Essa camada gerencia o token na hora que o usuário solicita um e também no momento em que usuário o passa para outro. Durante o estabelecimento da conexão de sessão é especificado qual usuário inicialmente possuirá o token. Esta caracterísca é opcional e é muito usada em transações bancárias,
- Estabelece pontos de sincronização:: esse recurso pode parar uma determinada atividade que está em andamento (ex: transferência de um arquivo na rede) e iniciar uma outra de maior prioridade ou quando o próprio usuário interrompe a transferência para reiniciá-la mais tarde. De acordo com Soares, Lemos e Colcher (1995, p. 361) atividades podem ser interrompidas e posteriormente retomadas na mesma conexão ou em subseqüentes. Ao reiniciar a transferência que foi interrompida, ela irá recomeçar do último ponto de sincronização estabelecido. Esse ponto de sincronização é uma marcação realizada durante a transferência de dados. Assim, caso haja uma interrupção na transferência durante a transmissão, não será necessário transferir todo o dado (todos os bits) novamente, mas somente o que faltava, ou seja, do último ponto de sincronização em diante. Como foi dito, esse recurso é usado quando há a necessidade de priorizar uma atividade ou quando o próprio usuário interrompe uma. Contudo, também é bastante utilizado quando acontece uma parada, inesperada (ex: queda de energia) durante uma transferência em rede, sendo que quando os equipamentos voltarem a funcionar (ex: quando eles forem religados), a atividade pode recomeçar do último ponto de sincronização,
- Transporte: garante que todas as partes da mensagem sejam transmitidas de maneira confiável ou não. O interessante é que nessa camada a comunicação acontece entre os equipamentos finais, não se importando com os equipamentos que estão no meio da comunicação. Cordeiro (2001, p. 33) confirma dizendo que nesta camada a troca de dados é realizada fim-a-fim, ou seja, não se comunica com máquinas intermediárias na rede. Salvo em casos de controle de congestionamento explícito que pode ser visto no artigo sobre TCP. Ela oferece dois serviços: orientado e não-orientado à conexão. Orientado à conexão significa estabelecer uma conexão antes da troca dos dados, garantir a entrega dos mesmos e finalizar a conexão corretamente, sendo muito utilizado em aplicações on-line. Já o serviço não-orientado a conexão, não garante a entrega dos dados, não estabelece e nem finaliza conexão, sendo muito utilizada em aplicações real-time (em tempo real). Vale ressaltar que apesar das vantagens do serviço orientado a conexão, ele tem a desvantagem de ser mais oneroso por trocar muitas informações que não são dados;
- Rede: responsável por escolher os caminhos (rotas) para alcançar o destino através de funções de roteamento. Torres e Lima (2007, p. 2) afirmam que esta camada determina a rota que os pacotes irão seguir para atingir o destino. Em outras palavras, está preocupada por onde os dados devem trafegar no meio físico. Essa camada não oferece serviço orientado à conexão, devido à isso não garante a entrega do dados. Esta garantia deve ser oferecida por outras camadas do modelo OSI;
- Enlace: de acordo com Soares, Lemos e Colcher (1995, p. 159), essa camada é responsável pelo controle de acesso ao meio de comunicação, pela detecção de erros e opcionalmente pela correção desses erros:
- Controle de acesso ao meio: quando várias estações compartilham o mesmo meio de comunicação, há uma grande possibilidade de haver colisões entre os dados enviados. Para resolver esse problema, a camada de enlace utiliza métodos que detectam ou evitam colisões. Esses métodos tentam impedir que duas máquinas transmitam simultaneamente e gerem colisões,
- Detecção de erros: é adicionada uma seqüência de bits nos dados que são enviados. Ao chegar no receptor, esta seqüência de bits é recalculada e comparada com o que foi recebido. Se forem diferentes, os dados serão descartados sem avisar o transmissor sobre o problema,
- Correção de erros: essa é uma característica opcional feita após a detecção de erros e pode ser realizada de duas maneiras. A primeira é a retransmissão dos dados pelo transmissor. Quando o receptor detecta erros, pede ao transmissor que envie os dados novamente. A segunda é a correção sem retransmissão, utilizando bits de redundância que podem reconstruir os dados com problemas,
- Física: tem a função de transformar os dados de enlace em bits para transmiti-los no meio físico até alcançar o destino. Esta camada deve resolver questões como a voltagem que representa o bit 1 e 0, o tempo de duração de um bit, qual a fonte de transmissão elétrica (CI-555) num sistema de cabos metálicos, qual a fonte de transmissão de luz (diodos ou lasers) num sistema de fibra ótica, a velocidade que o sinal de luz passa em um cabo ótico, a quantidade de pinos de um conector, a maneira que esses pinos serão utilizados etc (TANENBAUM 1997, p. 32). Para ser mais específico, esta camada define as características de tensão e de corrente elétrica para representar os bits, a intensidade da luz num sistema de fibra ótica, os conectores, os cabos, o clock usado na transmissão, a interface de rede, a topologia física da rede, o meio de transmissão, o tipo de codificação usada para representar o bit 1 e o 0 (ex: codificação de Manchester) etc. Não tem o intuito de verificar problemas como erros de transmissão, essa verificação deve ser realizada pelas camadas superiores;