Vá para uma página ou matéria
Prática · Redes de Computadores · 20/09/2026
Os dois protocolos ampliam a entrega do IP, que vai de hospedeiro a hospedeiro, para uma entrega entre processos (multiplexação e demultiplexação), e os dois fazem verificação de integridade com campos no cabeçalho. O UDP para aí: remessa não confiável e sem ordem, uma extensão simples do melhor esforço do IP. O TCP acrescenta remessa confiável e em ordem, controle de congestionamento, controle de fluxo e estabelecimento de conexão. Nenhum dos dois oferece garantia de atraso nem de largura de banda.
Os serviços da camada de transporte são limitados pelo modelo de serviço das camadas de baixo. Se a camada de rede não garante atraso, o transporte também não consegue garantir, do mesmo jeito que as mães da analogia não podem prometer um prazo que o correio não cumpre. Mesmo assim, alguns serviços podem ser criados pela própria camada de transporte, como a transferência confiável que o TCP monta sobre o IP não confiável. O IP faz comunicação entre hospedeiros, não entre processos: entregar ao processo certo é tarefa do transporte.
Um socket UDP é identificado por uma tupla de dois elementos: endereço IP de destino e número de porta de destino. Quando chega um segmento UDP, o hospedeiro olha a porta de destino e encaminha o segmento ao socket com essa porta. Por isso, segmentos UDP de origens diferentes com o mesmo IP e porta de destino vão para o mesmo processo pelo mesmo socket. A porta de origem viaja no segmento e serve de endereço de retorno para a resposta. A tupla de 4 elementos é a identificação do socket TCP.
Na analogia, as crianças são os processos, as cartas nos envelopes são as mensagens da aplicação, as casas são os hospedeiros, as mães são o protocolo de transporte e o serviço postal é o protocolo de rede. A camada de transporte oferece comunicação lógica entre processos em hospedeiros diferentes e fica nos sistemas finais, não nos roteadores. No envio, ela transforma as mensagens em segmentos com cabeçalho e passa à camada de rede; no recebimento, remonta as mensagens e entrega à aplicação. A camada de rede oferece comunicação lógica entre hospedeiros. Se os pais assumem no lugar das mães e recolhem as cartas com menos frequência, ou deixam o cachorro mastigar algumas, o serviço muda: é assim que protocolos de transporte diferentes oferecem modelos de serviço diferentes.
O UDP (RFC 768) é o transporte mais simples: melhor esforço, sem handshake, e cada segmento é tratado de forma independente, podendo se perder ou chegar fora de ordem. Ele existe porque muitas aplicações se dão melhor assim. A aplicação controla melhor como e quando os dados saem, não há o atraso do estabelecimento de conexão, não há estado de conexão (buffers, parâmetros de congestionamento, números de sequência e de reconhecimento) e o cabeçalho tem 8 bytes, contra 20 do TCP. Também não há controle de congestionamento, então o UDP pode transmitir o mais rápido possível. Isso serve para DNS, SNMP e RIP (gerenciamento precisa funcionar mesmo com a rede sobrecarregada) e para voz e vídeo em tempo real, que toleram pequenas perdas. O risco é que, se todos mandarem vídeo em alta taxa sem controle, os roteadores transbordam e poucos pacotes chegam. A confiabilidade, quando necessária, pode ser implementada pela própria aplicação.
O cabeçalho UDP tem quatro campos de 2 bytes (16 bits) cada, o que dá os 8 bytes: porta de origem, porta de destino, tamanho em bytes do segmento inteiro (cabeçalho incluído) e soma de verificação. Depois vêm os dados da aplicação. O remetente trata o conteúdo do segmento como uma sequência de inteiros de 16 bits, soma tudo em complemento de 1 e grava o resultado no campo de checksum. O destinatário recalcula e compara: se der diferente, detectou erro; se der igual, nenhum erro foi detectado. A soma só detecta, não corrige. Ela existe porque, embora algumas camadas inferiores verifiquem erros, nada garante que todos os enlaces façam isso, então o UDP oferece detecção de erros fim a fim.
Cada número de porta tem 16 bits, então vai de 0 a 65535 (2^16 - 1). As portas de 0 a 1023 são as bem conhecidas: são restritas e reservadas a serviços padronizados como HTTP, FTP e SSH, listados nas RFC 1700 e RFC 3232. Cada porta é exclusiva no hospedeiro, e cada processo de rede usa a sua, o que permite a demultiplexação entre vários processos.
Um socket TCP é identificado por uma tupla de 4 elementos: IP de origem, porta de origem, IP de destino e porta de destino. O hospedeiro usa os quatro para escolher o socket. O servidor tem um socket de boas-vindas esperando na porta; o cliente manda um segmento de pedido de conexão com a porta de destino, um bit de estabelecimento e a própria porta de origem. O sistema operacional do servidor entrega o pedido ao processo daquela porta, que cria um socket novo (em Java, welcomeSocket.accept()). A camada de transporte guarda a porta e o IP de origem, a porta de destino e o próprio IP. Assim o servidor mantém vários sockets TCP simultâneos, todos com destino na porta 80, que se diferenciam pela origem.
Um servidor web (Apache na porta 80, por exemplo) recebe todos os segmentos com porta de destino 80 e mantém um socket diferente para cada cliente conectado. Com HTTP persistente, cliente e servidor continuam usando o mesmo socket para as várias requisições. Com HTTP não persistente, cada par requisição e resposta abre uma nova conexão TCP e, portanto, um novo socket. Servidores de alto desempenho costumam usar um único processo com uma thread para cada socket, em vez de um processo por conexão.
Um processo pode ter um ou mais sockets, e cada socket tem um identificador exclusivo, que é diferente para UDP e para TCP. Demultiplexação é entregar os segmentos recebidos ao socket correto. Multiplexação é, no envio, juntar os dados de vários sockets, encapsulá-los e acrescentar o cabeçalho com as informações que depois vão permitir a demultiplexação. O hospedeiro recebe datagramas IP, cada um com IP de origem e de destino e carregando um segmento com as portas de origem e de destino, e usa esses endereços e portas para chegar ao socket certo. Roteamento é trabalho da camada de rede.