Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

03 - Serviços

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

A camada de transporte oferece diferentes categorias de Serviços dependendo das necessidades da aplicação que a utiliza. Estes serviços são definidos por primitivas como orientação a conexão, confiabilidade, modo de operação (simplex, half-duplex, full-duplex) e o modelo de comunicação (circuito virtual vs datagrama).

1. Serviço Orientado à Conexão (Connection-Oriented)

Implementado principalmente pelo TCP.
- Exige uma fase de estabelecimento (Three-Way Handshake) antes dos dados serem enviados.
- Oferece um fluxo de bytes bidirecional e confiável.
- Similaridade: Funciona como uma chamada telefônica, onde o link é mantido enquanto dura a conversação.

Fases de uma Conexão TCP

Fase Descrição Estados TCP
Estabelecimento 3-way handshake (SYN, SYN+ACK, ACK) LISTEN → SYN_SENT → ESTABLISHED
Transferência de dados Stream full-duplex confiável ESTABLISHED
Liberação 4-way handshake (FIN, ACK, FIN, ACK) FIN_WAIT_1/2, CLOSE_WAIT, LAST_ACK, TIME_WAIT

Características do Serviço Orientado a Conexão

  • Negociação de parâmetros: MSS, Window Scale, SACK, Timestamps trocados no SYN.
  • Manutenção de estado: Ambos os lados mantêm Sequence Number, Ack Number, cwnd, rwnd, ssthresh.
  • Detecção de falhas: Timeout de inatividade (keepalive) detecta queda do par.
  • Custo: 1 RTT extra antes do primeiro byte útil + overhead de cabeçalho (20 bytes).

2. Serviço Sem Conexão (Connectionless)

Implementado principalmente pelo UDP.
- Não há estabelecimento prévio de conexão; o dado é simplesmente enviado.
- Cada unidade de dados (Datagrama) é tratada de forma independente.
- Similaridade: Funciona como o correio tradicional (enviar cartas), onde não há garantia de que a carta do dia anterior chegará antes da carta de hoje.

Características do Serviço Sem Conexão

  • Stateless: O emissor não mantém informação sobre datagramas enviados.
  • Sem overhead de handshake: o primeiro byte útil já pode ir no primeiro datagrama (0-RTT).
  • Independência de mensagens: Cada datagrama é uma mensagem autocontida (modelo de record boundary preservado, ao contrário do TCP que é byte stream).
  • Suporte a multicast: natural, já que cada datagrama é roteado isoladamente.

3. Serviço Confiável vs Não Confiável

Confiável (TCP)

Garante entrega através de:
- Sequence numbers e ACKs cumulativos.
- Retransmissão por timeout (RTO) ou Fast Retransmit (3 dup ACKs).
- Detecção de duplicatas e reordenação para entrega à aplicação em ordem.
- SACK para retransmitir apenas o necessário.

Não Confiável (UDP)

  • Nenhuma garantia: pacotes podem ser perdidos, duplicados ou reordenados.
  • A aplicação é responsável por qualquer confiabilidade desejada (ex: TFTP implementa seu próprio ACK, QUIC implementa sua própria retransmissão).
  • Vantagem: nenhuma sobrecarga de temporizadores, buffers de retransmissão ou estado.

4. Modo de Operação

Modo Descrição Exemplo na Camada de Transporte
Simplex Comunicação unidirecional apenas Raramente usado; TCP/UDP sempre são bidirecionais pelo menos para ACKs
Half-duplex Bidirecional alternada (uma direção por vez) Não nativo no TCP/UDP; emulado pela aplicação
Full-duplex Bidirecional simultâneo TCP nativo (ACKs podem viajar junto com dados via piggybacking); UDP também suporta, mas sem relação entre fluxos

No TCP o full-duplex é uma propriedade fundamental: cada direção tem seu próprio Sequence Number e Window Size independentes. Fechar uma direção (FIN) não fecha a outra até que ambos os lados façam isso.

5. Circuito Virtual vs Datagrama

Esses dois paradigmas vêm da teoria de redes de pacotes e correspondem à divisão entre TCP e UDP na camada de transporte:

Aspecto Circuito Virtual Datagrama
Estabelecimento prévio Sim Não
Estado em roteadores intermediários Sim (em redes X.25, ATM, MPLS) Não
Endereçamento por pacote Identificador de circuito Endereço completo
Ordem de entrega Garantida Não garantida
Exemplo na Internet TCP (emulação de circuito virtual na borda) UDP
Exemplo em redes L2/L3 MPLS LSP, ATM SVC IP puro

Importante: o TCP simula um circuito virtual entre os dois hosts sem que os roteadores intermediários saibam da sua existência. O estado é mantido apenas nas pontas (end-to-end principle, RFC 1958).

6. Serviços Adicionais da Camada de Transporte

  • Controle de fluxo (TCP): Window Size protege o receptor de ser inundado.
  • Controle de congestão (TCP): cwnd e algoritmos (Reno, CUBIC, BBR) protegem a rede.
  • Controle de erro (TCP e UDP): Checksum com pseudo-header detecta corrupção e endereçamento incorreto.
  • Serviço de stream (TCP): entrega de bytes em ordem, sem fronteiras de mensagem.
  • Serviço de mensagem (UDP): preserva fronteiras entre datagramas — cada sendto corresponde a um recvfrom no destino.

7. Qual Serviço Escolher?

A escolha depende do compromisso entre Confiabilidade e Velocidade:

Tipo de Aplicação Exigência Serviço Recomendado Protocolo
Páginas Web / E-mail Integridade dos dados absoluta. Orientado à Conexão TCP
Streaming / VOIP Baixa latência; perdas são toleráveis. Sem Conexão UDP
Transferência de Arquivos Ordem e completude. Orientado à Conexão TCP
Queries DNS Rapidez e simplicidade (overhead mínimo). Sem Conexão UDP
Sessão interativa (SSH) Ordem, integridade, baixa latência Orientado à Conexão TCP
Jogos multiplayer Latência baixíssima, tolerância a perda Sem Conexão UDP
IPTV / Streaming ao vivo Multicast, tolerância a perda Sem Conexão UDP
Transações financeiras Integridade e ordem absolutas Orientado à Conexão TCP

8. Serviços Híbridos Modernos

Aplicações recentes fogem à dicotomia TCP/UDP:

  • QUIC (HTTP/3): roda sobre UDP, mas implementa confiabilidade, controle de congestão e criptografia (TLS 1.3) em userspace. Permite múltiplos streams independentes (sem head-of-line blocking) e 0-RTT para conexões repetidas.
  • SCTP (Stream Control Transmission Protocol, RFC 4960): combina características de TCP (confiável) e UDP (mensagem-preservando), com suporte a multi-homing e múltiplos streams numa mesma conexão. Usado em sinalização telefônica (SIGTRAN).
  • WebRTC: usa SRTP sobre UDP, com congestão customizada (GCC) e FEC para tolerar perdas em tempo real.

Tip

Algumas aplicações modernas (como o HTTP/3) rodam sobre o UDP (Sem Conexão) para evitar os problemas de latência do TCP, mas implementam sua própria confiabilidade customizada na camada de aplicação via protocolo QUIC. Essa tendência mostra que o serviço sem conexão puro não é mais visto como "fraco", mas como um primitivo flexível que aplicações especializadas podem adaptar às suas necessidades.