XMODEM プロトコル (1977)(エックスモデムプロトコル)
Ward Christensen が 1977 年に開発したファイル転送プロトコル。128 バイトブロック単位で送信・チェックサムで誤り検出・ACK/NAK 確認応答という単純な ARQ (Automatic Repeat Request) 方式を採用し、BBS 時代の標準ファイル転送プロトコルとなった。
概要
XMODEM は、Ward Christensen が 1977 年に開発したファイル転送プロトコルで、CP/M 用 MODEM プログラムから派生し、IBM PC 移行後 1980 年代に事実上の世界標準ファイル転送プロトコルとなった歴史的プロトコルです。128 バイトブロック単位で送信し、チェックサム (1 バイト加算)・ACK/NAK 確認応答という単純な ARQ (Automatic Repeat Request) 方式を採用。BBS (Bulletin Board System) 時代に最も普及したプロトコルで、Hayes Smartmodem 300/1200 + Telix/CCT/WTERM 等の通信ソフトの組み合わせで広範に使用されました。エラー検出を CRC-16 に強化した XMODEM-CRC (1981)・1KB ブロック対応 XMODEM-1K (1982) が派生し、1985 年 YMODEM・1986 年 ZMODEM へと進化していきました。
主な特徴・仕組み
- 開発者: Ward Christensen (1977 年)
- プラットフォーム原点: CP/M、MODEM プログラム
- ブロックサイズ: 128 バイト (XMODEM-1K は 1024 バイト)
- エラー検出: チェックサム (1 バイト加算) または CRC-16
- 確認応答: ACK (06h)・NAK (15h)・EOT (04h)
- ARQ 方式: 1 ブロック送信→ACK 待ち→次ブロック (Stop-and-Wait ARQ)
- オーバーヘッド: 128 バイトデータに対し 4 バイト制御
- 速度効率: 300bps モデムで実効 24 文字/秒、1200bps で 100 文字/秒
- シリアル制御: SOH (01h) スタート・EOT (04h) 終了
- ファイル名非送信: 受信側で別途指定必要 (YMODEM で改善)
スペック比較表 (1970-1980 年代ファイル転送)
| プロトコル | 年 | ブロック | エラー検出 | 効率 |
|---|---|---|---|---|
| XMODEM | 1977 | 128B | チェックサム | 72% |
| XMODEM-CRC | 1981 | 128B | CRC-16 | 72% |
| XMODEM-1K | 1982 | 1024B | CRC-16 | 90% |
| YMODEM | 1985 | 1024B | CRC-16 | 92% |
| YMODEM-G | 1985 | 1024B | なし (V.42 依存) | 95% |
| ZMODEM | 1986 | 可変 | CRC-32 | 96% |
具体例・対応ソフト
- MODEM (1977): Ward Christensen 開発のオリジナル CP/M ソフト
- Telix (1986): DOS 通信ソフト、XMODEM 標準実装
- WTERM (1989): PC-9801 用日本製、XMODEM 必須機能
- CCT (1988): PC-9801 用、海外 BBS 接続向け
- Kermit (1981): コンペティタ、XMODEM と並存
自作PCでの選び方・注意点
XMODEM は 1990 年代後半まで BBS ファイル転送の標準でしたが、ZMODEM 普及と Internet (HTTP/FTP) 化で 2000 年代以降は事実上絶滅。レトロ PC 趣味では minicom (Linux)・TeraTerm (Windows)・Serial (Mac) など現代のターミナルソフトに XMODEM 実装が残されており、シリアル接続 (RS-232C) 経由のレトロ機器ファイル転送で活用可能。Raspberry Pi USB シリアル → PC-9801・X68000 への BIOS イメージ転送など、現代のレトロハードウェア趣味で実用的に利用されています。
関連用語との違い
- Kermit (1981): コロンビア大開発、互換性重視、柔軟なブロックサイズ
- YMODEM (1985): XMODEM 拡張、複数ファイル送信・ファイル名対応
- ZMODEM (1986): 改良版、Streaming・自動再開・CRC-32
よくある質問(FAQ)
Q1: XMODEM の最大の欠点は? A: Stop-and-Wait ARQ で次ブロック送信前に ACK 待ち、回線品質悪化時に時間ロス大。ZMODEM の Streaming で大幅改善。
Q2: 現代でも使うことはある? A: BIOS フラッシュ・組み込み機器のシリアル経由ファームウェア更新で稀に使用、TeraTerm 等のソフトでサポート継続。
Q3: Ward Christensen は誰? A: 米国 Chicago の BBS パイオニア、1978 年世界初の BBS 「CBBS」を運営、XMODEM 開発で BBS 文化基盤を構築した重要人物。
まとめ
- XMODEM = 1977 年 Ward Christensen 開発、CP/M ファイル転送プロトコル
- 128B ブロック・チェックサム・ACK/NAK の Stop-and-Wait ARQ
- 1980 年代 BBS 標準、XMODEM-CRC/1K に進化
- YMODEM/ZMODEM の源流、現代もレトロ用途で残存