Artigo original: https://www.freecodecamp.org/news/osi-model-computer-networking-for-beginners/

Neste artigo, você aprenderá sobre os principais conceitos do modelo Open Systems Interconnections (OSI – em português, interconexões de sistemas abertos) de modo simples e fácil.

Como desenvolvedor, é uma boa ideia aprender como as coisas funcionam internamente. Assim, você entende o que seu código e as ferramentas que você usa estão realmente fazendo.

Pode, no entanto, parecer mais fácil confiar na abstração da caixa preta e ignorar o funcionamento interno.

Uma abstração popular da caixa preta é a internet.

Claro, muitos de nós, provavelmente, sabemos o básico do que é a internet e como ela funciona. Há um client e um servidor e eles simplesmente "se comunicam" entre eles usando algo chamado HTTP ou HTTPS?

Essa, porém, é a extensão do conhecimento da maioria das pessoas.

Não estou dizendo que não devemos usar abstrações – estou apenas dizendo que devemos ter alguma ideia básica sobre como as coisas funcionam.

É por isso que estou escrevendo este artigo: para desmistificar essa caixa preta para ajudá-lo a aprender como os computadores se comunicam uns com os outros através de uma rede.

O que é o modelo OSI?

osi-model-layers
As sete camadas do OSI 

O modelo Open Systems Interconnection, ou OSI, é, essencialmente, um sistema de referência que estabelece como os computadores se comunicam entre si através de uma rede.

Ele foi criado em 1983 por representantes de empresas de telecomunicações e oficialmente padronizado em 1984 pela International Organization for Standardization (ISO).

Ele é dividido em sete camadas. Cada camada tem seu próprio domínio e recebe dados da camada anterior, enquanto passa dados para a próxima camada.

As sete camadas são:

  1. Camada da aplicação
  2. Camada da apresentação
  3. Camada da sessão
  4. Camada do transporte
  5. Camada da rede
  6. Camada da vinculação de dados
  7. Camada física

Se pensarmos nelas em termos da programação, cada camada é uma classe com alguma funcionalidade principal. Cada classe se comunica apenas com a classe acima ou abaixo dela.

Tenha em mente que este é um modelo de referência, o que significa que não o usamos na vida real. Há outro modelo que é muito semelhante ao modelo OSI, mas encapsula as três primeiras camadas e as duas últimas.

Esse modelo da "vida real" é chamado de modelo TCP/IP, que é o que a internet roda.

osi-vs-tcpip-1
Diagrama dos modelos OSI e TCP/IP em contraste

Porém, antes de entrarmos e lidarmos com cada camada uma a uma, vamos explicar por que você deve aprender o modelo OSI se ele nem é usado na vida real.

Por que aprender o modelo OSI?

Durante os últimos 20 anos, aproximadamente, o mundo mudou drasticamente.

A internet veio, a "web" surgiu, e, dentro do ecossistema da web, muita coisa mudou. Começamos com páginas HTML simples. Depois, veio o JavaScript. Agora, temos todos esses frameworks e, às vezes, parece ser muito difícil de entender isso tudo.

Você, contudo, tem de lembrar disso:

Aprenda o básico, aprenda a partir dos princípios iniciais.

Vamos pegar a web, por exemplo, além de todas essas mudanças que vimos nos últimos 20 anos.

O modo como a web funciona não mudou muito.

Ainda usamos o protocolo HTTP.

É verdade que o protocolo HTTP foi atualizado, mas nem tanto.

Mesmo se quebrarmos o HTTP, ele é feito de TCP, que também não mudou muito.

Meu ponto é que você deve parar de olhar para as coisas novas e brilhantes. Você deve se concentrar nos fundamentos sobre os quais essas coisas novas e brilhantes são construídas.

Por exemplo, lembro-me de quando os soquetes da web eram uma coisa popular.

Se os quebrarmos, porém, eles são baseados no protocolo TCP.

Se você conhece o TCP, pode entender facilmente como os soquetes da web funcionam e não precisa depender de abstrações de caixa preta.

Espero ter convencido você do motivo pelo qual deve aprender com os princípios iniciais. Isso não se aplica apenas à engenharia de software, mas a muitos outros campos.

Feito isso, vamos às sete camadas do modelo OSI.

As sete camadas do modelo OSI

Camada da aplicação

3
Essa é a camada onde se encontra o usuário final

A camada de aplicação é onde a maioria dos engenheiros de software trabalha. É aqui que seus navegadores vivem.

Não estou falando, contudo, de aplicações concretas, como Chrome, Skype ou Outlook.

Estou falando de coisas mais fundamentais, como protocolos.

Por exemplo:

  • Seu navegador faz uma solicitação para um servidor da web usando o protocolo HTTP.
  • Sua aplicação de e-mail usa o protocolo SMTP para enviar e receber e-mails.
  • Sem o protocolo DNS, você teria que digitar 142.250.150.138 em vez de google.com.

Em poucas palavras, a camada da aplicação lida com a base que quase todas as aplicações do usuário final utilizam.

Camada de apresentação

4

Quando o client faz a solicitação HTTP, a própria solicitação é passada para a camada de apresentação (também chamada de camada da sintaxe).

Essa camada lida com três funcionalidades principais:

Criptografia e descriptografia

Você não quer que seus dados sejam divulgados em público. É por isso que pessoas inteligentes criaram a Transport Layer Security (TLS). Ela, essencialmente, criptografa seus dados.

Ela também é responsável por descriptografar solicitações vindas de outros servidores para serem consumidas pela camada da aplicação.

Serialização e desserialização

São palavras enormes, mas, essencialmente, significam "tradução".

Queremos "traduzir" nossos dados em modos que sejam compreendidos pela aplicação.

Por exemplo, estruturas de dados simples podem ser traduzidas em "objetos" que nossa aplicação em JavaScript entende.

Por outro lado, se quisermos que nossos dados passem pela camada, traduziríamos nosso objeto em estruturas de dados simples que poderiam ser entendidas nas camadas inferiores.

Compressão

Isso é simples: quanto menos bits houver para enviar, mais rápido será o pedido.

Essa também é uma das principais funções da camada de apresentação. Tenha em mente que esta é uma compactação sem perdas, o que significa que nenhuma informação será perdida no processo.

Bem, para ser justo, no mundo real, a maioria dessas coisas é feita na camada de aplicação.

É por isso que, no modelo TCP/IP, a camada de apresentação faz parte da camada de aplicação.

Camada da sessão

5-1
A camada da sessão é responsável pela abertura, fechamento e manutenção das conexões entre o client e o servidor

Esta é um pouco confusa. De fato, não consegui encontrar muitos casos de uso para isso.

A função principal da camada de sessão é gerenciar conexões entre client e servidor.

O que isso realmente significa, no entanto?

Digamos que você queira ir para google.com

Para fazer isso, você primeiro tem que estabelecer uma conexão com google.com. Então, você diz "Ei, servidor, como está? Eu quero me conectar a google.com".

O servidor responde: "Sim, claro".

Parabéns, você acabou de estabelecer uma conexão com o servidor do google.com e pode enviar livremente uma solicitação GET para buscar a página.

Resumindo a história, essa camada é usada para:

  • Abrir conexões
  • Manter as conexões vivas
  • Fechar conexões.

Agora vem o choque de realidade: na vida real, isso praticamente não existe e faz parte da Camada de Transporte – que discutiremos a seguir.

Camada do transporte

Transport-Layer
TCP e UDP visualizados – o TCP é confiável, mas lento, enquanto o UDP é rápido, mas não confiável

É aqui que as coisas interessantes acontecem.

A camada do transporte geralmente é definida com base no protocolo que está sendo usado.

Os dois mais populares são:

  • Transmission Control Protocol (TCP – em português, protocolo de controle de transmissão)
  • User Datagram Protocol (UDP – em português, protocolo de datagrama do usuário)

O TCP é um dos principais protocolos da suite da internet. Ele é usado em cima do IP (protocolo de internet) para garantir a transmissão confiável de pacotes.

O TCP corrige muitos problemas que surgem quando você usa IP, como pacotes perdidos, pacotes fora de ordem, pacotes duplicados e pacotes corrompidos.

Você usaria o TCP em aplicações que exigem que todos os pacotes estejam livres de erros, como mensagens de texto.

Por outro lado, o UDP é sem monitoração de estado, o que significa que ele não salva nenhum estado entre o client e o servidor. Ele também é muito leve, tornando-o rápido. A desvantagem, porém, está no fato de que ele não é confiável. Os pacotes podem desaparecer, ficar corrompidos e assim por diante.

O UDP é usado principalmente quando você realmente não se importa se perder alguns pacotes aqui e ali, como em streaming de vídeo.

Tenha em mente, também, que os dados nessa camada são chamados de segmentos.

Resumindo a história, o TCP é confiável, mas lento, enquanto o UDP não é confiável, mas é rápido.

Camada da rede

Network-Layer-1
A camada da rede é responsável pelo envio de pacotes de uma rede para outra

Eu realmente não sei por que ela é chamada de camada da rede.

Deveria ser chamada de camada de internet, já que porque o protocolo mais importante aqui é o Internet Protocol (IP).

O que o IP basicamente faz é pegar os segmentos do protocolo de transporte e adicionar metadados que ajudam a identificar onde seu client está em uma rede local.

Outra função da camada de rede é o encaminhamento de mensagens, o que significa que ela envia seus pacotes de rede para rede.

Os dados nessa camada são chamados de pacotes.

Camada da vinculação dos dados

Data-Link-Layer
A camada de vinculação dos dados é composta de duas partes, MAC e LLC

Essa camada define como os dados são transmitidos entre dois sistemas.

Ela cuida de coisas como por quanto tempo dois sistemas conversam entre si, quantos dados podem ser enviados e o que acontece se houver erros. Tudo isso é tratado na camada de vinculação dos dados.

A camada de vinculação dos dados é dividida em duas subcamadas:

  • Logical Link Layer (LLC) – essa camada fornece controle de fluxo, reconhecimento e tratamento de erros caso as coisas deem errado.
  • Controle de Acesso à Mídia (MAC) – essa camada é responsável por atribuir um número de ID exclusivo com base na placa de rede, chamado endereço MAC. Ou seja, não há dois dispositivos com os mesmos endereços MAC.

Os pacotes são retirados da camada da rede e encapsulados com a adição de novos cabeçalhos para o endereço MAC do client e do servidor.

Há também outro subconjunto de dados adicionados no final do pacote que é usado para detecção de erros. Ele é chamado de cauda (do inglês, tail).

Depois que esses metadados são adicionados, os dados agora são chamados de quadros (da inglês, frames).

Camada física

Physical-Layer
Bits podem ser transferidos usando eletricidade, ondas de rádio e, até mesmo, luz

Por fim, chegamos à camada física.

Não se confunda com a palavra "física" – não estamos falando apenas de fios.

Os dados podem ser transferidos de muitas maneiras diferentes, como ondas de rádio ou até mesmo luz.

Infelizmente, esses meios de transporte não conhecem "frames", só conhecem bits.

A função dessa camada é simplesmente transformar frames em bytes (8 bits) e enviá-los por algum método de transporte (eletricidade, ondas, luz e assim por diante).

Ao final, nossa solicitação será transmitida para o servidor, que passará pelo mesmo processo, mas ao contrário.

Conclusão

Neste artigo, você aprendeu:

  • Que o modelo OSI é um modelo de referência sobre como dois sistemas conversam entre si através de uma rede.
  • Que não usamos esse modelo na vida real. Em vez disso, usamos outro modelo semelhante chamado de modelo TCP/IP.
  • Que o modelo OSI é composto de sete partes, cada uma com uma função específica.

Espero que você tenha aprendido algo hoje e gostaria de agradecer a você por ter chegado até aqui.

O autor compartilha conteúdos semelhantes a esse no Twitter. Se estiver interessado, siga-o por lá.