赵刘岗
(上海汉图科技有限公司,上海 201210)
了解打印机系统的通信协议,是开发打印机系统的必要基础,所以研究打印机系统的通信协议对打印机开发而言是非常重要的。而本文涉及多种打印机协议,其中提到的IPP协议作为打印机协议的工业标准是非常重要的一块。
关于设备发现服务,需要提到mDNS/DNS-SD协议,很多系统的打印机发现是基于这个技术。例如,苹果的AirPrint规范,Android的Mopria规范,Windows 10中发现IPP打印机等。
DNS-SD协议,基于DNS的服务发现主要用到DNS现有的三种类型记录:PTR记录、SRV记录、TXT记录,其中:
设备会先发送一个查询PTR记录的数据包到组播组,所查询服务格式为:
服务实例确定后,通过查询SRV记录,查询服务实例的主机名和端口号。客户端先发送一个mDNS请求,然后具有对应服务实例的设备会响应SRV记录,SRV记录有这个服务实例对应的主机名和端口号。
服务实例除了所在设备的端口号和主机名这些信息以外,还可以提供更多的附加信息,服务实例的附加信息记录在TXT记录中,以“key=value”的格式记录。
在计算机网络中,组播DNS(mDNS)协议将主机名解析为无本地DNS的小型网络中的IP地址,使用与单播DNS基本相同的编程接口,数据包格式和操作语义。
苹果公司的AirPrint可以从iPad,iPhone,iPod touch和Mac进行即时打印,扫描和传真无须安装驱动程序或特定软件。具有非常好的用户使用体验,iOS设备和Mac计算机中打印只需要最少硬件和软件支持,为系统原生提供的功能,只需要打印机符合AirPrint规范即可。
AirPrint技术基于用于打印的Internet打印协议(IPP),用于打印机发现的Bonjour和通用的文档打印的光栅格式(URF)和JPEG文件格式的打印照片。AirPrint进一步建议支持可移植文档格式(PDF)用于增强文档打印。AirPrint可在无线和有线网络以及USB上运行,使用IPP USB打印协议。AirPrint是macOS首选打印机协议,也是iOS唯一支持的打印协议。
Mopria打印技术是Mopria联盟制定的标准,提供了一种简单而无缝的方式来打印,任何Mopria认证的打印机无须安装任何其他软件或驱动程序,无论打印机品牌如何,都可以轻松打印。安卓8及更高版本手机上的安卓默认打印服务采用了Mopria的核心打印技术。
Windows 10也支持Mopria认证的打印机,因此,当您安装新打印机并且Windows更新不可用时,Windows将自动安装Mopria认证的打印机。Windows通常还使用WSD打印协议,基于HTTP服务和SOAP的协议。
Mopria打印方式和苹果公司的AirPrint十分类似,核心都是基于IPP打印协议,都提供了统一简单的用户使用方式,提高了用户体验,并且无须安装驱动和软件,具有即时发现即时打印的能力。
互联网打印协议(IPP)是打印机的标准协议,已成为打印机行业事实上的工业标准,属于应用层协议,主要用于网络技术的打印。协议定义了规则用于编码IPP操作,属性和值放入“application/ipp”类型的MIME媒体中。它还定义了传输消息正文通过HTTP/HTTPS传输的Content-Type为“application/ipp”的规则。基于HTTPS的IPP通信方式称为IPPS,它是基于了IPP和HTTPS的安全通信层,SSL/TLS提供了更好的打印安全性的保证。
IPP数据模型和操作语义Internet打印协议/1.1:模型和语义(RFC 8011)。IPP定义了一些操作,主要有Print-Job、Create-Job、Get-Printer-Attributes、Send-Document、Cancel-Job、Get-Job-Attributes等,根据名称就大概能知道是什么含义。这里要说明的是Print-Job操作,附带了需要打印的数据文件,而Create-Job和Send-Document是组合使用的操作,创建Job后再发送打印数据。
通常IPP协议的使用会结合打印机发现协议共同使用。用户端设备首先会使用发现协议,发现打印机,得到和打印机通信方式(例如IPP打印服务),再使用IPP协议获取打印机的设备状态。在用户发起打印任务时,设备向打印机创建打印任务并传递具体的打印参数,并将数据发送到打印机进行打印。
针对目前打印机系统的实际应用需要,本文研究了当前打印机系统的相关通信协议。当然具体的打印机开发,还涉及具体的协议开发工作。本文介绍的打印机相关通信协议可以为打印机系统开发的协议选择提供指导作用。