# Sequenced Packet Exchange

SPX (del inglés Sequenced Packet Exchange - Intercambio de Paquetes Secuenciados) es un antiguo protocolo de red de Novell perteneciente al sistema operativo NetWare utilizado para controlar la entrega de datos a través de una red de área local (y en menor medida en una WAN) mediante el protocolo IPX. Junto con el protocolo IPX (también de Novell) forma la pila de protocolos IPX/SPX que es similar al TCP/IP.

## Historia

Surgió en los años 80 como respuesta a la demanda que había en aplicaciones con servicios orientados a conexión, y se diseñó basándose en un protocolo creado años atrás por Xerox denominado SPP (Sequenced Packet Protocol - Protocolo de Paquetes Secuenciados).
En 1991, se creó una versión mejorada denominada SPX II con el objetivo de resolver diversos problemas que surgieron con la versión anterior y añadir nuevas funcionalidades como el uso de paquetes de mayor tamaño o la implementación de la ventana deslizante.
Aunque actualmente no se utilice mucho, tiene soporte para varias plataformas (NetWare, DOS, OS/2, Linux, Windows).

## Datos técnicos

Esquema de un paquete del protocolo SPX. :
| Bit 0 | Bit 0 | | Bit 8 | Bit 8 | | Bit 16 | Bit 16 | |
| | Suma de verificación | Suma de verificación | Suma de verificación | Suma de verificación | Suma de verificación | Suma de verificación | Cabecera IPX (30 bytes) | Cabecera IPX (30 bytes) |
| Cabecera IPX (30 bytes) ||||||
| | Control de transporte | Control de transporte | Control de transporte | Tipo de paquete | Tipo de paquete | Tipo de paquete | | | Cabecera IPX (30 bytes) | Cabecera IPX (30 bytes) |
| Cabecera IPX (30 bytes) ||||||
| Cabecera IPX (30 bytes) ||||||
| Cabecera IPX (30 bytes) ||||||
| Cabecera IPX (30 bytes) ||||||
| Cabecera IPX (30 bytes) ||||||
| Cabecera IPX (30 bytes) ||||||
| | Tipo de flujo de datos de control de la transmisión | Tipo de flujo de datos de control de la transmisión | Tipo de flujo de datos de control de la transmisión | Tipo de flujo de datos de control de la transmisión | Tipo de flujo de datos de control de la transmisión | Tipo de flujo de datos de control de la transmisión | Cabecera SPX (12 bytes) | Cabecera SPX (12 bytes) |
| Cabecera SPX (12 bytes) ||||||
| Cabecera SPX (12 bytes) ||||||
| Cabecera SPX (12 bytes) ||||||
| Cabecera SPX (12 bytes) ||||||
| Cabecera SPX (12 bytes) ||||||
| | 0–546 bytes de datos | 0–546 bytes de datos | 0–546 bytes de datos | 0–546 bytes de datos | 0–546 bytes de datos | 0–546 bytes de datos | Información | Información |
Es un protocolo de la capa de transporte orientado a comunicaciones con conexión que se encarga de verificar que un mensaje enviado a través de una red llega intacto a su destino. Para ello, utiliza como mensajero el protocolo IPX (el cual por sí solo carece de fiabilidad durante el transporte de paquetes) permitiendo establecer y mantener conexiones además de enviar datos.

### Cómo funciona

El protocolo se encarga de garantizar la integridad de los paquetes enviados y de los paquetes de confirmación recibidos. También realiza un control sobre el flujo de datos, regulando la velocidad a la que se envían y reciben los paquetes y reduciendo el riesgo de corrupción.
Para controlar el envío de los paquetes, SPX espera un mensaje de confirmación, y si éste no se recibe, vuelve a retransmitir el paquete un número determinado de veces. Si tras ese número de veces, aún sigue sin recibirse una respuesta con el mensaje de confirmación, el protocolo da por asumido que ha habido un fallo de conexión, y cierra la conexión. Pero este control no se realiza sobre todos los paquetes que se envían o se reciben, sino que se lleva una especie de lista de confirmación en una ventana. Cuando se descubre un error en un paquete que es enviado o recibido dentro de esa ventana, todos los paquetes enviados o recibidos durante ese tiempo se marcan como malos y se vuelven a retransmitir.

### Estructura

La cabecera de los paquetes se compone de 12 bytes conectados sobre una cabecera IPX de 30 bytes. Esos 12 bytes contienen todas las estructuras que SPX utiliza para establecer y mantener conexiones y para garantizar el envío secuencial de datos.

## Desventajas

Las siguientes desventajas unidas al pobre rendimiento del protocolo, provocaron la creación del protocolo SPX II:
* Aunque SPX fue diseñado para garantizar la fiabilidad de transferencia de datos a través de una red, posee un rendimiento pobre en comparación con IPX.
* Es inherentemente más complejo que IPX debido a que tiene que garantizar los envíos y el mantenimiento de una conexión.
* No implementa la ventana deslizante (envío de otro paquete de datos antes de recibir un paquete de confirmación del paquete previo enviado)
* No proporciona un mecanismo ordenado de liberación de conexión, por lo que se pueden perder datos si hay un fallo de conexión.
* Puede provocar una congestión de red por las razones anteriores.