下表介绍了 Oracle Solaris OS 中构成 IPP 支持的组件:
表 A–1 IPP 组件
组件 |
功能 |
---|---|
httpd |
Apache Web 服务器。它提供了一个 HTTP 传输侦听程序,用于在 IANA 注册 IPP 端口 tcp/631 上侦听 HTTP 请求。一旦收到请求,会将请求传递到 IPP Apache 模块。 |
mod_ipp.so |
Apache IPP 模块。此 Apache 模块检查客户机的 HTTP 请求,以确定它是否类似于 IPP 请求(application/ipp 的 mime-type 和 HTTP POST 操作)。一旦确定它是 IPP 请求,则会将其传递到 IPP 侦听程序库。此模块还引入和处理了特定于 IPP 的 Apache 配置指令。 |
libipp-listener.so |
IPP 侦听程序库。此库利用核心 IPP 编组库来解码 IPP 请求,并将其分发给它的一个 IPP 操作实现函数。这些函数将 IPP 请求转换为 PAPI 调用,以便与本地打印服务进行交互。进行处理后,侦听程序库对请求进行编码,并将结果发回到发出请求的客户机。 |
libipp-core.so |
IPP 编组库对 IPP 字节流进行解码和编码,以通过线路进行接收和传输。 |
libpapi.so |
PAPI 库为应用程序(如 IPP 侦听服务)提供了一种与打印服务进行交互的方法。 |
IPP 侦听服务库 (libipp-listener)-是进行大部分协议请求处理的位置。该库使用核心 IPP 库 libipp-core.so 读取和验证请求。在验证请求后,会将请求转换为一系列客户机 API 调用。然后,使用核心 IPP 库将这些调用的结果转换为相应的 IPP 响应。Web 服务器会将响应返回到客户机系统。侦听服务库的接口是一个特定于 IPP 服务器端实现的项目专用接口。
IPP 核心库 (libipp-core.so)-在客户机操作与服务器操作之间共享。IPP 核心库包含一些用于读取和写入协议请求和响应的例程。该库将在标准二进制表示形式和一组通用数据结构之间转换 IPP 请求和响应数据。从根本上讲,这种通用数据表示形式用于将请求转换为打印服务中立的表示形式,或者从打印服务中立的表示形式进行转换,并通过通用打印接口 libpapi.so 传递这种通用数据表示形式。由于客户端和服务器端 IPP 支持都必须执行此功能,因此,客户机和服务器共享此 IPP 核心库。
PAPI 库 (libpapi.so)-为应用程序提供了一种打印服务中立的方法,来与打印服务或协议进行交互。在本例中,PAPI 库为 Apache IPP 侦听服务提供一种与本地 LP 服务进行交互的方法。PAPI 库根据 printers.conf 配置数据库中存储的客户端队列配置数据,确定要与之交互的打印服务。