Stream Control Transmission Protocol (SCTP) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Familia | Familia de protocolos de Internet | |||||||||
Función | Protocolo de transporte confiable, con secuenciación con control de congestión, orientado a mensajes. | |||||||||
Puertos | 132 | |||||||||
Ubicación en la pila de protocolos | ||||||||||
| ||||||||||
Estándares | ||||||||||
RFC 2960 (2000) RFC 4960 (2007) | ||||||||||
Stream Control Transmission Protocol (SCTP) es un protocolo de comunicación de capa de transporte que fue definido por el grupo SIGTRAN de IETF en el año 2000. El protocolo está especificado en la RFC 2960, y la RFC 3286 brinda una introducción al mismo.
SCTP es una alternativa a los protocolos de transporte TCP y UDP pues provee confiabilidad, control de flujo y secuenciación como TCP. Sin embargo, SCTP opcionalmente permite el envío de mensajes fuera de orden y a diferencia de TCP, SCTP es un protocolo orientado al mensaje (similar al envío de datagramas UDP).
Las ventajas de SCTP son:
SCTP fue diseñado inicialmente por el grupo Sigtran para transportar señalización telefónica SS7 sobre IP. La intención fue la de proveer en IP de algunas de las características de confiabilidad de SS7. Por su versatilidad luego se ha propuesto utilizarlo en otras áreas, como por ejemplo para transportar mensajes de los protocolos DIAMETER o SIP. Al igual que TCP, SCTP tiene un mecanismo de Fast Retransmit el cual consiste en optimizar el rendimiento ante pérdidas aisladas.
SCTP es una alternativa a los protocolos de transporte TCP y UDP pues provee confiabilidad, control de flujo y secuenciación como TCP. Sin embargo, SCTP opcionalmente permite el envío de mensajes fuera de orden y a diferencia de TCP, STCP es un protocolo orientado al mensaje (similar al envío de datagramas UDP).
Provee servicio de mensaje no ordenados y confiables (Ordering) Mecanismos de validación y asentimiento como protección ante ataques por inundación, proveyendo notificación de trozos de datos duplicados o perdidos. Entrega de los datos en trozos que forman parte de flujos independientes y paralelos —eliminando así el problema de head of the line blocking que sufre TCP.
Los paquetes SCTP tienen una estructura básica más simple que los paquetes TCP. Cada uno consiste en dos secciones básicas: La cabecera común, que ocupa los primeros 12 bytes y está resaltado en azul, y Los fragmentos de datos, que ocupan la parte restante del paquete. El primer fragmento se resalta en verde, y el último de N trozos se resalta en rojo. Cada fragmento tiene un identificador de tipo que es un byte de largo rendimiento, como máximo, 255 tipos diferentes trozo. RFC 4960 define una lista de tipos de trozo y actualmente hay 15 tipos definidos. El resto de la porción es de una longitud de dos bytes y los datos. Si el trozo no forma un múltiplo de 4 bytes a continuación, se rellena con ceros implícitamente que no están incluidos en la longitud trozo.establece una conexión desde un punto de entrada hacia el dispositivo de entrega.
Bits | 0–7 | 8–15 | 16–23 | 24–31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+0 | Source port | Destination port | ||||||||||||||||||||||||||||||
32 | Verification tag | |||||||||||||||||||||||||||||||
64 | Checksum | |||||||||||||||||||||||||||||||
96 | Chunk 1 type | Chunk 1 flags | Chunk 1 length | |||||||||||||||||||||||||||||
128 | Chunk 1 data | |||||||||||||||||||||||||||||||
… | … | |||||||||||||||||||||||||||||||
… | Chunk N type | Chunk N flags | Chunk N length | |||||||||||||||||||||||||||||
… | Chunk N data |
TCP ha proporcionado el principal medio para transferir datos de forma fiable a través de Internet, sin embargo TCP ha impuesto limitaciones en varias aplicaciones. Desde RFC 4960: TCP proporciona transferencia de datos fiable y riguroso orden de entrega de transmisión de datos. Algunas aplicaciones necesitan una transferencia fiable y sin mantenimiento secuencia, mientras que otros estarán satisfechos con el orden parcial de los datos. En ambos casos, el jefe de bloqueo de línea ofrecidos por TCP provoca retrasos innecesarios. La naturaleza orientado a flujo de TCP es a menudo una molestia. Las solicitudes deberán añadir su propio récord marcado para delinear sus mensajes, y deben hacer uso explícito de la instalación de empuje para asegurar que el mensaje completo se transfiere en un tiempo razonable. El alcance limitado de sockets TCP complica la tarea de proporcionar la capacidad de transferencia de datos de alta disponibilidad con hosts multitarjeta. TCP es relativamente vulnerable a los ataques de denegación de servicio, tales como ataques SYN.
Aunque el cifrado no era parte del diseño original SCTP SCTP fue diseñado con características para mejorar la seguridad, tales como 4-way handshake para proteger contra ataques de inundación SYN, y grandes "cookies" para la verificación de la asociación y la autenticidad. La fiabilidad fue también un aspecto clave del diseño de la seguridad de SCTP. Multihoming permite una asociación para permanecer abierta incluso cuando algunas de las rutas y las interfaces están abajo. Esto es de particular importancia para SIGTRAN, ya que transporta SS7 sobre una red IP usando SCTP, y requiere de una fuerte capacidad de recuperación durante los cortes de enlace para mantener el servicio de telecomunicaciones, incluso cuando están soportando anomalías en la red. SCTP es a veces un buen candidato de huellas dactilares. Algunos sistemas operativos habilitan por defecto el soporte de SCTP y, ya que no es tan conocido como TCP o UDP, a veces se pasa por alto en las configuraciones de firewall y de detección de intrusión, lo que a menudo permite sondear el tráfico.
SCTP está implementado en los siguientes sistemas operativos:
SCTP está implementado en: