Xmodem est un protocole de transfert de fichier développé par Ward Christensen et fut le plus populaire pour le réseau téléphonique commuté, c'est-à-dire entre modems. Xmodem utilise des paquets de 128 octets avec détection d’erreur, permettant au receveur de demander la retransmission du paquet corrompu. Xmodem est assez lent mais fiable. Xmodem, comme la plupart des protocoles de transfert de fichier, découpe les données à envoyer en une série de paquets qui sont envoyés au destinataire, enrichie d'informations additionnelles permettant au destinataire de déterminer si le paquet a été correctement reçu. Le protocole XMODEM original utilise un paquet de données de 128 octets, la taille d'un bloc de fichier pour le système CP/M. Le paquet est précédé par un en-tête de 3 octets : le caractère ASCII SOH (valeur décimal 1), un "numéro de bloc" de 0 à 255 et le complémentaire du numéro de bloc (255 - numéro de bloc). Les numéros de bloc commencent à 1 pour le premier bloc envoyé et non 0. Le paquet est également suivi par un octet de checksum des octets de données. Cet octet est égal à la somme des données du paquet sur 8 bits. Le paquet complet a ainsi une longueur de 132 octets, comprenant 128 octets de charge utile. Le transfert du fichier est marqué comme terminé avec l'envoi du caractère ASCII EOT après le dernier bloc. Ce caractère ne fait partie d'aucun paquet, mais envoyé seul. Puisque la longueur du fichier n'était pas indiqué dans le protocole, le dernier paquet envoyé était complété par un « caractère connu » qui était supprimé. Dans la spécification originale, ce caractère était l'ASCII SUB, également utilisé par CP/M comme marqueur de fin de fichier dans son format de fichier. Le standard indiquait que n'importe quel caractère pouvait être utilisé, mais l'émetteur et le destinataire devait se mettre d'accord. Les fichiers sont transférés paquet par paquet. Quand le paquet est reçu, le destinataire calcule la somme de contrôle des données et la compare à l'octet de contrôle.