Este artigo explora os fundamentos das redes de computadores, abordando os modelos de referência ISO/OSI e TCP/IP, a lógica do endereçamento IP e sub-redes, e os protocolos de transporte UDP e TCP. O objetivo é fornecer uma base sólida para a compreensão de como os dados trafegam em uma rede.
Modelo de Referência ISO/OSI
O modelo OSI (Open Systems Interconnection) é um modelo conceitual que descreve as funções de um sistema de comunicação em rede. Ele divide a comunicação em sete camadas abstratas, cada uma com uma função específica.
As sete camadas, da mais baixa para a mais alta, são:
- Camada Física
- Camada de Enlace de Dados
- Camada de Rede
- Camada de Transporte
- Camada de Sessão
- Camada de Apresentação
- Camada de Aplicação
Um mnemonic comum para lembrar a ordem é: "Por Favor Não Me Jogue Salsichas Passadas". Entender as funções de cada camada é crucial para diagnosticar problemas de rede e entender tecnologias como switches de Camada 3 ou firewalls de Camada 7.
Funções das Camadas
A Camada Física lida com a transmissão bruta de bits sobre um meio físico, como cabos de cobre, fibra óptica ou ondas de rádio (Wi-Fi).
A Camada de Enlace de Dados é responsável pela transferência de dados entre nós diretamente conectados na mesma rede. Ela utiliza endereços físicos, como os endereços MAC (Media Access Control), para identificar dispositivos na rede local.
A Camada de Rede permite a comunicação entre redes diferentes. Ela utiliza endereços lógicos (endereços IP) e determina a melhor rota para os pacotes de dados viajarem da origem ao destino (roteamento).
A Camada de Transporte fornece comunicação ponto a ponto confiável entre processos em hosts dfierentes. Os principais protocolos aqui são TCP (orientado a conexão e confiável) e UDP (sem conexão e rápido).
As Camadas de Sessão, Apresentação e Aplicação gerenciam as sessões de comunicação, a tradução de dados e a interação direta com as aplicações do usuário, respectivamente. Protocolos como HTTP, FTP e DNS operam na camada superior.
Modelo TCP/IP
O modelo TCP/IP é o modelo prático que implementa a arquitetura da Internet. Ele é frequentemente representado com quatro camadas, que mapeiam diretamente para uma versão simplificada do modelo OSI.
- Camada de Aplicação: Combina as funções das camadas de Aplicação, Apresentação e Sessão do modelo OSI.
- Camada de Transporte: Equivalente à camada de Transporte do modelo OSI.
- Camada de Internet: Equivalente à camada de Rede do modelo OSI.
- Camada de Acesso à Rede: Combina as funções das camadas de Enlace de Dados e Física do modelo OSI.
Endereçamento IP e Sub-redes
Cada dispositivo em uma rede IP precisa de um endereço único para ser identificado. Um endereço IPv4 é composto por 32 bits, normalmente expresso em quatro octetos em formato decimal pontilhado (ex: 172.16.254.1).
Para verificar a configuração de rede em um sistema Linux, pode-se usar comandos como ip addr show ou o legado ifconfig. A saída típica inclui o endereço IP, a máscara de sub-rede (ex: /24 ou 255.255.255.0) e o endereço de broadcast.
$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet 10.10.15.75/24 brd 10.10.15.255 scope global dynamic eth0
valid_lft 86313sec preferred_lft 86313sec
Os endereços IP privados, definidos no RFC 1918, são usados dentro de redes locais e não são roteáveis na Internet pública. Os ranges são 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16. Para acessar a Internet, um dispositivo com IP privato depende de um roteador com IP público que execute NAT (Network Address Translation).
Roteamento é o processo pelo qual os pacotes IP são encaminhados para seu destino correto. Os roteadores usam tabelas de roteamento para decidir o próximo salto (next hop) para encaminhar um pacote com base em seu endereço IP de destino.
Protocolos de Transporte: UDP e TCP
Enquanto o IP lida com o endereçamento e o roteamento entre hosts, os protocolos de transporte UDP e TCP permitem a comunicação entre aplicações específicas em diferentes hosts usando números de porta (0 a 65535).
UDP (User Datagram Protocol)
O UDP é um protocolo simples, sem conexão e não confiável. Ele envia datagramas sem estabelecer uma conexão ou garantir a entrega. Isso o torna eficiente para aplicações como streaming de vídeo, jogos online ou consultas DNS, onde a perda de alguns pacotes é preferível ao atraso.
TCP (Transmission Control Protocol)
O TCP é um protocolo orientado a conexão e confiável. Antes de enviar dados, ele estabelece uma conexão usando um processo chamado three-way handshake:
- O cliente envia um pacote SYN para o servidor.
- O servidor responde com um pacote SYN-ACK.
- O cliente envia um pacote ACK, e a conexão é estabelecida.
O TCP garante a entrega ordenada e sem erros dos dados, utilizando números de sequência e reconhecimentos (ACKs). É usado por protocolos como HTTP, FTP e SMTP, onde a integridade dos dados é crucial.
Encapsulamento de Pacotes
Os dados das aplicações passam por um processo de encapsulamento conforme descem as camadas do modelo. Cada camada adiciona seu próprio cabeçalho (e às vezes um trailer) aos dados recebidos da camada acima.
- Os dados da Aplicação são passados para a camada de Transporte.
- A camada de Transporte (TCP ou UDP) adiciona seu cabeçalho, criando um Segmento ou Datagrama.
- A camada de Internet (IP) adiciona o cabeçalho IP, criando um Pacote.
- A camada de Acesso à Rede adiciona cabeçalhos e trailers de enlace de dados (como Ethernet), criando um Quadro.
Prática com Telnet
O Telnet é um protocolo de terminal remoto que opera na camada de aplicação. O utilitário de linha de comando telnet pode ser usado para testar a conectividade TCP e interagir com serviços baseados em texto. Por exemplo, para verificar um servidor web na porta 80:
$ telnet 192.168.1.100 80
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
GET / HTTP/1.1
Host: example.local
HTTP/1.1 200 OK
Content-Type: text/html
...
Esta técnica é útil para diagnosticar se um serviço está respondendo e como ele responde a requisições diretas.