¿Cómo determinar los fragmentos SCTP?
SCTP se encuentra entre la capa de aplicación de usuario SCTP y la capa de red IP y utiliza el término asociación para definir el estado del protocolo entre dos usuarios SCTP pares que intercambian información. SCTP también está orientado a la conexión, pero conceptualmente, las "asociaciones" SCTP son más amplias que las conexiones TCP: las conexiones TCP tienen sólo una dirección de origen y una dirección de destino. SCTP también está orientado a la conexión, pero las "asociaciones" de SCTP son conceptualmente más amplias que las conexiones TCP: las conexiones TCP tienen sólo una dirección de origen y una dirección de destino, mientras que SCTP proporciona a cada punto final SCTP un conjunto de métodos de dirección de transporte, es decir, transporte. dirección = un conjunto de números de puerto de dirección IP.
SCTP hereda las características de TCP y proporciona algunas funciones adicionales:
1. Realiza el envío ordenado de datos del usuario en múltiples "flujos"
TCP El " stream" se refiere a una secuencia de bytes. Una "secuencia" en TCP se refiere a una secuencia de bytes, mientras que una "secuencia" en SCTP se refiere a una determinada serie de mensajes de usuario enviados a un protocolo de capa superior, que están ordenados en relación con otros mensajes en la secuencia. Al establecer una asociación, los usuarios de SCTP pueden especificar la cantidad de flujos admitidos por la asociación. Este número se acuerda con la fuente y los mensajes de usuario se asocian con la cantidad de flujos. SCTP asigna un número de secuencia de flujo a cada mensaje entregado a un par a través de un enlace. En el extremo receptor, SCTP garantiza que la información se envíe en el orden especificado por la transmisión. Además, mientras una secuencia espera el siguiente mensaje de usuario fuera de secuencia, el envío de otras secuencias continúa.
2. Fragmente los datos del usuario de acuerdo con el tamaño de MTU (Unidad de transmisión máxima) de la ruta descubierta
Para garantizar que los paquetes SCTP enviados a la capa inferior sean consistentes con la ruta MTU, SCTP fragmentos de mensajes de usuario Realizar fragmentación. En el extremo receptor, estos fragmentos se reorganizan y se pasan al usuario SCTP superior.
3. Reconocimiento selectivo (SACK) y control de congestión
El reconocimiento selectivo se utiliza para detectar la pérdida de paquetes. El número de reconocimiento en TCP devuelve los bytes de datos recibidos con éxito por el número del remitente. excluyendo el byte señalado por el número de acuse de recibo), y el número del mensaje perdido y solicitado para ser retransmitido es el número del mensaje perdido y retransmitido al remitente por SCTP.
SCTP utiliza la tecnología de control de congestión de TCP, que incluye inicio lento, evitación de congestión y retransmisión rápida. Por lo tanto, las aplicaciones SCTP pueden recibir algunos de los recursos de red que pertenecen a SCTP cuando almacenan aplicaciones TCP.
4. Enlace de bloques
Es decir, se pueden enlazar selectivamente varios mensajes de usuario en un paquete SCTP. SCTP preserva los límites del marco de mensajes de una aplicación colocando mensajes en una o más estructuras de datos SCTP ("fragmentos"). Se pueden vincular diferentes tipos de bloques a un paquete SCTP, pero el bloque de control debe preceder a cualquier bloque de datos.
5. Gestión de rutas
La función de gestión de rutas SCTP es principalmente responsable de seleccionar la dirección de transporte de destino de un conjunto de direcciones de transporte proporcionadas por el extremo remoto. Selecciona el destino en función de. dos aspectos: instrucciones de usuario de SCTP y objetivos de calificación actualmente alcanzables. Cuando ningún otro control de flujo puede proporcionar información de accesibilidad, la función de administración de ruta escanea periódicamente el enlace para determinar la accesibilidad e informa los cambios en la dirección de transporte del extremo remoto a SCTP. El módulo de función de gestión de ruta SCTP también es responsable de informar las direcciones locales disponibles al extremo remoto cuando se establece el enlace y de notificar al usuario SCTP la dirección de transporte que ha devuelto el extremo remoto.
6. Soporte multihoming
Cuando SCTP transmite un paquete a una dirección IP de destino, SCTP puede redirigir el mensaje a otra dirección IP si esa dirección IP es inalcanzable.
De esta manera, se pueden tolerar errores a nivel de red en uno o incluso en ambos extremos de la asociación.
7. Prevenir ataques de denegación de servicio (DoS)
Hay varias formas de ataques DoS. El ataque DoS más básico es utilizar solicitudes de servicio razonables para ocupar demasiados recursos de servicio. evitando así que los usuarios legítimos obtengan respuestas de servicio. Un ataque SYN Flooding es un ejemplo de ataque DoS y es uno de los ataques de piratería más eficaces disponibles actualmente. Para resistir los ataques de inundación SYN en el host de destino, SCTP implementa un mecanismo de "cookie" seguro durante la fase de inicialización de la asociación.
8. Admite múltiples modos de transmisión
Transmisión estrictamente ordenada (como TCP), transmisión parcialmente ordenada (como por flujo) y transmisión desordenada (como UDP).
2 Estructura del paquete SCTP
La estructura del paquete SCTP es la siguiente: el encabezado del paquete puede ir seguido de uno o más bloques de longitud variable. Estos bloques están en formato "tipo-longitud-valor" (TLV). El significado de puerto de origen, puerto de destino y suma de comprobación es similar a TCP. La etiqueta de reconocimiento contiene el valor de etiqueta inicial intercambiado por primera vez durante el protocolo de enlace SCTP. Durante el proceso de asociación, el receptor descartará cualquier paquete SCTP que no contenga dicha etiqueta a su llegada.
En cada bloque de datos, el TLV incluye el tipo de bloque de datos, el indicador de procesamiento de transferencia y la longitud del bloque de datos. Se pueden utilizar diferentes tipos de bloques para transmitir información o datos de control.
El número de secuencia de transmisión (TSN) y el número de secuencia de transmisión (SSN) son dos números de secuencia diferentes. TSN garantiza la confiabilidad de toda la asociación, mientras que SSN garantiza el orden de toda la transmisión, por lo que los datos son confiables. El sexo está separado del orden en la transmisión.
3 Transmisión de datos SCTP
4.1 El principio del protocolo de enlace de cuatro vías SCTP y la defensa contra el ataque de inundación SYN
La asociación SCTP se define como [un conjunto de IP direcciones del host A] [un puerto en el host A] [un conjunto de direcciones IP en el host B] [un puerto en el host B]. Por lo tanto, cualquier dirección IP en el grupo correspondiente en ambos extremos se puede usar como la dirección de origen/destino correspondiente para marcar esta asociación y, mediante un protocolo de enlace de cuatro vías, los hosts SCTP en ambos extremos intercambian el estado de la comunicación.
SYN Flooding aprovecha las vulnerabilidades inherentes de TCP/IP, y el protocolo de enlace de tres vías TCP orientado a la conexión es la base de la existencia de SYN Flooding.
El principio del ataque SYN Flooding es el siguiente: un atacante malicioso envía una gran cantidad de mensajes SYN al servidor y el servidor no puede recibir el ACK del cliente después de enviar el mensaje de respuesta SYN ACK (el tercer protocolo de enlace no se puede completar). En este caso (el tercer protocolo de enlace no se puede completar), el servidor mantendrá una lista de semiconexiones muy grande, lo que consumirá mucho tiempo de CPU y recursos de memoria, y deberá reintentar constantemente SYN ACK para las IP en esta lista. El servidor estará demasiado ocupado procesando las solicitudes de conexión TCP falsificadas del atacante para atender las solicitudes normales de los clientes y, desde la perspectiva de un cliente normal, el servidor parecerá no responder.
En el protocolo de enlace de cuatro vías de SCTP, el receptor del mensaje INIT no necesita guardar ninguna información de estado ni asignar ningún recurso, lo que puede evitar ataques DoS como SYN Flooding. El mensaje INIT-ACK que envía contiene un mecanismo (una "cookie de estado") que contiene toda la información que el remitente necesita para establecer su estado.
El proceso de SCTP para generar cookies de estado es el siguiente:
1. Cree el TCB (Bloque de control de transmisión) relevante utilizando la información de los bloques INIT entrantes e INIT-ACK salientes.
2. En TCB, establezca la fecha actual como fecha de creación y el parámetro de protocolo "Tiempo válido de cookie" como período de validez.
3. Según el TCB, recopile el subconjunto mínimo de información necesaria para reconstruir el TCB y genere un MAC (código de autenticación de mensaje) basado en este subconjunto y la clave.
4. Combine el subconjunto mínimo de información anterior y la MAC para generar una cookie de estado. Después de enviar el INIT ACK (con el parámetro de cookie de estado), el remitente DEBE eliminar el TCB y cualquier recurso local asociado con la nueva asociación.
Tanto INIT como INIT-ACK deben contener los parámetros necesarios para establecer el estado inicial: un conjunto de direcciones IP, un TSN inicial para garantizar una transmisión confiable, un TSN inicial que debe incluirse en cada paquete SCTP recibido Etiquetas, la cantidad de flujos de datos que cada extremo solicita enviar y la cantidad de flujos de datos que cada extremo puede admitir para recibir. Después de intercambiar estos mensajes, el remitente del INIT devolverá la cookie de estado en forma de mensaje COOKIE-ECHO. El extremo receptor reconstruirá completamente su propio estado basándose en la cookie de estado en el COOKIE-ECHO recibido y enviará un COOKIE-ACK para confirmar que se ha establecido la asociación.
Como puede ver, al utilizar este enfoque, el receptor no consume ningún recurso incluso si recibe más mensajes INIT: no asigna ningún recurso del sistema y no guarda el estado recién asociado, simplemente incluye; la cookie de estado se usa para reconstruir el estado como parámetro en cada mensaje INIT-ACK devuelto, mientras que COOKIE-ECHO y COOKIE-ACK usarán la cookie de estado para confirmar que se ha establecido la asociación. La cookie se devolverá en el mensaje COOKIE-ECHO.
2.2 Intercambio de datos SCTP
En el intercambio de datos normal entre dos hosts SCTP, el host SCTP envía un bloque SACK para acusar recibo de cada paquete SCTP recibido. Dado que SACK describe completamente el estado del receptor, el remitente puede tomar decisiones de retransmisión basadas en SACK. SCTP admite algoritmos de retransmisión rápida y de retransmisión de tiempo de espera similares a TCP.
SCTP y TCP utilizan mecanismos completamente diferentes para detectar la pérdida de paquetes: cuando TCP detecta un espacio en el número de secuencia recibido, espera a que se llene antes de enviar un número de secuencia superior al paquete perdido. datos. Sin embargo, incluso si SCTP detecta una brecha en el número de secuencia recibido o una secuencia anormal, enviará los datos posteriores.
3.3 Cierre de asociación SCTP
Como protocolo de transporte orientado a conexión, SCTP también utiliza un protocolo de enlace de tres vías para cerrar la asociación, pero hay una diferencia con TCP: los puntos finales de TCP pueden mantenga la conexión abierta y se reciban nuevos datos desde el otro extremo durante el "cierre de asociación", y SCTP no admite el proceso de "cierre de asociación" de TCP. SCTP no admite este estado "medio cerrado" de TCP. 1. El Host A emite un bloque SHUTDOWN, finalizando la asociación con el Host B. El host A ingresa al estado APAGADO PENDIENTE y las operaciones correspondientes son las siguientes: ya no acepta datos de la aplicación de la capa superior, solo envía los datos restantes en la cola y ingresa al estado APAGADO PENDIENTE. La operación correspondiente es dejar de aceptar datos de la aplicación de la capa superior, enviar solo los datos restantes en la cola e ingresar al estado "APAGADO-ENVIADO".
2. Después de recibir el bloque de "apagado", el host B ingresará al estado "APAGADO-RECIBIDO", que es el mismo que el host A. Ya no aceptará datos de la aplicación de capa superior y solo envíe los datos restantes en la cola.
3. El Host A envía otro bloque SHUTDOWN, informando al Host B que los datos restantes que envió han llegado y reitera que la asociación se está cerrando.
4. Después de recibir el bloque de apagado por segunda vez, el Host B envía un bloque de apagado de confirmación.
5. Luego, el host A envía un bloque "Finalizar cierre" para completar el apagado asociado.
4 Conclusión
SCTP fue desarrollado para transmitir tráfico de señalización, pero tiene algunos mecanismos de protocolo avanzados que son superiores a TCP, como reconocimiento selectivo, retransmisión rápida y desorden. entrega, que le permite satisfacer las necesidades de transmisión de alto rendimiento y le brindará una gama más amplia de requisitos de aplicación. Actualmente, SCTP es compatible con múltiples sistemas operativos, incluidos Linux, AIX, Solaris, Windows y FressBSD, y el éxito de las pruebas de interoperabilidad entre diferentes implementaciones de protocolos indica que SCTP está a punto de convertirse en un producto comercial.
IEFT está realizando más modificaciones a SCTP para hacerlo más coherente con las necesidades de las aplicaciones de próxima generación, como admitir direcciones IPv6 y resolver el problema de falta de conectividad punto a punto del sitio IPv6 local. y direcciones de enlace local, y eliminando la necesidad de La capacidad de agregar o eliminar dinámicamente direcciones IP de una asociación existente reiniciando la asociación.
Además, SCTP puede utilizarse como una de las alternativas para la capa portadora de señalización en comunicaciones móviles de tercera generación, y su aplicación y evaluación de rendimiento aún están por estudiarse.