Voltar para Posts

Ciências da computação dia 244

Camada de Transporte: Protocolos TCP e UDP

A camada de transporte é a quarta camada do modelo OSI e a segunda do modelo TCP/IP. Sua principal função é permitir a comunicação lógica entre processos de aplicação que rodam em hosts distintos. Diferente das camadas inferiores, que cuidam do roteamento e da entrega física dos dados, a camada de transporte trabalha diretamente com a multiplexação de aplicações através do conceito de portas. Nesta aula, vamos detalhar o funcionamento dos dois principais protocolos dessa camada: TCP e UDP.

Multiplexação e Demultiplexação com Portas

Imagine um servidor que roda um servidor web (HTTP) e um servidor de email (SMTP) simultaneamente. Quando um pacote chega para esse servidor, como ele sabe para qual aplicação entregar os dados? A resposta está no número da porta.

O cabeçalho da camada de transporte contém campos para a porta de origem e a porta de destino. A combinação de um endereço IP com um número de porta forma um socket, que é o endpoint único de uma comunicação.

Vimos em aulas anteriores de redes (como as dos dias 277, 281 e 284) que a camada de rede (IP) cuida da entrega "host-a-host". A camada de transporte estende essa entrega para "processo-a-processo".

Protocolo UDP (User Datagram Protocol)

O UDP é o protocolo mais simples da camada de transporte. Ele fornece um serviço de entrega de dados sem conexão e não confiável. Não há handshake antes do envio, e o protocolo não oferece garantias de que os dados chegarão ao destino.

Características principais do UDP:

Onde o UDP é usado?

O UDP é frequentemente chamado de protocolo "dispare e esqueça" (fire and forget). Se a aplicação precisa de confiabilidade, ela mesma deve implementá-la sobre o UDP.

Protocolo TCP (Transmission Control Protocol)

O TCP é o protocolo padrão para a grande maioria das aplicações da internet. Ele oferece um serviço orientado à conexão e confiável.

Características principais do TCP:

Estrutura do segmento TCP:

O cabeçalho TCP é mais complexo que o UDP, variando de 20 a 60 bytes. Ele contém campos como:

O Three-Way Handshake:

O estabelecimento de uma conexão TCP segue três passos:

  1. O cliente envia um segmento com a flag SYN ativa e um número de sequência inicial (ISN).
  2. O servidor responde com um segmento SYN-ACK, confirmando o ISN do cliente e enviando seu próprio ISN.
  3. O cliente envia um segmento ACK confirmando o ISN do servidor. A conexão está estabelecida.

O TCP é utilizado em praticamente todas as aplicações que exigem integridade dos dados: web (HTTP/HTTPS), email (SMTP, IMAP), transferência de arquivos (FTP), acesso remoto (SSH).

Comparação: TCP vs UDP

Característica TCP UDP
Conexão Orientado à conexão Sem conexão
Confiabilidade Confiável (ACKs e retransmissão) Não confiável (melhor esforço)
Ordenação Ordenado (números de sequência) Não ordenado
Overhead Alto (20-60 bytes de cabeçalho) Baixo (8 bytes de cabeçalho)
Velocidade Mais lento (handshake e controle) Mais rápido (sem overhead)
Controle de Fluxo Sim (Sliding Window) Não
Controle de Congestionamento Sim (Slow Start, etc.) Não
Uso Típico Web, Email, FTP, SSH DNS, DHCP, Streaming, Jogos

Portas e Sockets: Uma Visão Aprofundada

Conforme discutimos, a combinação de um endereço IP e um número de porta forma um socket. Uma conexão é unicamente identificada por um par de sockets: (IP_origem, Porta_origem) e (IP_destino, Porta_destino).

As portas são divididas em três categorias:

Esse modelo de multiplexação com portas é o que permite que um único servidor web atenda milhares de clientes simultaneamente. Cada conexão tem um socket de origem diferente, mesmo que o socket de destino seja o mesmo (IP_servidor, Porta 80).

Perguntas Frequentes (FAQ)

1. Qual a principal diferença entre TCP e UDP?

A principal diferença é a confiabilidade. O TCP é orientado à conexão e confiável, garantindo que os dados cheguem na ordem correta. O UDP é sem conexão e não confiável, priorizando a velocidade em detrimento da garantia de entrega.

2. O que é o Three-Way Handshake?

É o processo de estabelecimento de uma conexão TCP, composto por três passos: SYN, SYN-ACK e ACK. Ele sincroniza os números de sequência entre o cliente e o servidor.

3. Por que o UDP é mais rápido que o TCP?

Porque o UDP não possui o overhead do estabelecimento de conexão (handshake), não precisa esperar confirmações de recebimento (ACKs) e não possui mecanismos de controle de fluxo e congestionamento. Ele simplesmente "envia e esquece".

4. Quais aplicações usam TCP e quais usam UDP?

Aplicações que exigem integridade total dos dados, como web (HTTP/HTTPS), emails (SMTP) e transferência de arquivos (FTP), usam TCP. Aplicações sensíveis à latência, como streaming de vídeo ao vivo, jogos online e DNS, usam UDP.

5. O que é um socket?

Um socket é a interface de comunicação de um processo, definido pela combinação de um endereço IP e um número de porta. Ele representa o endpoint de uma conexão.

Conclusão

A camada de transporte é um dos pilares da arquitetura de redes moderna. Entender as diferenças fundamentais entre TCP e UDP, o funcionamento do three-way handshake e dos mecanismos de controle de fluxo e congestionamento é essencial para qualquer profissional que trabalhe com redes, sistemas ou desenvolvimento. No dia 244 da nossa jornada, construímos uma base sólida sobre esses protocolos que são a espinha dorsal da internet.

Continue acompanhando as próximas aulas para explorarmos mais a fundo temas como segurança da camada de transporte (TLS), QUIC e o futuro dos protocolos de transporte.