02 - Transporte
video: https://youtu.be/... no frontmatter da nota.Camada de Transporte no TCP/IP
1. Definição e Papel no TCP/IP
A Camada de Transporte é a quarta camada da pilha TCP/IP. Sua função é permitir que aplicações em diferentes computadores (anfitriões) comuniquem entre si de forma direta. Enquanto a camada de Internet (IP) entrega pacotes entre máquinas, a camada de Transporte entrega os dados ao processo específico (software) dentro dessa máquina.
A grande força desta camada no TCP/IP é oferecer dois tipos de serviços distintos, permitindo que o programador escolha o que é mais importante para a sua aplicação: fiabilidade ou performance.
| Item | Detalhe |
|---|---|
| Camada TCP/IP | 3 (Transporte) |
| Camada OSI equivalente | 4 |
| PDU | Segmento (TCP) / Datagrama (UDP) |
| Endereçamento | Portas (0-65535) |
| Dispositivos | Firewall L4, Load Balancer L4 |
2. Os Dois Protocolos Fundamentais
2.1. TCP (Transmission Control Protocol) - Confiável
O TCP é um protocolo orientado à conexão. Antes de enviar dados, ele estabelece uma sessão formal entre emissor e receptor através de um processo de 3 etapas chamado Three-Way Handshake (SYN, SYN-ACK, ACK).
- Características:
- Confirmação de Recebimento (ACK): O receptor avisa que os dados chegaram.
- Retransmissão: Se um segmento se perder, o TCP envia-o novamente (após timeout ou 3 ACKs duplicados).
- Ordenação: Garante que os dados chegam à aplicação na ordem correta (números de sequência).
- Controle de Fluxo: Evita que o emissor envie dados mais rápido do que o receptor consegue processar (janela deslizante).
- Controle de Congestionamento: Algoritmos como Reno, Cubic e BBR ajustam a taxa de envio para não saturar a rede.
- Uso: Web (HTTP/HTTPS), E-mail (SMTP/IMAP/POP3), Transferência de ficheiros (FTP, SFTP), Acesso remoto (SSH).
2.2. UDP (User Datagram Protocol) - Rápido
O UDP é um protocolo não orientado à conexão. Ele envia os dados sem avisar e não se preocupa se chegaram ao destino ou na ordem certa. É um protocolo de "melhor esforço".
- Características:
- Sem Confirmação: Não há ACKs, o que reduz o tráfego de controle.
- Baixa Latência: Ideal para transmissões em tempo real.
- Simplicidade: O cabeçalho é muito pequeno (8 bytes), tornando-o muito eficiente.
- Multicast nativo: Suporta envio de um datagrama para múltiplos destinatários simultaneamente.
- Uso: Streaming de vídeo/áudio (RTP), Chamadas de Voz (VoIP), Jogos Online, Consultas DNS, SNMP, DHCP.
3. O Conceito de Portas e Sockets
Como é que o computador sabe que um pacote de dados é para o Chrome e não para o Spotify? Através das Portas.
- Portas (Ports): São números (0 a 65535) que identificam o serviço ou aplicação.
- Portas Conhecidas (Well-known): 0 a 1023 (ex: 80 para HTTP, 443 para HTTPS, 22 para SSH, 25 para SMTP).
- Portas Registradas: 1024 a 49151 (ex: 3306 MySQL, 5432 PostgreSQL, 8080 HTTP alternativo).
- Portas Dinâmicas/Efêmeras: 49152 a 65535 (usadas como porta de origem temporária em conexões de saída).
- Socket: É a combinação de um Endereço IP + Protocolo + Número de Porta.
- Exemplo:
192.168.1.10:TCP:443. O socket é a "morada completa" de uma aplicação na rede.
4. Unidade de Dados (PDU): Segmentos e Datagramas
Na camada de transporte, o nome da PDU depende do protocolo utilizado:
- Se usarmos TCP, o dado chama-se Segmento ( cabeçalho de 20-60 bytes).
- Se usarmos UDP, o dado chama-se Datagrama (cabeçalho fixo de 8 bytes).
Cabeçalho TCP (principais campos)
| Campo | Tamanho | Função |
|---|---|---|
| Source Port | 16 bits | Porta de origem |
| Destination Port | 16 bits | Porta de destino |
| Sequence Number | 32 bits | Ordem dos bytes |
| Ack Number | 32 bits | Próximo byte esperado |
| Flags | 9 bits | SYN, ACK, FIN, RST, PSH, URG... |
| Window Size | 16 bits | Controle de fluxo |
5. Multiplexação e Desmultiplexação
A camada de transporte permite que dezenas de aplicações utilizem a rede em simultâneo através de uma única ligação física.
- Multiplexação: O emissor junta os dados de várias aplicações, adiciona os cabeçalhos de transporte com as portas e envia para a camada de Internet.
- Desmultiplexação: O receptor lê as portas de destino e entrega cada pedaço de dado à aplicação correspondente.
6. Three-Way Handshake (Estabelecimento TCP)
Cliente Servidor
| ---- SYN (seq=x) -----------> |
| <--- SYN+ACK (seq=y, ack=x+1) --- |
| ---- ACK (ack=y+1) ---------> |
| === Dados começam a fluir === |
7. Encerramento de Conexão TCP (Four-Way)
Cliente Servidor
| ---- FIN (seq=x) -----------> |
| <--- ACK (ack=x+1) --- |
| <--- FIN (seq=y) ---------- |
| ---- ACK (ack=y+1) --------> |
| (TIME_WAIT 2*MSL) |
8. Comparação Direta: TCP vs. UDP
| Característica | TCP | UDP |
|---|---|---|
| Conexão | Sim (3-way handshake) | Não |
| Confiabilidade | Alta (ACK, retransmissão) | Baixa (melhor esforço) |
| Ordem dos dados | Garantida | Não garantida |
| Cabeçalho | 20-60 bytes | 8 bytes |
| Controle de fluxo/congestionamento | Sim | Não |
| Multicast/Broadcast | Não | Sim |
| Velocidade | Mais lento | Mais rápido |
| Aplicações típicas | Web, e-mail, FTP | Streaming, VoIP, jogos, DNS |
9. Analogia Didática
- TCP é como uma chamada telefônica: você confirma se a pessoa está ouvindo, repete quando ela não entende e só encerra quando ambos concordam.
- UDP é como um comunicado de rádio walkie-talkie: você fala e torce para que o outro ouça. Se a comunicação cair, você repete o essencial sem se preocupar em confirmar cada palavra.
10. Resumo Técnico
| Atributo | Valor |
|---|---|
| Camada | 4 (OSI) / Transporte (TCP-IP) |
| PDU | Segmento / Datagrama |
| Protocolos | TCP, UDP, QUIC, SCTP, DCCP |
| Endereçamento | Portas (16 bits) |
| RFC base | RFC 793 (TCP), RFC 768 (UDP), RFC 9000 (QUIC) |
11. Conclusão
A Camada de Transporte é o ponto onde a rede encontra o software. É aqui que o protocolo IP genérico se torna específico para cada aplicação. O TCP trouxe a confiabilidade que tornou a web, o e-mail e a transferência de arquivos viáveis. O UDP trouxe a velocidade que sustenta o streaming, o VoIP e a Internet das Coisas. Compreender a diferença entre os dois — e saber quando usar cada um — é uma das habilidades mais fundamentais para qualquer engenheiro de redes ou desenvolvedor de sistemas distribuídos.