# Chaosnet

El desarrollo de Chaosnet estuvo inicialmente a cargo de los investigadores Thomas Knight y Jack Holloway en el laboratorio de IA del MIT, en 1975. El término hace referencia a dos tecnologías que, si bien son distintas, están estrechamente relacionadas. El término original se referió a un conjunto de protocolos de comunicación por computadora destinado a conectar máquinas Lisp (recientemente desarrolladas y muy populares en esa época dentro del MIT). Posteriormente, se convertiría en una de las primeras implementaciones de hardware de red de área local (LAN).

## Origen

El protocolo Chaosnet original se utilizó sobre cable coaxil CATV modelado para el novedoso Ethernet de 3 megabit/segundo desarrollado por Xerox PARC (posteriormente ARPANET), y el Protocolo de Control de Transmisión (TCP). Era un sistema basado en contención destinado a funcionar en un rango de 0 a 1000 metros, que incluía una función destinada a reducir las colisiones de datos, y que era posible al transferir un token virtual de permiso entre anfitriones (hosts); cada transacción de paquete exitosa actualizaba lo que cada anfitrión sabía sobre quién tenía el token en ese momento. Las colisiones causaban que el anfitrión no respondiera durante el tiempo resultante entre la distancia con el anfitrión con el que había colisionado. Finalmente, en la práctica, las colisiones terminaron no siendo un problema, por lo que dicha función quedó obsoleta.
La topología de red de Chaosnet era una serie de cables lineales (no circulares), cada uno de un máximo de hasta 1 kilómetro, conectados aproximadamente a 12 clientes. Los segmentos individuales estaban interconectados por "puentes" (al estilo ARPANET) que eran, por lo general, computadoras más viejas (como la PDP-11s) con dos interfaces de red.
Los protocolos también sirvieron como base para implementar payloads (conjuntos de datos) capaces de transportarse vía Ethernet, en la velocidad que luego se obtendría de 10 megabit/segundo. Chaosnet fue diseñado especialmente para el modelo LAN, por lo que las funciones para admitir WAN se dejaron de lado por cuestiones de simplicidad.
Dicho protocolo también puede considerarse como contemporáneo tanto de los protocolos PUP inventados por PARC como del Protocolo de Internet (IP), y fue oficialmente admitido como una de las otras clases de red (además de "IN" y "HS") en el Sistema de nombres de dominio (DNS). BIND utiliza un pseudo dominio de nivel superior (TLD) integrado en la "clase CHAOS" para obtener información sobre un servidor DNS en ejecución.

## Protocolo Chaosnet

El protocolo Chaosnet identificaba anfitriones por direcciones de datos de 16 bits, de los cuales 8 identifican la subred y 8 el anfitrión dentro de la subred. El protocolo básico era una transmisión full-duplex de paquetes entre dos procesos de usuario. El contenido del paquete podía tratarse como bytes de 8 o 16 bits, con soporte para otros tamaños de palabra proporcionados por protocolos de nivel superior. La conexión se identificaba mediante una combinación de las direcciones de 16 bits de cada anfitrión y un índice de conexión de 16 bits asignado por cada anfitrión con el fin de mantenerse únicos en la red. Los paquetes "controlados" dentro de una conexión se identificaban mediante un número de paquete de 16 bits, que se utilizaba para entregar paquetes controlados de manera confiable y en orden, con retransmisión y control de flujo. Los paquetes "no controlados" no se retransmitían, y se utilizaban en un nivel inferior para soportar el control de flujo y la retransmisión. Chaosnet también soportó paquetes de difusión "BRD" a múltiples subredes.
El establecimiento inicial de la conexión se realizaba utilizando nombres de contacto. Estos nombres identificaban el servicio de red y el protocolo de nivel superior. Por ejemplo, "STATUS" era el nombre de contacto que solicitaba estadísticas básicas de red desde un anfitrión. "TELNET" era un nombre de contacto para el protocolo Arpanet TELNET. "FILE" era un nombre de contacto para el servicio de archivos de red de la máquina Lisp. Otros nombres de contacto incluyeron "SUPDUP", "MAIL", "NAME" para el protocolo Arpanet Finger, "TIME", "SEND" para mensajes interactivos, o "ARPA" para un servicio de puerta de enlace a Arpanet. "DOVER" era el nombre de contacto para enviar trabajos de impresión a anfitriones Chaosnet que contasen con una impresora Xerox Dover conectada (un antecesor de la impresora láser). Los desarrolladores podían experimentar fácilmente con nuevos protocolos inventando nuevos nombres de contacto. En el sistema operativo ITS, se podía instalar un nuevo servidor para dicho protocolo simplemente creando un enlace al programa en la ubicación "DSK:DEVICE;CHAOS <cname>", donde <cname> podía contener hasta seis letras de nombre de contacto.
Las transacciones simples podían completarse con un único paquete "RFC" conteniendo el nombre de contacto, respondido por un único paquete "ANS" con la información relevante. Por ejemplo, un RFC con el nombre de contacto "TIME" daría como resultado un único paquete ANS conteniendo un número de 32 bits indicando la hora.
El Manifiesto original de GNU mencionó que tenía como objetivo, entre otras cosas, apoyar el protocolo Chaosnet.
Symbolics, un fabricante de máquinas Lisp, licenció al MIT la implementación del hardware y software de Chaosnet para el diseño de la computadora CADR.