# SCTP: Stream Control Transmission Protocol

> O SCTP (RFC 4960) é um transporte fiável, orientado a mensagens, desenhado para sinalização. Ao contrário do fluxo de bytes único do TCP, entrega mensagens discretas sobre vários streams independentes (evitando o head-of-line blocking) e suporta multi-homing — vários endereços IP por ponto terminal para failover de caminho automático. O SIGTRAN usa-o para transportar SS7 sobre IP.

- URL canônico: https://www.broadnet.me/pt/reference/sctp-stream-control-transmission-protocol
- Idioma: pt
- Última atualização: 2026-07-18
- Editor: BroadNet (https://www.broadnet.me)

Como o SCTP funciona e porque o SIGTRAN o usa: entrega orientada a mensagens, multi-streaming para evitar head-of-line blocking, multi-homing para failover de caminho, o formato de pacote baseado em chunks e como difere do TCP.

## Porquê SCTP em vez de TCP

A sinalização SS7 precisa de entrega fiável, em sequência e de baixa latência com failover rápido — requisitos que o TCP só satisfaz parcialmente. O TCP é um fluxo de bytes único, pelo que um segmento perdido bloqueia todos os bytes posteriores até ser retransmitido (head-of-line blocking), e uma ligação TCP está ligada a um par de endereços IP, pelo que uma falha de caminho a quebra. O SCTP foi desenhado para corrigir ambos: entrega mensagens independentes sobre vários streams e liga uma associação a vários endereços para failover transparente. Também resiste a ataques SYN-flood com um handshake de quatro vias.

*SCTP vs TCP*

| Propriedade | TCP | SCTP |
|---|---|---|
| Modelo de dados | Fluxo de bytes | Orientado a mensagens (preserva limites) |
| Fluxos | Um | Muitos streams independentes por associação |
| Bloqueio de frente de fila | Ao longo de toda a conexão | Restrito a um único stream |
| Endereçamento de endpoints | Um único par IP | Multi-homed (vários IPs por endpoint) |
| Handshake | 3 vias (exposto a inundação SYN) | 4 vias com cookie assinado |
| Opções de entrega | Somente ordenado | Ordenado ou não ordenado por mensagem |

## Multi-streaming

Uma associação SCTP transporta vários streams lógicos, numerados por Stream Identifier. Cada stream é ordenado independentemente usando um Stream Sequence Number, enquanto um único Transmission Sequence Number (TSN) governa a entrega fiável em toda a associação. O efeito é que uma perda num stream não bloqueia os outros — uma mensagem presa para um destino não bloqueia a sinalização para outro. As aplicações também podem enviar mensagens sem ordenação quando o sequenciamento não é necessário, cortando ainda mais a latência.

## Multi-homing e failover

Um ponto terminal SCTP pode ligar vários endereços IP — tipicamente em caminhos de rede separados. Um endereço é o caminho primário; os outros são alternativos. O SCTP monitoriza continuamente cada endereço de destino com chunks HEARTBEAT e, se o caminho primário falhar, retransmite num alternativo sem desfazer a associação. Isto dá às ligações de sinalização uma resiliência de nível operador sobre IP que uma ligação TCP single-homed não consegue, e é uma razão de destaque pela qual o SIGTRAN escolheu o SCTP.

## O formato de pacote baseado em chunks

Um pacote SCTP tem um cabeçalho comum de 12 bytes — portas de origem e destino, uma Verification Tag de 32 bits que protege a associação e uma soma de verificação CRC-32c — seguido de um ou mais chunks. Os chunks são autodescritivos (type, flags, length, value) e vários podem ser agrupados num pacote. Os control chunks estabelecem e gerem a associação; os DATA chunks transportam mensagens de utilizador. Esta estrutura permite ao SCTP confirmar, fazer heartbeat e transportar dados de forma eficiente no mesmo pacote.

*Estrutura de pacote SCTP*

```text
Common header (12 bytes):
  Source port (2)  Destination port (2)
  Verification Tag (4)   Checksum CRC-32c (4)
Then 1..n chunks, each:
  Type (1)  Flags (1)  Length (2)  Value (variable)
e.g.  [ DATA chunk (TSN, Stream ID, SSN, payload) ] [ SACK chunk ]
```

## Tipos de chunk e estabelecimento de associação

Uma associação é estabelecida com um handshake de quatro vias — INIT, INIT ACK (transportando um state cookie assinado), COOKIE ECHO, COOKIE ACK — que permite ao servidor manter-se sem estado até o cookie ser devolvido, derrotando ataques SYN-flood. Os dados fluem em DATA chunks confirmados por SACK. HEARTBEAT/HEARTBEAT ACK sondam caminhos inativos. A associação é fechada graciosamente com SHUTDOWN ou abruptamente com ABORT.

*Tipos de chunk SCTP comuns*

| Tipo | Fragmento | Finalidade |
|---|---|---|
| 0 | DATA | Transportar uma mensagem do utilizador (TSN, ID do fluxo, SSN, carga útil) |
| 1 / 2 | INIT / INIT ACK | Iniciar associação; INIT ACK carrega o cookie de estado |
| 3 | SACK | Confirmação seletiva de DATA recebidos |
| 4 / 5 | HEARTBEAT / HEARTBEAT ACK | Verificar a acessibilidade de um endereço de destino |
| 6 | ABORT | Fechamento anormal e imediato da associação |
| 7 / 8 | SHUTDOWN / SHUTDOWN ACK | Encerramento ordenado |
| 10 / 11 | COOKIE ECHO / COOKIE ACK | Concluir o handshake de 4 vias |

## Perguntas frequentes

### Qual é a principal vantagem do SCTP sobre o TCP?

Duas coisas: multi-streaming, para que um pacote perdido num stream não bloqueie os outros (sem head-of-line blocking em toda a ligação), e multi-homing, para que um ponto terminal possa usar vários endereços IP e fazer failover automático quando um caminho cai. Ambas importam muito para a fiabilidade da sinalização.

### O que é o multi-homing do SCTP?

O multi-homing permite a uma única associação SCTP ligar vários endereços IP por ponto terminal. Um é o caminho primário e os restantes são alternativos, monitorizados por heartbeats. Se o caminho primário falhar, o SCTP retransmite num alternativo sem quebrar a associação — redundância de caminho embutida no transporte.

### O que é um chunk SCTP?

Um chunk é uma unidade autodescritiva dentro de um pacote SCTP, com um type, flags, length e value. Os DATA chunks transportam mensagens de utilizador; os control chunks (INIT, SACK, HEARTBEAT, SHUTDOWN e outros) gerem a associação. Vários chunks podem ser agrupados num pacote.

### Porque é que o SCTP usa um handshake de quatro vias?

O passo extra permite ao respondente manter-se sem estado até receber de volta um state cookie assinado (no COOKIE ECHO). Como nenhum estado de associação é alocado até o cookie regressar, o SCTP resiste a ataques de exaustão de recursos do estilo SYN-flood que afetam o handshake de três vias do TCP.

### O que é a Verification Tag no SCTP?

Um valor de 32 bits no cabeçalho comum, trocado durante o estabelecimento da associação, que ambos os pontos terminais têm de incluir em cada pacote. Valida que um pacote pertence à associação atual, protegendo contra pacotes obsoletos e ataques de injeção às cegas.

## Fontes

- [IETF RFC 4960 — Stream Control Transmission Protocol](https://datatracker.ietf.org/doc/html/rfc4960)
- [IETF RFC 3286 — Introduction to SCTP](https://datatracker.ietf.org/doc/html/rfc3286)

## Relacionados

- [Visão geral de SIGTRAN](https://www.broadnet.me/pt/reference/sigtran-overview)
- [M3UA: Adaptação de Utilizador MTP3](https://www.broadnet.me/pt/reference/m3ua-mtp3-user-adaptation)
- [Arquitetura de implantação SIGTRAN](https://www.broadnet.me/pt/reference/sigtran-deployment-architecture)
- [SS7 vs SIGTRAN](https://www.broadnet.me/pt/reference/ss7-vs-sigtran)
- [Plataforma de sinalização e CDR](https://www.broadnet.me/pt/platforms/signaling-cdr)
