# Introdução à comunicação entre computadores e tecnologias de rede/O modelo OSI
## Introdução à Arquitetura de Redes e ao Modelo OSI

Redes de Processadores são estruturas bastante complexas que para funcionarem, precisam que os seus diversos componentes funcionem de forma sincronizada e colaborativa. Entretanto, se cada fabricante de hardware e software para redes fizer com que seus produtos tratem a rede de forma diferente, torna-se impossível fazer com que os diversos produtos interajam entre si.
Para que redes de processadores tornassem-se possíveis, era preciso desenvolver uma arquitetura de redes - uma estrutura lógica e formal que especifica como os diversos componentes devem se comunicar entre si. Para isso, existem vários tipos de arquiteturas diferentes como o Modelo OSI, feito pela ISO, a SNA feita pela IBM, a DNA feita pela Digital Equipment Corporation e o Modelo TCP/IP.
Iremos falar agora sobre o Modelo OSI. Embora na prática este modelo seja bem menos usado que o TCP/IP, o Modelo OSI costuma ser bastante estudado por motivos didáticos e é um ótimo ponto de partida para se compreender melhor como funcionam redes de computadores. Além disso, embora ele não seja muito usado, ele teve um impacto muito grande nas redes, inclusive no Modelo TCP/IP que é o mais usado. Ainda hoje, é comum que projetistas de rede usem o modelo OSI como um modelo teórico para auxiliar no desenvolvimento de redes e arquiteturas.
Uma das características mais úteis do Modelo OSI é a subdivisão da arquitetura de redes em diferentes camadas. Essa abstração é algo que facilita a compreensão do funcionamento das redes. Assim como na programação é mais fácil resolver um problema complexo dividindo-o em problemas menores e criando funções específicas para os problemas menores, também é mais fácil criar uma arquitetura de rede coerente separando a rede em diversas camadas menores que podem ser projetadas de forma independente das demais.

## As Camadas OSI

O Modelo OSI possui ao todo 7 camadas: a Camada Física, Camada de Enlace de Dados, Camada de Rede, Camada de Transporte, Camada de Sessão, Camada de Apresentação e Camada de Aplicação. Vamos ver agora uma explicação resumida da utilidade de cada camada.
A Camada Física é responsável por transferir os bits por meio de ligações. Ela cuida de questões como o tipo de cabo em uso e como é feita a conexão entre o cabo e a máquina.
A Camada de Enlace de Dados é responsável por organizar os dados recebidos, colocando-os na ordem correta, detectando e talvez corrigindo eventuais erros de transmissões.
A Camada de Rede cuida do estabelecimento de rotas e do chaveamento dos dados ao longo da rede.
A Camada de Transporte é responsável por quebrar a mensagem em pacotes menores para que ela seja transmitida. Também é responsável por depois montar os diversos pacotes em uma única mensagem posteriormente.
A Camada de Sessão cuida das regras de comunicação entre os nós que estão trocando mensagens. Ela verifica quando é possível ou não mandar dados e também sabe que tipo de comunicação os nós possuem (simplex, duplex, semi-duplex).
A Camada de Apresentação é responsável por formatar e estruturar os dados de uma forma que eles possam ser entendidos por outra máquina. Ela cuida da criptografia se necessário.
A Camada de Aplicação é responsável por cuidar das informações que chegam pela rede para cada programa de computador que está sendo usado no computador.

## Exemplo de Troca de Mensagens por Meio do Modelo OSI

Supondo que uma rede possua três máquinas: A, B e C. A rede utiliza o Modelo OSI e o usuário da máquina A está usando um programa de computador para mandar uma mensagem para a máquina C. As máquinas estão dispostas da seguinte forma:
Para que isso ocorra, o trabalho que cada camada faz é o seguinte:
* A Camada de Aplicação da Máquina A identifica a mensagem produzida pelo programa de computador usado pelo usuário e passa-a para a Camada de Apresentação.
* A Camada de Apresentação da máquina A criptografa a mensagem para que ela não possa ser interceptada ao longo do caminho a ser percorrido. Ela também pode alterar a mensagem de forma que ela se torne mais legível do outro lado.
* A Camada de Sessão identifica o tipo de comunicação que estamos tendo com outra máquina e passa esta informação para a Camada de Transporte.
* A Camada de Transporte quebra a mensagem em vários pacotes menores e inclui em cada um deles um cabeçalho e um rodapé com informações para que eles sejam montados na ordem certa depois.
* A Camada de Rede inclui um Cabeçalho em cada um dos pacotes para identificar qual máquina está enviando a mensagem e qual máquina é a destinatária.
* A Camada de Enlace inclui na mensagem uma série de informações que posteriormente poderão ser usadas para descobrir se a mensagem recebida está intacta ou foi danificada durante o percurso.
* Finalmente, a Camada Física da Máquina A transporta cada um dos pacotes pela rede. Mas a Camada Física não sabe para quem é a mensagem. Ela simplesmente passa ela para a máquina B que é a próxima máquina da rede. A Camada Física da Máquina B recebe os vários pacotes da mensagem e passa-os para a Camada de Enlace da Máquina B.
* A Camada de Enlace da Máquina B analisa cada pacote para descobrir se ele está intacto ou se durante o caminho ele foi danificado. Assumindo que o pacote recebido está intacto, ele é passado para a Camada de Rede da Máquina B.
* A Camada de Rede da Máquina B olha o endereçamento do pacote e percebe que a Máquina B não é a destinatária deste pacote. Por isso, ele devolve o pacote para a Camada de Enlace da Máquina B.
* A Camada de Enlace da Máquina B coloca novamente as informações no pacote que posteriormente serão usadas para avaliar se o pacote está intacto.
* A Camada Física da Máquina B passa o pacote para a Camada Física da máquina C.
* A camada de Enlace da Máquina C analisa a sanidade do pacote. Se ele estiver danificado e não for possível consertá-lo, ela pede que este seja retransmitido. Caso contrário, ela passa o pacote para a Camada de Rede da Máquina C.
* A Camada de Rede da Máquina C percebe que o pacote recebido é para a Máquina C. Por isso, ela passa o pacote para a Camada de Transporte.
* A Camada de Transporte da Máquina C guarda o pacote e espera que todos os outros pacotes que formam a mensagem cheguem. Quando todos terminam de chegar, esta camada monta todos eles na ordem correta formando novamente uma única mensagem. Ela passa a mensagem inteira para a Camada de Sessão.
* A Camada de Sessão passa a mensagem para a Camada de Apresentação.
* A Camada de Apresentação de C descriptografa a mensagem recebida e passa o resultado para a Camada de Aplicação de C.
* A Camada de Aplicação de C passa a mensagem para o programa de computador adequado para que este mostre para o usuário que ele recebeu uma mensagem de A.
Apesar do Modelo ISO não ser muito usado, o Modelo TCP/IP utilizado para transmitir dados pela internet, funciona de uma maneira bastante parecida. A principal diferença é que a Camada de Apresentação não existe e quem faz o seu papel é a Camada de Aplicação e que além disso, as Camadas de Sessão e Transporte foram substituídas por uma única camada chamada Camada TCP. No modelo TCP/IP, a Camada de Rede é chamada de Camada de IP. Fora isso, a lógica utilizada para transmitir os pacotes é a mesma.