# SCTP : Stream Control Transmission Protocol

> SCTP (RFC 4960) est un transport fiable et orienté message conçu pour la signalisation. Contrairement au flux d'octets unique de TCP, il remet des messages distincts sur plusieurs streams indépendants (évitant le blocage de tête de ligne) et prend en charge la multi-domiciliation — plusieurs adresses IP par point d'extrémité pour un basculement de chemin automatique. SIGTRAN l'utilise pour porter le SS7 sur IP.

- URL canonique: https://www.broadnet.me/fr/reference/sctp-stream-control-transmission-protocol
- Langue: fr
- Dernière mise à jour: 2026-07-18
- Éditeur: BroadNet (https://www.broadnet.me)

Comment fonctionne SCTP et pourquoi SIGTRAN l'utilise : remise orientée message, multi-streaming pour éviter le blocage de tête de ligne, multi-domiciliation pour le basculement de chemin, le format de paquet en chunks, et ses différences avec TCP.

## Pourquoi SCTP plutôt que TCP

La signalisation SS7 a besoin d'une remise fiable, en séquence, à faible latence avec basculement rapide — des exigences que TCP ne satisfait que partiellement. TCP est un flux d'octets unique, si bien qu'un segment perdu bloque tous les octets suivants jusqu'à sa retransmission (blocage de tête de ligne), et une connexion TCP est liée à une seule paire d'adresses IP, si bien qu'une panne de chemin la rompt. SCTP a été conçu pour corriger les deux : il remet des messages indépendants sur plusieurs streams et lie une association à plusieurs adresses pour un basculement transparent. Il résiste aussi aux attaques par inondation SYN grâce à un établissement en quatre temps.

*SCTP vs TCP*

| Propriété | TCP | SCTP |
|---|---|---|
| Modèle de données | Flux d'octets | Orienté message (préserve les limites) |
| Flux | One | Plusieurs flux indépendants par association |
| Blocage en tête de file | À travers toute la connexion | Confiné à un seul flux |
| Adressage des points de terminaison | Paire d'IP unique | Multi-homed (plusieurs adresses IP par point de terminaison) |
| Handshake | Poignée de main en 3 temps (exposée au SYN flood) | Échange en 4 temps avec cookie signé |
| Options de livraison | Ordonné uniquement | Ordonné ou non ordonné, par message |

## Multi-streaming

Une association SCTP porte plusieurs streams logiques, numérotés par Stream Identifier. Chaque stream est ordonné indépendamment à l'aide d'un Stream Sequence Number, tandis qu'un unique Transmission Sequence Number (TSN) régit la remise fiable sur toute l'association. L'effet est qu'une perte sur un stream ne bloque pas les autres — un message coincé pour une destination ne bloque pas la signalisation d'une autre. Les applications peuvent aussi envoyer des messages hors ordre quand le séquencement n'est pas requis, réduisant encore la latence.

## Multi-domiciliation et basculement

Un point d'extrémité SCTP peut lier plusieurs adresses IP — généralement sur des chemins réseau distincts. Une adresse est le chemin primaire ; les autres sont des alternatives. SCTP surveille en continu chaque adresse de destination avec des chunks HEARTBEAT, et si le chemin primaire tombe, il retransmet sur une alternative sans démonter l'association. Cela donne aux liaisons de signalisation une résilience carrier-grade sur IP qu'une connexion TCP mono-domiciliée ne peut offrir, et c'est une raison phare du choix de SCTP par SIGTRAN.

## Le format de paquet en chunks

Un paquet SCTP a un en-tête commun de 12 octets — ports source et destination, un Verification Tag de 32 bits qui protège l'association, et une somme de contrôle CRC-32c — suivi d'un ou plusieurs chunks. Les chunks sont auto-descriptifs (type, flags, longueur, valeur) et plusieurs peuvent être groupés dans un paquet. Les chunks de contrôle établissent et gèrent l'association ; les chunks DATA portent les messages utilisateur. Cette structure permet à SCTP d'acquitter, de heartbeat et de porter des données efficacement dans le même paquet.

*Structure d'un paquet 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 ]
```

## Types de chunks et établissement d'association

Une association s'établit par un établissement en quatre temps — INIT, INIT ACK (portant un cookie d'état signé), COOKIE ECHO, COOKIE ACK — qui permet au serveur de rester sans état jusqu'au retour du cookie, déjouant les attaques par inondation SYN. Les données circulent dans des chunks DATA acquittés par SACK. HEARTBEAT/HEARTBEAT ACK sondent les chemins inactifs. L'association se ferme gracieusement par SHUTDOWN ou brutalement par ABORT.

*Types de chunks SCTP courants*

| Type | Fragment | Objectif |
|---|---|---|
| 0 | DATA | Transporter un message utilisateur (TSN, ID de flux, SSN, charge utile) |
| 1 / 2 | INIT / INIT ACK | Début de l'association ; INIT ACK contient le cookie d'état |
| 3 | SACK | Acquittement sélectif des DATA reçus |
| 4 / 5 | HEARTBEAT / HEARTBEAT ACK | Sonder la joignabilité d'une adresse de destination |
| 6 | ABORT | Fermeture anormale et immédiate de l'association |
| 7 / 8 | SHUTDOWN / SHUTDOWN ACK | Fermeture ordonnée |
| 10 / 11 | COOKIE ECHO / COOKIE ACK | Achever la négociation en quatre temps |

## Questions fréquentes

### Quel est le principal avantage de SCTP sur TCP ?

Deux choses : le multi-streaming, pour qu'un paquet perdu sur un stream ne bloque pas les autres (pas de blocage de tête de ligne à l'échelle de la connexion), et la multi-domiciliation, pour qu'un point d'extrémité puisse utiliser plusieurs adresses IP et basculer automatiquement quand un chemin tombe. Les deux comptent énormément pour la fiabilité de la signalisation.

### Qu'est-ce que la multi-domiciliation SCTP ?

La multi-domiciliation permet à une seule association SCTP de lier plusieurs adresses IP par point d'extrémité. L'une est le chemin primaire et les autres des alternatives, surveillées par heartbeats. Si le chemin primaire tombe, SCTP retransmet sur une alternative sans abandonner l'association — une redondance de chemin intégrée au transport.

### Qu'est-ce qu'un chunk SCTP ?

Un chunk est une unité auto-descriptive à l'intérieur d'un paquet SCTP, avec un type, des flags, une longueur et une valeur. Les chunks DATA portent les messages utilisateur ; les chunks de contrôle (INIT, SACK, HEARTBEAT, SHUTDOWN et autres) gèrent l'association. Plusieurs chunks peuvent être groupés dans un paquet.

### Pourquoi SCTP utilise-t-il un établissement en quatre temps ?

L'étape supplémentaire permet au répondeur de rester sans état jusqu'à recevoir en retour un cookie d'état signé (dans COOKIE ECHO). Comme aucun état d'association n'est alloué avant le retour du cookie, SCTP résiste aux attaques d'épuisement de ressources par inondation SYN qui touchent l'établissement en trois temps de TCP.

### Qu'est-ce que le Verification Tag en SCTP ?

Une valeur de 32 bits dans l'en-tête commun, échangée lors de l'établissement de l'association, que les deux points d'extrémité doivent inclure sur chaque paquet. Elle valide qu'un paquet appartient à l'association courante, protégeant contre les paquets périmés et les attaques par injection aveugle.

## Sources

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

## Voir aussi

- [Vue d'ensemble de SIGTRAN](https://www.broadnet.me/fr/reference/sigtran-overview)
- [M3UA : adaptation des utilisateurs de MTP3](https://www.broadnet.me/fr/reference/m3ua-mtp3-user-adaptation)
- [Architecture de déploiement SIGTRAN](https://www.broadnet.me/fr/reference/sigtran-deployment-architecture)
- [SS7 vs SIGTRAN](https://www.broadnet.me/fr/reference/ss7-vs-sigtran)
- [Plateforme de signalisation et CDR](https://www.broadnet.me/fr/platforms/signaling-cdr)
