Comparación entre TCP-UDP-SCTP
UDP ofrece los servicios mínimos de la capa de transporte; no ofrece transferencia confiable ni ordenada; tampoco ofrece un control de flujo, por lo que una aplicación puede desbordar el buffer de recepción del destinatario. Tampoco ofrece control de congestión.
Por estas limitaciones, UDP no ofrece un nivel de confiabilidad necesario para algunas aplicaciones; por ejemplo, si se utiliza UDP, pero se necesita cierto nivel de confiabilidad, se deberá implementar de forma externa los mecanismos de control, de retransmisión de paquetes, de detección y corrección de congestión en la red, entre otros.
En cambio, TCP ofrece todos estos servicios. Sin embargo, algunos servicios que entrega, por ejemplo, la entrega ordenada de paquetes, puede provocar importantes retardos. TCP no tiene soporte para hosts con múltiples interfaces.
SCTP fue creado para solucionar algunas limitaciones que tienen los protocolos TCP y UDP. A continuación se muestra una figura que compara términos entre los 3 protocolos.
Figura: Comparación entre los distintos protocolos.
A pesar de estas diferencias, se puede decir que tienen muchas cosas similares; por ejemplo, el inicio de conexión/asociación requiere un intercambio de mensajes para su inicio, ambos ofrecen envío confiable de datos, control de congestión, y un mecanismo de intercambio de mensajes para finalizar una comunicación.
De la figura anterior, se puede notar que existe una similitud mayor entre SCTP y TCP que entre SCTP y UDP. Se profundizará sobre la relación SCTP/TCP:
Similitudes TCP/SCTP
- Inicio de comunicación: requiere intercambio de información antes de establecer una comunicación.
- Confiabilidad: ambos protocolos ofrecen mecanismos para envío confiable de datos.
- Orden: ambos envían mensajes en orden.
- Control de congestión: ambos ofrecen el mismo sistema de control ante congestión (Additive Increase/Multiplicative Decrease), garantizando una competencia justa por el ancho de banda.
- Fin de comunicación: ambos intercambian mensajes para indicar el fin de una comunicación.
Diferencias TCP/SCTP
- Inicio de comunicación: existe una diferencia en la implementación. TCP usa 3-way-handshake, SCTP utiliza 4 mensajes, de forma de prevenir ataques del tipo SYN-Flooding.
- Head-of-Line Blocking (HOL): el protocolo SCTP evita el HOL. Se produce debido a que TCP envía datos de forma ordenada, en un solo flujo de comunicación. SI se produce una pérdida, los datos ya enviados y recibidos correctamente, se mantienen en el buffer a la espera de la llegada del dato perdido.
Figura: Head-of-Line Blocking en los distintos protocolos.
Para ejemplificar, se muestra en la figura anterior el envío de varios archivos por la misma conexión TCP. Si se produce una pérdida del primer paquete, el resto de los paquetes (2-6) deberán esperar a que llegue el paquete 1 retransimitido. En este caso si los paquetes de color son archivos independientes, se retrasa la llegada de éstos a la capa de aplicación. Una solución, utilizando TCP para el mismo problema, es enviar los distintos datos a través de distintas conexiones TCP, en paralelo (como HTTP). Así, considerando el mismo ejemplo anterior, solo se retrasarían los datos de la conexión relacionada al paquete perdido, y no todos los datos de las otras conexiones. La desventaja de este tipo de conexión es la pérdida de tiempo al iniciar/terminar una conexión, y el mal uso de recursos al tener varias conexiones TCP abiertas entre 2 hosts.
Debido a las características de SCTP, este problema no se da. Si se tiene solo una asociación, y un stream, una pérdida del paquete 1 no retrasa el paso de los datos de los paquetes 3-6 a la capa de aplicación. Lo mismo pasa si se realiza el envío de datos distintos en flujos distintos. La diferencia en este caso, y ventaja, es que las distintas conexiones TCP no deben iniciarse desde capa de aplicación, sino que la capa de transporte se encarga de dividir la información en distintos flujos, en una misma asociación. - Ataques SYN: Un ataque SYN técnica utilizada para provocar denegación de servicio en un servidor web.
- Fin de comunicación: SCTP no tiene el estado HALF-CLOSED de TCP, en el cual uno de los extremos puede continuar enviando datos.
- Multi-Homing/Multi-Streaming.