Bonjour、IPP、LPD 协议详解与使用场景
三种协议概述
NokoPrint 为跨平台共享打印机提供了三种协议支持。它们各有特点,适用于不同场景:
| 协议 | 全称 | 来源平台 | 自动发现 | 功能丰富度 |
|---|---|---|---|---|
| Bonjour | mDNS / DNS-SD | Apple(OS X / iOS) | 支持 | 中等 |
| IPP | Internet Printing Protocol | 跨平台(所有主流系统) | 部分支持 | 高 |
| LPD | Line Printer Daemon | Unix / Linux | 不支持 | 基础 |
Bonjour(mDNS)
是什么
Bonjour 是 Apple 开发的零配置网络技术(原名 Rendezvous)。它通过 mDNS(组播 DNS)在局域网内自动广播和发现服务——不用手动配置 IP 地址,设备上线后自动互相找到。
NokoPrint 中的用途
- 自动发现 Mac 共享打印机:Mac 默认开启 Bonjour 打印共享,NokoPrint 无线扫描时能自动发现
- 自动发现 AirPrint 打印机:AirPrint 底层也基于 Bonjour/mDNS
- Android 与 Mac 互通:Android 手机可以通过 Bonjour 找到 Mac 上共享的打印机
无需额外配置
Bonjour 是"即插即用"的。只要 Mac 上开启了「打印机共享」,NokoPrint 就能在扫描列表中看到,不需要手动输入 IP 或共享名。
IPP(Internet Printing Protocol)
是什么
IPP 是一套基于 HTTP 的跨平台打印协议标准(RFC 8010/8011)。它定义了客户端如何向打印机发送打印任务、查询状态、设置参数。IPP 是现代打印系统的基础协议。
NokoPrint 中的用途
- 连接 Linux CUPS 共享打印机:CUPS 默认监听 IPP 端口(631)
- Windows 打印机共享:Windows 10+ 支持 IPP over USB 和 IPP 网络共享
- 高级打印功能:IPP 协议支持查询打印机能力、设置双面打印、纸张来源等丰富参数
手动连接 IPP
如果 Bonjour 自动发现失败,可以手动添加 IPP 打印机:
ipp://打印机IP:631/printers/队列名
- 端口默认 631
- 队列名在 CUPS 管理页面(
localhost:631)或 Windows 打印机属性中查看
LPD(Line Printer Daemon)
是什么
LPD 是最古老的网络打印协议之一(起源于 1980 年代的 BSD Unix)。它通过 TCP 端口 515 接受打印任务。现代系统中 LPD 主要作为传统兼容性支持。
NokoPrint 中的用途
- 连接老旧 Unix/Linux 系统:某些嵌入式系统或老款服务器只支持 LPD
- 兼容性兜底:当 IPP 和 Bonjour 都不可用时尝试 LPD
手动连接 LPD
lpd://打印机IP/队列名
队列名通常是打印机在系统中的名称(不区分大小写)。
协议选择决策树
需要连接 Mac 的共享打印机?
├── 是 → 用 Bonjour(自动发现,最简单)
└── 否 → 继续
│
需要连接 Linux CUPS?
├── 是 → 优先 IPP,不行再试 LPD
└── 否 → 继续
│
打印机只支持传统网络协议?
├── 是 → 用 LPD 兜底
└── 否 → 用 Wi-Fi 自动发现(可能底层就是其中某个协议)
实际上 NokoPrint 的 Wi-Fi 扫描会自动尝试多种协议来发现打印机,大多数情况下你不需要手动选择——NokoPrint 会自动匹配最合适的协议。