Oracle Solaris OS 中的打印体系结构使用网络打印协议,按如下方式与打印服务进行通信:
客户机到服务器的通信
服务器到打印机的通信
Oracle Solaris 软件提供了应用程序、工具包、打印命令以及可与打印服务交互的应用程序编程接口。此 API 被称为 PAPI。PAPI 包含前端 API 实现,可动态装入后端打印服务或与打印服务直接通信的协议模块。这些打印服务包含正在处理的打印作业或打印队列。客户机到服务器的通信包括 RFC-1179 和 IPP 协议,以及对与本地 LP 打印服务进行通信的支持。对于服务器到打印机的通信,网络打印协议支持使打印服务可以将打印作业直接传输到网络连接的打印机。
LP 打印服务和 Solaris Print Manager 之间的服务器到打印机的通信包括对以下网络协议的支持:
原始传输控制协议 (Transmission Control Protocol, TCP) 套接字
RFC-1179
IPP
SMB
打印系统使用两个线上协议将打印请求从打印客户机发送到打印服务器。下表介绍了可用于在 Solaris OS 中打印的打印协议。
表 1–1 支持的打印协议
网络打印协议 |
是否提供服务器端支持? |
是否提供客户端支持? |
更多信息 |
---|---|---|---|
Internet 打印协议 (Internet Printing Protocol, IPP) |
从 Oracle Solaris 10 发行版开始,提供对 IPP 侦听服务的服务器端支持。 |
在某些 Oracle Solaris 发行版中受支持。 | |
RFC-1179 协议 |
在所有 Oracle Solaris 发行版中均受支持。 |
在所有 Oracle Solaris 发行版中均受支持。 | |
SMB 协议(通过 Samba) 注 – SMB 协议(通过 Samba)可实现 Linux 和 UNIX 服务器以及基于 Windows 的客户机之间的互操作性。 |
从 Solaris 9 OS 开始受支持。 |
从 Solaris 9 OS 开始受支持。 |
应用程序、工具包和打印命令根据在指定打印队列所对应的 printers.conf 数据库项中找到的 printer-uri-supported 属性的值,来选择要用于客户机到服务器通信的协议。如果对远程打印队列的访问是使用 lpadmin 命令配置的,或应用程序使用为执行一个或多个操作而引用的接口,则会自动生成和填充此属性值。
例如,如果在使用 Mozilla 的同时打印文档,则为获取打印机访问权限而遵循的路径为:
Mozilla -> lp -> PAPI
有关更多信息,请参见 printers.conf(4)。
lpadmin 命令使用以下格式生成 printer-uri-supported 值:
{ipp|lpd}://server/printers/ queue
为确定将在 printers.conf 数据库中使用哪个 URI,lpadmin 命令将探测远程打印服务。如果远程打印服务支持 IPP,则此协议优先于 BSD 协议。但是,通过在 lpadmin 命令中指定 -s 选项,然后提供不同的 URI,可以覆盖自动协议选择。有关更多信息,请参见支持的打印机 URI 格式。
LP 打印子系统使用 BSD 打印协议(也称为 RFC-1179 协议)和原始传输控制协议 (Transmission Control Protocol, TCP)(Internet 的基本通信语言或协议),来与打印机通信。如果您设置的打印机包括打印机供应商文档,则会提供有关使用哪个协议的信息。要在网络上打印,TCP 协议是最常用的协议。
下表说明受支持的打印机 URI 格式:
表 1–2 支持的 URI 格式
命令 |
URI 格式 |
---|---|
lpsched |
lpsched://localhost/printers/queue 此打印机 URI 方案只能用于联系本地 LP 服务,以访问在 URI 中指定的打印队列。 |
lpd |
lpd://localhost/printers/queue[#extensions] 使用此 URI 格式联系本地打印服务或远程打印服务,以便访问 URI 中指定主机上的打印队列。可指定可选的 #extensions,例如 #solaris。指定 #solaris 时,主机会在提交打印作业的过程中按照 RFC-1179 协议来处理 Solaris 扩展。 |
网络连接的打印机通常支持多种与打印服务进行通信的方法。与打印服务进行通信的最常用方法是,通过到设备上的已知端口的原始 TCP 连接。其他通信方法包括 RFC-1179 和 IPP 网络协议。采用以下方式之一添加新打印队列时,可以选择服务器到打印机通信协议。
通过使用带有以下选项的 lpadmin 命令,如下所示:
# lpadmin -o protocol={bsd|tcp} -o dest=printer:queue-or-port -m netstandard{_foomatic} |
这种与打印服务进行通信的方法已在 Solaris 2.6 OS 中引入,而且在所有后续的 Oracle Solaris 发行版中都可用。
第二种方法是使用带有 -d 选项的 lpadmin 命令提供设备,并使用 -m 选项指定 uri。
这种与打印服务进行通信的方法专用来取代以前的方法。
在确定要使用哪个协议执行服务器到打印机的通信时,请参阅供应商打印机文档以了解更具体的信息。文档中包括如 TCP 端口号、RFC-1179 打印机名称和设备支持的 IPP 打印机 URI 等信息。在大多数情况下,原始 TCP 套接字通信可能会提供最可靠的结果。
此外,请注意,由于 UNIX 平台和 Windows 平台上的打印服务之间存在差异,因此 Windows 托管的打印机应该配置为网络连接的打印机并以此方式进行管理。如果您在 Oracle Solaris 系统上使用这些类型的打印机,则这些打印机要求创建打印队列。此外,这些打印机还可以使用 SMB 协议来进行服务器到打印机的通信。有关 SMB 协议的更多信息,请参见SMB 协议说明。
有关设置打印机和配置打印队列的更多信息,请参见使用 Solaris Print Manager 设置打印机(任务图)和使用 LP 打印命令设置打印机(任务图)。