C‑Kermit 11 发布 – 时隔15年的首个新版本让45年历史的协议重获新生
C‑Kermit 11 交付的内容及其重要性
C‑Kermit 11 是旗舰 Kermit 实现时隔15年的首个新版本,将有45年历史的串行文件传输协议提升至现代安全、网络和测试标准。此版本使 Kermit 能够用于当代场景——SSH 包装、嵌入式固件更新以及跨平台局域网传输——同时保留其在遗留系统上运行的历史能力。
历史背景:从1981年的串行桥梁到今天的网络世界
- 在1981年,Frank da Cruz 和 Bill Catchings 创建了 Kermit 协议,以便在异构大型机(DEC‑20、IBM)之间的嘈杂串行链路上实现可靠的文件传输。
- 到1982年,Kermit 已移植到 MS‑DOS 和 Unix,而 C 实现(C‑Kermit)成为事实上的参考实现,添加了 TCP 支持、交互式 CLI 和类似 Lisp 的脚本语言。
- Kermit 已被用于多项高知名度任务——包括国际空间站、飓风传感器数据收集、波音787制造以及嵌入式设备的固件更新。
- 在哥伦比亚大学于2011年取消 Kermit 项目后,代码被重新许可为 BSD 许可证,并由 Frank da Cruz 维护直至他在2025年退休。
对历经数十年的 C 代码库进行现代化改造
安全性和可靠性改进
- 修复了众多内存安全漏洞,并添加了针对恶意远程利用的防护措施,这与后来对
scp所应用的安全加固相呼应。 - 用字节相同的二进制模式取代了模糊的默认字符集转换,消除了历史数据损坏案例。
网络升级
- 添加了条件 IPv6 支持,并在系统缺乏 IPv6 连接时提供运行时回退。
- 引入了新的
show interfaces命令(C‑Kermit 11),用于列出本地 IP 地址,简化基于局域网的传输。
测试基础设施
- 实施了一个由 Python 驱动的端到端测试套件,覆盖约2000个用例,包括对 gKermit、eKermit以及最后一个完整版本(C‑Kermit 9.0.302,2011)的兼容性检查。
- 发现并修复了平台特定的错误,如 macOS
FIONREAD表现异常和 NetBSD PTY 驱动问题。
代码库清理
- 将历史版本导入 Git(最初由 Jeffrey Altman 完成),并删除了死的
#ifdef块,减少了总行数。 - 采用现代 CI 流水线,在 Linux(x86_64、arm64)、macOS、FreeBSD、NetBSD、OpenBSD 上构建,并生成基于 musl 的静态链接 Linux 二进制文件。
社区反应及讨论中的见解
"I enjoy working in a legacy C codebase" – John Goerzen (author of the release) 作者指出,尽管代码年代久远,但其为 VMS、OS/2 和 pre‑ANSI 编译器所设计的架构赋予了它意外的优雅。
"I’m a gray‑beard and still use Kermit regularly for embedded development" – voakbasda (HN comment) 这突显了 Kermit 在串行控制台自动化方面的持续相关性。
"C‑Kermit can be used as a powerful SSH wrapper" – donflamenco (HN comment) 证实了一个实际用例:在开放的 SSH 会话中内联传输文件,无需 Zmodem。
"Kermit source code remains the high‑water mark… for how many different, incompatible, non‑standard platforms one piece of software can support" – jonathaneunice (HN comment) 强调了该项目在历史移植方面的成就。
"There’s not as much demand for gKermit now that C‑Kermit is BSD‑licensed and tiny" – John Goerzen (HN comment) 解释了为什么轻量级的 gKermit 分支可能会看到兴趣下降。
发布资源及如何参与
- 下载:二进制文件和源码 tarball 可在 Open Kermit 下载页面获取 https://www.openkermit.org/downloads/。
- 贡献:项目欢迎通过 GitHub 仓库 https://github.com/OpenKermit/ckermit 提交补丁、文档和测试补充。
- 镜像:公开镜像位于 https://kermit.mirrors.quux.org/,且存档快照存储于 Internet Archive。
献给 Frank da Cruz
C‑Kermit 11 献给 Frank da Cruz,他自1981年 Kermit 设计起直至2025年开源交接,直接参与了 Kermit 长达44年的发展。献词指出,没有其他开源项目见过如此长期的创始人参与。
此版本对遗留协议未来的意义
- 保存:通过将代码移入现代版本控制系统并添加 CI,项目保护了这一历史重要协议免受位腐。
- 互操作性:更新的默认设置和 IPv6 支持确保 Kermit 仍能在遗留硬件(例如 HP 48 计算器)和现代网络之间充当桥梁。
- 安全:解决内存安全和远程代码执行风险,使 Kermit 在固件刷写和传感器数据采集等关键环境中使用更安全。
- 社区活力:老用户和新来者的热烈反馈表明存在一个健康的生态系统,能够支撑进一步的开发。
底线
C‑Kermit 11 通过修复安全漏洞、添加 IPv6、现代化测试套件和清理代码库,让这款有45年历史的文件传输协议焕发新生,从而确保 Kermit 既对复古爱好者也对当代开发者保持实用价值。