Transmission Protocol) SCTP (Stream Transmission Control Protocol - Protocolo de control de transmisiones de corrientes) es un protocolo orientado a las conexiones, similar a TCP, pero proporciona la transferencia de datos orientada a mensajes, similar a UDP. El sistema operativo AIX cumple con RFC 4960. La tabla siguiente describe las diferencias generales del comportamiento entre SCTP y los protocolos de transporte existentes, TCP y UDP. Tabla 1. Diferencias entre TCP, UDP y SCTP
En general, SCTP puede proporcionar más flexibilidad para determinadas
aplicaciones, por ejemplo Voice over IP (VoIP), que requieren la transferencia de datos fiable pero orientada a mensajes. Para esta categoría de aplicaciones, probablemente SCTP es más adecuando que TCP o UDP. TCP proporciona entrega de datos de orden de transmisión fiable y estricta. Para aplicaciones que necesitan fiabilidad, pero pueden tolerar la entrega de datos no ordenados o parcialmente ordenados, TCP puede producir algún retardo innecesario debido al bloqueo de cabecera de línea. Con el concepto de varias corrientes en una sola conexión, SCTP puede proporcionar entrega estrictamente ordenada en una corriente mientas se aíslan los datos de forma lógica de las corrientes diferentes. SCTP está orientado a mensajes, a diferencia de TCP, que está orientado a bytes. Debido a la naturaleza orientada a bytes de TCP, la aplicación tiene que añadir su propia marca de registro para mantener los límites de mensaje. SCTP proporciona cierto grado de tolerancia a errores utilizando la característica de varios inicios. Se considera que un sistema principal tiene varios inicios cuando tiene conectada más de una interfaz de red, en la misma red o en redes diferentes. Se puede establecer una asociación SCTP establecida entre dos sistemas principales de varios inicios. En este caso, todas las direcciones IP de ambos puntos finales se intercambian en el arranque de asociación; esto permite que cada punto final utilice cualquiera de estas direcciones durante el tiempo de vida de la conexión si una de las interfaces está inactiva por cualquier razón, a condición de que se pueda alcanzar el igual mediante las interfaces alternativas. SCTP proporciona características de seguridad adicionales que TCP y UDP no proporcionan. En SCTP, la asignación de recursos durante la configuración de asociación se retarda hasta que la identidad del cliente se puede verificar utilizando un mecanismo de intercambio cookie, reduciendo de este modo la posibilidad de ataques de rechazo de servicio.
Arranque y cierre de asociación
SCTP Aquí se describen las directrices de arranque y cierre de asociación SCTP. La asociación SCTP consta de un reconocimiento de cuatro direcciones que tiene lugar en el orden siguiente: 1. El cliente envía una señal INIT al servidor para iniciar una asociación. 2. Al recibir la señal INIT, el servidor envía una respuesta INIT-ACK al cliente. Esta señal INIT-ACK contiene un cookie de estado. Este cookie de estado debe contener un Código de autentificación de mensaje (MAC), junto con una indicación de la hora correspondiente a la creación del cookie, el periodo de vida del cookie de estado y la información necesaria para establecer la asociación. El MAC lo calcula el servidor basándose en una clave secreta que sólo él conoce. 3. Al recibir esta señal INIT-ACK, el cliente envía una respuesta COOKIE-ECHO, que simplemente hace eco del cookie de estado. 4. Después de verificar la autenticidad del cookie de estado utilizando la clave secreta, el servidor asigna los recursos para la asociación, envía una respuesta COOKIE-ACK reconociendo la señal COOKIE-ECHO y mueve la asociación al estado ESTABLISHED. SCTP también soporta el cierre ordenado de una asociación activa cuando lo solicita el usuario SCTP. Se produce la siguiente secuencia de sucesos: 1. El cliente envía una señal SHUTDOWN al servidor, que indica al servidor que el cliente está preparado para cerrar la conexión. 2. El servidor responde enviando un reconocimiento SHUTDOWN-ACK. 3. Entonces el cliente devuelve una señal SHUTDOWN-COMPLETE al servidor. SCTP también soporta el cierre repentino (señal ABORT) de una asociación activa cuando lo solicita el cliente SCTP o debido a un error de la pila SCTP. Sin embargo, SCTP no soporta conexiones medio abiertas. Se puede encontrar más información sobre el protocolo y sus características internas en RFC 4960. Además de las diferencias especificadas más arriba entre SCTP y los protocolos de transporte existentes, SCTP proporciona las características siguientes: Entrega en secuencias en las corrientes: Una corriente en el contexto de SCTP hace referencia a una secuencia de mensajes de usuario que se transfieren entre puntos finales. Una asociación SCTP puede soportar varias corrientes. En el momento de configurar la asociación, el usuario puede especificar el número de las corrientes. El valor efectivo del número de corriente se fija después de negociar con el igual. Dentro de cada corriente, el orden de la entrega de datos se mantiene de forma estricta. Sin embargo, entre corrientes, la entrega de datos es independiente. De este modo, la pérdida de datos de una corriente no impide que los datos se entreguen en otra corriente. Esto permite a una aplicación de usuario utilizar diferentes corrientes para datos lógicamente independientes. También se pueden entregar datos de un modo no ordenado utilizando una opción especial. Esto puede ser útil para enviar datos urgentes. Fragmentación de datos de usuario: SCTP puede fragmentar mensajes de usuario para asegurar que el tamaño de paquete pasado a la capa inferior no excede la MTU de vía de acceso. En el momento de la recepción, los fragmentos se vuelven a ensamblar en un mensaje completo y se pasan al usuario. Aunque la fragmentación también se puede realizar a nivel de red, la fragmentación de capa de transporte proporciona varias ventajas respecto a la fragmentación de capa de IP. De lo contrario, algunas de estas ventajas, que incluyen no tener que volver a enviar mensajes enteros cuando se pierden fragmentos en la red y reducir el peso en los direccionadores, posiblemente tendrían que realizar la fragmentación de IP. Reconocimiento y control de congestión: El reconocimiento de paquetes es necesario para la entrega de datos fiable. Cuando, al cabo de un periodo de tiempo especificado, SCTP no obtiene un reconocimiento de un paquete que envía, desencadena una retransmisión del mismo paquete. SCTP sigue algoritmos de control de congestión similares a los utilizados por TCP. Además de utilizar los reconocimientos acumulativos como TCP, SCTP utiliza el mecanismo SACK (Selective Acknowledgment - Reconocimiento selectivo) que le permite reconocer los paquetes de forma selectiva. Empaquetado de fragmentos: Un fragmento puede contener datos de usuario o información de control de SCTP. Se pueden empaquetar juntos varios fragmentos bajo la misma cabecera SCTP. Para empaquetar los fragmentos es necesario reunir los fragmentos en un paquete SCTP en el extremo remitente y posteriormente deshacer en paquete en fragmentos en el extremo destinatario. Validación de paquete: Cada paquete SCTP tiene un campo de código de verificación que cada punto final establece durante el tiempo de arranque de asociación. Todos los paquetes se envían con el mismo código de verificación durante todo el tiempo de vida de la asociación. Si, durante el tiempo de vida de la asociación, se recibe un paquete con un código de verificación inesperado, se descarta el paquete. Asimismo, el remitente de cada paquete SCTP debe establecer la suma de comprobación de CRC-32 para proporcionar una mayor protección frente a la corrupción de datos en la red. Se descarta cualquier paquete recibido con una suma de comprobación de CRC- 32 no válida. Gestión de vía de acceso: En el momento de realizar la configuración de asociación, cada punto final puede anunciar una lista de direcciones de transporte que tiene. Sin embargo, sólo se define una vía de acceso primaria para la asociación SCTP y se utiliza dicha vía para la transferencia de datos normal. Si la vía de acceso primaria quede desactivada, se utilizan las demás direcciones de transporte. Durante el tiempo de vida de la asociación, se envían latidos a intervalos regulares a través de todas las vías de acceso a fin de supervisar el estado de la vía de acceso.
Una API representa la capacidad de comunicación entre componentes de software. Se
trata del conjunto de llamadas a ciertas bibliotecas que ofrecen acceso a ciertos servicios desde los procesos y representa un método para conseguir abstracción en la programación, generalmente (aunque no necesariamente) entre los niveles o capas inferiores y los superiores del software. Uno de los principales propósitos de un API consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se benefician de las ventajas del API haciendo uso de su funcionalidad, evitándose el trabajo de programar todo desde el principio. Las API asimismo son abstractas: el software que proporciona una cierta API generalmente es llamado la implementación de esa API.