# Serial Line Internet Protocol

El protocolo SLIP (Serial Line Internet Protocol) es un estándar de transmisión de datagramas IP para líneas serie, pero que ha quedado bastante obsoleto. Fue diseñado para trabajar a través de puerto serie y conexión de módem. Su especificación se encuentra en el documento RFC 1055.
En PC, SLIP se ha sustituido por el PPP (Point-to-Point Protocol) cuyo diseño es superior, tiene más y mejores características y no requiere de la configuración de su dirección IP antes de ser establecido. Sin embargo, con microcontroladores, se sigue utilizando el modo de encapsulación de SLIP para paquetes IP ya que usa cabeceras de tamaño reducido.

## Descripción

Este protocolo funciona en una gran variedad de redes como Ethernet (802.3), token ring (802.5), redes de área local (Lan), líneas X-25, para conexiones punto a punto bajo conexiones TCP/IP, o de acceso remoto que solían utilizar servidores UNIX.
SLIP requiere una configuración de puerto de 8 bits de datos, no paridad y acepta cualquiera de los controles de flujo por hardware de EIA (Electronic Industries Alliance). Una versión de SLIP con compresión de cabeceras es CSLIP (Compressed SLIP). Fue desarrollada por Van Jacobson y su funcionalidad consiste en reducir el header típico de 40 bytes a 3 o 5 bytes, ayudándose del hecho de que muchos de los campos del comunicaciones mediante Bluetooth entre ordenadores.

## Historia

SLIP tiene sus orígenes en la implementación 3 COM UNET TCP/IP y fue diseñado en 1984 por Rick Adams. SLIP es simplemente una definición de una serie de caracteres, para llevar paquetes IP en una línea serie. Al ser un protocolo de muy fácil implementación no proporciona ni direccionamiento, ni identificación de tipo de paquete, ni detección/corrección de errores ni mecanismos de compresión. Ya en 1984 era posible la conexión de forma sencilla de host y encaminadores (routers) mediante líneas serie. SLIP se puede emplear en líneas con velocidades entre 1200 bps y 19.2 Kbps. Las configuraciones de SLIP más comunes van a ser: host-host, host-router y router-router.

## Formato

SLIP modifica cada datagrama IP añadiéndole un carácter especial C0 o “SLIP END” que permite distinguir entre diferentes datagramas. Para prevenir ruido de línea se acostumbra mandar uno al principio también; de modo que se dé por terminada cualquier tipo de conexión errónea anterior.
Si el carácter C0 se presenta en el contenido del datagrama, se utiliza la secuencia de dos bytes DB, DC. El carácter DB es el carácter de escape de SLIP (distinto al valor ASCII de ESC –1B--).
Si en el contenido se presenta el carácter de escape; se reemplaza por la secuencia DB, DD.

## Tipos

SLIP dinámico: Cuando se usa SLIP para conectarse a Internet, el servidor del proveedor de acceso a Internet, identifica al ordenador proporcionándole una dirección IP (por ejemplo 150.214.110.8). Mediante SLIP dinámico, esta dirección es asignada dinámicamente por el servidor de entre un conjunto de direcciones. Esta dirección es temporal, y dura lo que dure la conexión.
SLIP estático: Cuando se usa SLIP estático, el servidor del proveedor de acceso a Internet asigna una dirección permanente al ordenador para su uso en todas las sesiones.

## Deficiencias

SLIP es un protocolo muy simple que fue diseñado y presenta los siguientes inconvenientes:
* Direccionamiento: Para el encaminamiento, los dos hosts necesitan conocer de antemano la dirección IP del otro extremo. Además SLIP no proporciona mecanismos a los hosts para comunicarse estas direcciones IP.
* Identificación de tipo: El protocolo SLIP no posee identificador de tipo, por lo que solamente puede emplearse un solo protocolo simultáneamente resultando de esta forma un inconveniente para las actuales máquinas multiprotocolo.
* Detección y corrección de errores: Debido al ruido existente en líneas telefónicas se producen errores a la hora de transmitir paquetes y a causa de la baja velocidad de estas líneas es muy elevado el coste de reenvio. Se debe tener en cuenta que la detección de errores no es estrictamente necesaria debido a que el protocolo IP detecta los paquetes erróneos. De todos modos, sería recomendable que SLIP tuviera un sistema de detección y corrección de errores por sí mismo.
* Compresión: Sería recomendable la presencia de algún mecanismo de compresión para reducir el tiempo necesario de transmisión de un paquete provocado por la baja velocidad de la línea. La compresión puede emplearse en las cabeceras TCP e IP ya que poseen una alta redundancia enviando solamente los cambios que se producen entre las sucesivas transmisiones.
Se está trabajando en un sucesor de SLIP que supla estas deficiencias. La implementación de SLIP en lenguaje de alto nivel es sencilla. Para más información sobre SLIP consultar en la RFC 1055.

## SLIP vs. PPP

El protocolo SLIP cumple la misma función que PPP, pero se trata de un protocolo mucho más anticuado.
| SLIP | PPP |
| Fácil de implementar. | Más complejo. |
| Añade muy pocos bytes de overhead. | Mayor overhead. |
| Utilizado por muchas aplicaciones. | Su uso está en crecimiento. |
| Efectúa compresión de overhead (CSLIP). | Puede configurarse para que use compresión de overhead. |
| No estándar. | Estándar. |
| No efectúa detección ni corrección de errores. | Suma de verificación (CRC) en cada marco. |
| Solo reconoce IP. | Múltiples protocolos. |
| Debe conocerse la IP de cada extremo. | Permite la asignación dinámica de IP. |
| No confiable. | Transmisión confiable opcional. |
| Estático. | Configurable a través de LCP. |