XMODEM


XMODEM es un protocolo simple de transferencia de archivos desarrollado como un truco rápido por Ward Christensen para usar en su programa de terminal MODEM.ASM de 1977 . Permitió a los usuarios transmitir archivos entre sus computadoras cuando ambos lados usaban MODEM. Keith Petersen hizo una actualización menor para activar siempre el "modo silencioso" y llamó al resultado XMODEM. [3]

XMODEM, como la mayoría de los protocolos de transferencia de archivos, divide los datos originales en una serie de " paquetes " que se envían al receptor, junto con información adicional que permite al receptor determinar si ese paquete se recibió correctamente. Si se detecta un error, el receptor solicita que se vuelva a enviar el paquete. Una cadena de paquetes defectuosos hace que la transferencia se anule.

XMODEM se volvió extremadamente popular en el mercado de los primeros sistemas de tablones de anuncios (BBS), en gran parte porque era fácil de implementar. También era bastante ineficiente y, a medida que aumentaba la velocidad del módem, este problema condujo al desarrollo de una serie de versiones modificadas de XMODEM para mejorar el rendimiento o solucionar otros problemas del protocolo. Christensen creía que su XMODEM original era "el programa más modificado en la historia de la informática". [4]

Chuck Forsberg recopiló una serie de modificaciones comunes en su protocolo YMODEM , pero la implementación deficiente provocó una mayor fractura antes de que se reunificaran con su protocolo ZMODEM posterior. ZMODEM se hizo muy popular, pero nunca reemplazó por completo a XMODEM en el mercado de BBS.

El XMODEM original utilizaba un paquete de datos de 128 bytes, el tamaño de bloque básico utilizado en los disquetes CP/M . El paquete estaba precedido por un encabezado simple de 3 bytes que contenía un carácter, un "número de bloque" de 0 a 255 y el número de bloque "inverso": 255 menos el número de bloque. La numeración de bloques comienza con 1 para el primer bloque enviado, no con 0. El encabezado fue seguido por los 128 bytes de datos y luego una suma de verificación de un solo byte . Por lo tanto, el paquete completo tenía una longitud de 132 bytes y contenía 128 bytes de datos de carga útil , para una eficiencia total del canal de aproximadamente el 97%.<SOH>

La suma de comprobación era la suma de todos los bytes del paquete módulo 256. La operación de módulo se calculó fácilmente descartando todos menos los ocho bits menos significativos del resultado, o alternativamente en una máquina de ocho bits, ignorando el desbordamiento aritmético que produciría el mismo efecto automáticamente. De esta forma, la suma de comprobación se restringió a una cantidad de ocho bits. Por ejemplo, si este método de suma de verificación se usó en un pequeño paquete de datos que contiene solo dos bytes con los valores 130 y 130, el total de estos códigos es 260 y la suma de verificación resultante es 4.