LAB-8

Camada de Transporte

1. Visão Geral da Camada de Transporte

A camada de transporte ocupa a quarta posição no modelo de referência OSI (Open Systems Interconnection), situando-se entre a camada de rede (camada 3) e a camada de sessão (camada 5). Esta posição estratégica confere à camada de transporte um papel fundamental no processo de comunicação em redes, atuando como uma ponte entre as funções de baixo nível relacionadas à transmissão de dados pela rede e as funções de alto nível relacionadas à interação entre aplicações.

Posição no Modelo OSI

  • Camada 7: Aplicação
  • Camada 6: Apresentação
  • Camada 5: Sessão
  • Camada 4: Transporte
  • Camada 3: Rede
  • Camada 2: Enlace
  • Camada 1: Física

Papel Fundamental

A camada de transporte é responsável pela comunicação fim-a-fim entre processos e aplicações que estão rodando em diferentes hosts. Enquanto as camadas inferiores (1-3) preocupam-se com a comunicação entre dispositivos físicos, a camada de transporte foca na comunicação entre processos específicos que estão em execução nesses dispositivos.

Importância para a Comunicação em Redes

Esta camada é fundamental porque:

  • Fornece a abstração necessária entre as aplicações e a infraestrutura de rede subjacente
  • Permite que múltiplas aplicações utilizem simultaneamente a mesma infraestrutura de rede
  • Oferece diferentes níveis de serviço (confiável ou não confiável) conforme as necessidades da aplicação
  • Implementa mecanismos importantes como controle de fluxo e controle de erro, garantindo uma comunicação eficiente

2. Principais Funções da Camada de Transporte

Segmentação e Remontagem de Dados

  • Segmentação: Divide os dados recebidos das camadas superiores em unidades menores chamadas segmentos (TCP) ou datagramas (UDP)
  • Remontagem: Reúne os segmentos recebidos, reorganizando-os na ordem correta para entregar os dados completos à camada superior
  • Identificação de Sequência: Adiciona números de sequência aos segmentos para garantir a correta remontagem

Controle de Fluxo

  • Objetivo: Evitar que um transmissor rápido sobrecarregue um receptor mais lento
  • Mecanismos:
    • Janela deslizante: Limita a quantidade de dados que pode ser enviada sem confirmação
    • Bufferização: Armazena temporariamente dados que não podem ser processados imediatamente
    • Mensagens de controle: Permite que o receptor informe ao transmissor sua capacidade de recebimento

Controle de Erro

  • Detecção de erros: Utiliza checksums ou códigos CRC para identificar corrupção de dados
  • Recuperação de erros: Implementa mecanismos como retransmissão de segmentos perdidos ou corrompidos
  • Confirmações (ACKs): Envio de mensagens confirmando o recebimento correto dos dados

Multiplexação e Demultiplexação

  • Multiplexação: Permite que múltiplas aplicações em um host compartilhem a mesma conexão de rede
  • Demultiplexação: Direciona os dados recebidos para a aplicação correta no host destinatário
    Uso de portas: Identificadores numéricos (0-65535) que diferenciam diferentes aplicações/serviços

Estabelecimento e Encerramento de Conexão

  • Three-way handshake: Processo de estabelecimento de conexão em três etapas (usado pelo TCP)
  • Gerenciamento de estado da conexão: Mantém informações sobre o estado atual da comunicação
  • Encerramento controlado: Procedimento para finalizar conexões de forma ordenada e segura

Garantia de Entrega (Confiabilidade)

  • Serviço confiável: Garante que todos os dados cheguem ao destino, na ordem correta (TCP)
  • Serviço não confiável: Entrega com “melhor esforço”, sem garantias de entrega ou ordenação (UDP)
  • Confirmação de recebimento: Mecanismo para verificar se os dados chegaram corretamente

3. Protocolos da Camada de Transporte

3.1. TCP (Transmission Control Protocol)

Características principais

  • Orientado à conexão: Estabelece uma conexão antes da transmissão de dados
  • Confiável: Garante a entrega de todos os dados, sem perda ou duplicação
  • Ordenado: Mantém a sequência original dos dados
  • Controle de congestionamento: Ajusta a taxa de transmissão conforme as condições da rede
  • Bidirecional (full-duplex): Permite transmissão simultânea em ambas as direções

Mecanismos importantes

  • Three-way handshake: Sincronização inicial (SYN, SYN-ACK, ACK)
  • Janela deslizante: Gerencia quantidade de dados em trânsito
  • Temporizadores: Controlam retransmissões em caso de perda
  • Slow start e congestion avoidance: Algoritmos para ajuste da taxa de envio
  • Números de sequência e acknowledgment: Rastreiam bytes enviados e recebidos

Vantagens

  • Confiabilidade na entrega dos dados
  • Ordenação garantida
  • Recuperação automática de erros
  • Controle de fluxo adaptativo
  • Detecção e correção de congestionamento

Desvantagens

  • Maior overhead (cabeçalhos maiores)
  • Latência inicial para estabelecimento de conexão
  • Maior consumo de recursos (memória e processamento)
  • Bloqueios por head-of-line (quando um segmento perdido atrasa a entrega dos subsequentes)

Aplicações típicas

  • Navegação web (HTTP/HTTPS)
  • Transferência de arquivos (FTP, SFTP)
  • Email (SMTP, IMAP, POP3)
  • Acesso remoto (SSH, Telnet)
  • Banco de dados distribuídos

3.2. UDP (User Datagram Protocol)

Características principais

  • Não orientado à conexão: Não estabelece conexão prévia
  • Não confiável: Não garante entrega, ordem ou integridade
  • Simples: Implementação minimalista com poucas funcionalidades
  • Baixa latência: Menor tempo de processamento e transmissão
  • Sem estado: Não mantém informações sobre a comunicação

Mecanismos importantes

  • Checksum: Verificação básica de integridade (opcional em IPv4, obrigatório em IPv6)
  • Portas de origem e destino: Identificam processos nas máquinas
  • Encapsulamento simples: Adiciona mínimo de overhead aos dados

Vantagens

  • Menor latência (importante para aplicações em tempo real)
  • Menos overhead (cabeçalhos menores)
  • Não há atrasos por estabelecimento de conexão
  • Menor consumo de recursos
  • Suporte a broadcast e multicast

Desvantagens

  • Sem garantia de entrega
  • Sem controle de fluxo
  • Sem ordenação de pacotes
  • Sem recuperação automática de erros
  • Sem controle de congestionamento

Aplicações típicas

  • Streaming de áudio/vídeo
  • VoIP (Voz sobre IP)
  • Jogos online
  • DNS (Sistema de Nomes de Domínio)
  • SNMP (Protocolo Simples de Gerenciamento de Rede)
  • DHCP (Protocolo de Configuração Dinâmica de Host)

Tabela Comparativa

CARACTERÍSTICA TCP UDP
Conexão Orientado à conexão Não orientado à conexão
Confiabilidade Confiável Não confiável
Ordenação Garante ordem original Não garante ordenação
Controle de fluxo Sim Não
Controle de congestionamento Sim Não
Verificação de erros Extensiva Básica (checksum)
Overhead Alto Baixo
Latência Maior Menor
Tamanho do cabeçalho 20-60 bytes 8 bytes
Uso de recursos Alto Baixo
Velocidade Menor Maior

4. Sockets e Comunicação na Camada de Transporte

Conceito de Socket

Um socket é uma abstração que representa um endpoint de comunicação, funcionando como uma interface entre a aplicação e os protocolos de transporte. Tecnicamente, um socket é identificado pela combinação de endereço IP e número de porta, permitindo a comunicação entre processos.

Elementos de um Socket

  • Endereço IP: Identifica o host na rede
  • Número de porta: Identifica o processo ou serviço específico no host
  • Protocolo: Determina as regras de comunicação (TCP ou UDP)
  • Estado: Informações sobre a conexão atual (estabelecida, ouvindo, etc.)

Tipos de Sockets

  • Stream sockets (SOCK_STREAM): Baseados em TCP, fornecem fluxo confiável de dados
  • Datagram sockets (SOCK_DGRAM): Baseados em UDP, para comunicação sem conexão
  • Raw sockets: Permitem acesso direto aos protocolos de camadas inferiores

5. Exemplos Práticos de Uso da Camada de Transporte

Navegação Web (HTTP/HTTPS)

  • Protocolo: TCP (portas 80/443)
  • Funcionamento: Quando acessamos um site, o navegador estabelece uma conexão TCP com o servidor web, envia requisições HTTP e recebe respostas contendo o conteúdo da página
  • Importância do TCP: Garante que todos os elementos da página (HTML, CSS, JavaScript, imagens) sejam recebidos corretamente e na ordem adequada
  • Exemplo prático: Ao acessar “www.exemplo.com”, seu navegador:
    1. Resolve o nome para um endereço IP (via DNS/UDP)
    2. Estabelece conexão TCP na porta 80 ou 443
    3. Envia requisição HTTP GET
    4. Recebe pacotes TCP contendo a resposta
    5. Renderiza a página quando todos os dados chegam

Streaming de Vídeo

  • Protocolo: UDP para streaming ao vivo, TCP para vídeo sob demanda
  • Funcionamento em UDP: Plataformas como Twitch e transmissões ao vivo priorizam velocidade sobre confiabilidade
  • Adaptação de qualidade: Algoritmos ajustam a qualidade do vídeo conforme as condições da rede
  • Buffering: Armazenamento temporário de dados para compensar variações na taxa de transmissão
  • Exemplo prático: Durante uma transmissão ao vivo:
    1. O servidor envia pacotes UDP continuamente
    2. Pequenas perdas são toleradas (podem aparecer como artefatos visuais)
    3. Priorizando baixa latência, não há retransmissão de pacotes perdidos
    4. Protocolos como RTMP, HLS e DASH gerenciam o streaming

Telefonia por IP (VoIP)

  • Protocolo: UDP para mídia, TCP para sinalização
  • Funcionamento: Serviços como Skype, WhatsApp e Zoom usam:
    • RTP (Real-time Transport Protocol) sobre UDP para transmissão de áudio/vídeo
    • SIP ou protocolos proprietários sobre TCP para estabelecer chamadas
  • Otimização: Codecs de áudio compensam perdas de pacotes
  • QoS (Qualidade de Serviço): Priorização de pacotes de voz na rede
  • Exemplo prático: Durante uma chamada VoIP:
    1. Estabelecimento de sessão via TCP
    2. Transmissão de voz em pacotes UDP a cada 20ms
    3. Pequenas perdas são mascaradas por algoritmos de correção
    4. Baixa latência é prioritária (ideal abaixo de 150ms)

Transferência de Arquivos

  • Protocolo: TCP (FTP porta 21, SFTP porta 22)
  • Funcionamento: Aplicações como FileZilla, clientes SFTP, ou serviços como Dropbox utilizam:
    • Conexões TCP para controle e transferência
    • Verificação de integridade dos arquivos após transferência
  • Importância da confiabilidade: Todos os bytes devem ser transferidos corretamente
  • Exemplo prático: Ao enviar um arquivo para um servidor:
    1. Estabelecimento de conexão TCP
    2. Autenticação do usuário
    3. Transferência segmentada com controle de fluxo
    4. Verificação da integridade do arquivo
    5. Confirmação de conclusão da transferência

Jogos Online

  • Protocolo: Combinação de UDP para dados em tempo real e TCP para informações críticas
  • Funcionamento: Jogos como Fortnite, League of Legends e CS:GO utilizam:
    • UDP para posições, movimentos e ações rápidas
    • TCP para inventário, chat e dados que não podem ser perdidos
  • Sincronização de estado: Algoritmos compensam latência e perda de pacotes
  • Exemplo prático: Em um jogo de tiro em primeira pessoa:
    1. Atualizações de posição são enviadas via UDP a cada 50ms
    2. Pacotes perdidos são simplesmente ignorados (o próximo atualiza)
    3. Dados de progresso do jogador são enviados via TCP
    4. Algoritmos de predição compensam a latência da rede

Sistema de Nomes de Domínio (DNS)

  • Protocolo: Tradicionalmente UDP (porta 53), TCP para respostas maiores
  • Funcionamento: Tradução de nomes como “
    www.exemplo.com
    ” para endereços IP
  • Uso do UDP: Consultas rápidas e curtas, ideais para UDP
  • Exemplo prático: Ao digitar um endereço web:
    1. Seu dispositivo envia consulta DNS via UDP
    2. Servidor DNS responde com o endereço IP
    3. Se a resposta for muito grande (>512 bytes), a consulta é repetida via TCP
    4. Todo o processo leva tipicamente <100ms