# SCTP: Stream Control Transmission Protocol

> SCTP (RFC 4960) es un transporte fiable y orientado a mensajes diseñado para señalización. A diferencia del flujo de bytes único de TCP, entrega mensajes discretos por múltiples streams independientes (evitando el bloqueo de cabecera de línea) y admite multihoming —varias direcciones IP por punto final para la conmutación automática de trayecto—. SIGTRAN lo usa para transportar SS7 sobre IP.

- URL canónica: https://www.broadnet.me/es/reference/sctp-stream-control-transmission-protocol
- Idioma: es
- Última actualización: 2026-07-18
- Editor: BroadNet (https://www.broadnet.me)

Cómo funciona SCTP y por qué SIGTRAN lo usa: entrega orientada a mensajes, multistreaming para evitar el bloqueo de cabecera de línea, multihoming para conmutación de trayecto, el formato de paquete basado en chunks y en qué difiere de TCP.

## Por qué SCTP en lugar de TCP

La señalización SS7 necesita entrega fiable, en secuencia y de baja latencia con conmutación por error rápida, requisitos que TCP cumple solo en parte. TCP es un flujo de bytes único, así que un segmento perdido bloquea todos los bytes posteriores hasta que se retransmite (bloqueo de cabecera de línea), y una conexión TCP está ligada a un par de direcciones IP, así que un fallo de trayecto la rompe. SCTP se diseñó para solucionar ambas cosas: entrega mensajes independientes por múltiples streams y liga una asociación a varias direcciones para una conmutación transparente. También resiste ataques de inundación SYN con una negociación en cuatro fases.

*SCTP frente a TCP*

| Propiedad | TCP | SCTP |
|---|---|---|
| Modelo de datos | Flujo de bytes | Orientado al mensaje (conserva los límites) |
| Flujos | Uno | Múltiples flujos independientes por asociación |
| Bloqueo de cabeza de línea | A lo largo de toda la conexión | Confinado a un solo flujo |
| Direccionamiento de puntos finales | Par IP único | Conexión multihoming (varias direcciones IP por punto final) |
| Handshake | 3 vías (expuesto a SYN flood) | Negociación en 4 pasos con cookie firmada |
| Opciones de entrega | Solo ordenado | Ordenado o no ordenado por mensaje |

## Multistreaming

Una asociación SCTP transporta múltiples streams lógicos, numerados por Stream Identifier. Cada stream se ordena de forma independiente mediante un Stream Sequence Number, mientras que un único Transmission Sequence Number (TSN) rige la entrega fiable en toda la asociación. El efecto es que una pérdida en un stream no detiene los demás: un mensaje atascado para un destino no bloquea la señalización para otro. Las aplicaciones también pueden enviar mensajes sin ordenar cuando no se requiere secuenciación, reduciendo aún más la latencia.

## Multihoming y conmutación por error

Un punto final SCTP puede ligar varias direcciones IP —normalmente en trayectos de red separados—. Una dirección es el trayecto primario; las demás son alternativas. SCTP monitoriza continuamente cada dirección de destino con chunks HEARTBEAT y, si el trayecto primario falla, retransmite por una alternativa sin derribar la asociación. Esto da a los enlaces de señalización una resiliencia de clase operador sobre IP que una conexión TCP con un solo alojamiento no puede ofrecer, y es una razón principal por la que SIGTRAN eligió SCTP.

## El formato de paquete basado en chunks

Un paquete SCTP tiene una cabecera común de 12 bytes —puertos de origen y destino, un Verification Tag de 32 bits que protege la asociación y una suma de comprobación CRC-32c— seguida de uno o más chunks. Los chunks son autodescriptivos (type, flags, length, value) y varios pueden agruparse en un paquete. Los chunks de control establecen y gestionan la asociación; los chunks DATA transportan mensajes de usuario. Esta estructura permite a SCTP confirmar, hacer heartbeat y transportar datos de forma eficiente en el mismo paquete.

*Estructura de un paquete 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 y establecimiento de asociación

Una asociación se establece con una negociación en cuatro fases —INIT, INIT ACK (que transporta una cookie de estado firmada), COOKIE ECHO, COOKIE ACK—, que permite al servidor permanecer sin estado hasta que se devuelve la cookie, frustrando los ataques de inundación SYN. Los datos fluyen en chunks DATA confirmados por SACK. Los HEARTBEAT/HEARTBEAT ACK sondean los trayectos inactivos. La asociación se cierra con elegancia con SHUTDOWN o de forma abrupta con ABORT.

*Tipos de chunk SCTP comunes*

| Tipo | Fragmento | Propósito |
|---|---|---|
| 0 | DATA | Transportar un mensaje de usuario (TSN, ID de flujo, SSN, carga útil) |
| 1 / 2 | INIT / INIT ACK | Iniciar asociación; INIT ACK lleva la cookie de estado |
| 3 | SACK | Acuse selectivo de los DATA recibidos |
| 4 / 5 | HEARTBEAT / HEARTBEAT ACK | Sondear la alcanzabilidad de una dirección de destino |
| 6 | ABORT | Cierre anormal e inmediato de la asociación |
| 7 / 8 | SHUTDOWN / SHUTDOWN ACK | Cierre ordenado |
| 10 / 11 | COOKIE ECHO / COOKIE ACK | Completa el handshake de cuatro vías |

## Preguntas frecuentes

### ¿Cuál es la principal ventaja de SCTP sobre TCP?

Dos cosas: el multistreaming, para que un paquete perdido en un stream no bloquee los demás (sin bloqueo de cabecera de línea en toda la conexión), y el multihoming, para que un punto final pueda usar varias direcciones IP y conmutar automáticamente cuando cae un trayecto. Ambas importan mucho para la fiabilidad de la señalización.

### ¿Qué es el multihoming de SCTP?

El multihoming permite a una sola asociación SCTP ligar varias direcciones IP por punto final. Una es el trayecto primario y el resto alternativas, monitorizadas por heartbeats. Si el trayecto primario falla, SCTP retransmite por una alternativa sin caer la asociación: redundancia de trayecto integrada en el transporte.

### ¿Qué es un chunk de SCTP?

Un chunk es una unidad autodescriptiva dentro de un paquete SCTP, con type, flags, length y value. Los chunks DATA transportan mensajes de usuario; los chunks de control (INIT, SACK, HEARTBEAT, SHUTDOWN y otros) gestionan la asociación. Varios chunks pueden agruparse en un solo paquete.

### ¿Por qué SCTP usa una negociación en cuatro fases?

El paso extra permite al respondedor permanecer sin estado hasta que recibe de vuelta una cookie de estado firmada (en COOKIE ECHO). Como no se asigna estado de asociación hasta que la cookie regresa, SCTP resiste los ataques de agotamiento de recursos de tipo inundación SYN que afectan a la negociación en tres fases de TCP.

### ¿Qué es el Verification Tag en SCTP?

Un valor de 32 bits en la cabecera común, intercambiado durante el establecimiento de la asociación, que ambos puntos finales deben incluir en cada paquete. Valida que un paquete pertenece a la asociación actual, protegiendo contra paquetes obsoletos y ataques de inyección a ciegas.

## Fuentes

- [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)

## Relacionado

- [Descripción general de SIGTRAN](https://www.broadnet.me/es/reference/sigtran-overview)
- [M3UA: Adaptación de usuario MTP3](https://www.broadnet.me/es/reference/m3ua-mtp3-user-adaptation)
- [Arquitectura de despliegue SIGTRAN](https://www.broadnet.me/es/reference/sigtran-deployment-architecture)
- [SS7 vs SIGTRAN](https://www.broadnet.me/es/reference/ss7-vs-sigtran)
- [Plataforma de señalización y CDR](https://www.broadnet.me/es/platforms/signaling-cdr)
