Estados



Se mostrarán a continuación los estados en los que entran XXXX al establecerse/cerrarse una asociación.

  • CLOSED: no existe conexión.
  • COOKIE-WAIT: en estado de espera por un cookie.
  • COOKIE-ECHOED: en estado de espera por acuse de recibo (ACK) de cookie.
  • ESTABLISHED: representa una asociación activa. Datos recibidos pueden ser enviados a capas superiores, y continuar la transferencia de datos.
  • SHUTDOWN-PENDING: enviando datos después de recibir un close.
  • SHUTDOWN-SENT: espera por acuse de recibo de SHUTDOWN.
  • SHUTDOWN-RECEIVED: enviando datos después de recibir SHUTDOWN.
  • SHUTDOWN-ACK-SENT: esperando por terminación completa.


Se describe a continuación el proceso de inicio de asociación.
Lado del servidor
El sevidor recibe un requerimiento de asociación (INIT), generalmente cuando está en estado CLOSED. Así, analiza los datos que llegan en dicho chunk, y genera los valores necesarios para establecer la asociación. Luego, genera una secuencia hash de estos valores y una llave secreta, y se guarda en una ‘cookie’, y se envía de vuelta al cliente en forma de chunk INIT-ACK. El servidor permanece en estado CLOSED.
Si el servidor recibe de vuelta un chunk de tipo COOKIE-ECHO, el servidor utiliza los datos insertados en este mensaje y verifica que el emisor del mensaje es a quien el servidor envió previamente un cookie. Si se verifica, se inicia una asociación SCTP, el servidor enviará un COOKIE-ACK al cliente, y entrará en estado ESTABLISHED, alistándose para recibir/transmitir datos.


Lado del cliente
Si una aplicación de capa superior desea iniciar una asociación, se genera un chunk INIT, y se envía a un servidor. El cliente entra en estado COOKIE-WAIT. Se inicia un timer que re-envía este mensaje Si no se recibe un mensaje INIT-ACK desde el servidor antes de que termine el timer. Si después de varios envíos, no se recibe INIT-ACK, se reporta esto a la capa de aplicación que es imposible empezar la conexión.
Si el cliente recibe un chunk INIT-ACK, detiene el timer y arma un chunk COOKIE-ECHO, adjuntando el cookie recibido, y re-enviándolo al servidor; así, queda en espera de un mensaje COOKIE-ACK desde el servidor, y entra en estado COOKIE-ECHOED.
Al recibir el mensaje COOKIE-ACK, el cliente entra en estado ESTABLISHED.

El proceso de termino de asociación es el siguiente:
Al recibir la orden de terminar una asociación desde capa de aplicación, se debería dejar de recibir información mediante la asociación SCTP, y comienza a enviar chunks SHUTDOWN al servidor. Éste, al recibir este chunk, devolverá otro chunk, SHUTDOWN-ACK, una vez que recibe acuse de recibo de todos los datos enviados hasta ese momento.


El cliente, al recibir un SHUTDOWN-ACK, envía un chunk SHUTDOWN-COMPLETE y entra en estado CLOSED. El servidor al recibir este mensaje, entrará en estado CLOSED también.

También el cliente puede abortar una asociación, sin importarle los datos que se encuentran en tránsito a destino, enviando un chunk ABORT. Quien recibe este mensaje no hace acuse de recibo, sino que inmediatamente termina la asociación, y reporta este hecho a la capa de aplicación.



Se muestra a continuación un diagrama de estados del protocolo SCTP:

Diagrama de Estados
Figura: Diagrama de Estados de SCTP.


Estados en una Asociación
Figura: Estados en una asociación SCTP.