趙劉崗
(上海漢圖科技有限公司,上海 201210)
了解打印機系統(tǒng)的通信協(xié)議,是開發(fā)打印機系統(tǒng)的必要基礎(chǔ),所以研究打印機系統(tǒng)的通信協(xié)議對打印機開發(fā)而言是非常重要的。而本文涉及多種打印機協(xié)議,其中提到的IPP協(xié)議作為打印機協(xié)議的工業(yè)標準是非常重要的一塊。
關(guān)于設(shè)備發(fā)現(xiàn)服務(wù),需要提到mDNS/DNS-SD協(xié)議,很多系統(tǒng)的打印機發(fā)現(xiàn)是基于這個技術(shù)。例如,蘋果的AirPrint規(guī)范,Android的Mopria規(guī)范,Windows 10中發(fā)現(xiàn)IPP打印機等。
DNS-SD協(xié)議,基于DNS的服務(wù)發(fā)現(xiàn)主要用到DNS現(xiàn)有的三種類型記錄:PTR記錄、SRV記錄、TXT記錄,其中:
設(shè)備會先發(fā)送一個查詢PTR記錄的數(shù)據(jù)包到組播組,所查詢服務(wù)格式為:
服務(wù)實例確定后,通過查詢SRV記錄,查詢服務(wù)實例的主機名和端口號。客戶端先發(fā)送一個mDNS請求,然后具有對應(yīng)服務(wù)實例的設(shè)備會響應(yīng)SRV記錄,SRV記錄有這個服務(wù)實例對應(yīng)的主機名和端口號。
服務(wù)實例除了所在設(shè)備的端口號和主機名這些信息以外,還可以提供更多的附加信息,服務(wù)實例的附加信息記錄在TXT記錄中,以“key=value”的格式記錄。
在計算機網(wǎng)絡(luò)中,組播DNS(mDNS)協(xié)議將主機名解析為無本地DNS的小型網(wǎng)絡(luò)中的IP地址,使用與單播DNS基本相同的編程接口,數(shù)據(jù)包格式和操作語義。
蘋果公司的AirPrint可以從iPad,iPhone,iPod touch和Mac進行即時打印,掃描和傳真無須安裝驅(qū)動程序或特定軟件。具有非常好的用戶使用體驗,iOS設(shè)備和Mac計算機中打印只需要最少硬件和軟件支持,為系統(tǒng)原生提供的功能,只需要打印機符合AirPrint規(guī)范即可。
AirPrint技術(shù)基于用于打印的Internet打印協(xié)議(IPP),用于打印機發(fā)現(xiàn)的Bonjour和通用的文檔打印的光柵格式(URF)和JPEG文件格式的打印照片。AirPrint進一步建議支持可移植文檔格式(PDF)用于增強文檔打印。AirPrint可在無線和有線網(wǎng)絡(luò)以及USB上運行,使用IPP USB打印協(xié)議。AirPrint是macOS首選打印機協(xié)議,也是iOS唯一支持的打印協(xié)議。
Mopria打印技術(shù)是Mopria聯(lián)盟制定的標準,提供了一種簡單而無縫的方式來打印,任何Mopria認證的打印機無須安裝任何其他軟件或驅(qū)動程序,無論打印機品牌如何,都可以輕松打印。安卓8及更高版本手機上的安卓默認打印服務(wù)采用了Mopria的核心打印技術(shù)。
Windows 10也支持Mopria認證的打印機,因此,當您安裝新打印機并且Windows更新不可用時,Windows將自動安裝Mopria認證的打印機。Windows通常還使用WSD打印協(xié)議,基于HTTP服務(wù)和SOAP的協(xié)議。
Mopria打印方式和蘋果公司的AirPrint十分類似,核心都是基于IPP打印協(xié)議,都提供了統(tǒng)一簡單的用戶使用方式,提高了用戶體驗,并且無須安裝驅(qū)動和軟件,具有即時發(fā)現(xiàn)即時打印的能力。
互聯(lián)網(wǎng)打印協(xié)議(IPP)是打印機的標準協(xié)議,已成為打印機行業(yè)事實上的工業(yè)標準,屬于應(yīng)用層協(xié)議,主要用于網(wǎng)絡(luò)技術(shù)的打印。協(xié)議定義了規(guī)則用于編碼IPP操作,屬性和值放入“application/ipp”類型的MIME媒體中。它還定義了傳輸消息正文通過HTTP/HTTPS傳輸?shù)腃ontent-Type為“application/ipp”的規(guī)則?;贖TTPS的IPP通信方式稱為IPPS,它是基于了IPP和HTTPS的安全通信層,SSL/TLS提供了更好的打印安全性的保證。
IPP數(shù)據(jù)模型和操作語義Internet打印協(xié)議/1.1:模型和語義(RFC 8011)。IPP定義了一些操作,主要有Print-Job、Create-Job、Get-Printer-Attributes、Send-Document、Cancel-Job、Get-Job-Attributes等,根據(jù)名稱就大概能知道是什么含義。這里要說明的是Print-Job操作,附帶了需要打印的數(shù)據(jù)文件,而Create-Job和Send-Document是組合使用的操作,創(chuàng)建Job后再發(fā)送打印數(shù)據(jù)。
通常IPP協(xié)議的使用會結(jié)合打印機發(fā)現(xiàn)協(xié)議共同使用。用戶端設(shè)備首先會使用發(fā)現(xiàn)協(xié)議,發(fā)現(xiàn)打印機,得到和打印機通信方式(例如IPP打印服務(wù)),再使用IPP協(xié)議獲取打印機的設(shè)備狀態(tài)。在用戶發(fā)起打印任務(wù)時,設(shè)備向打印機創(chuàng)建打印任務(wù)并傳遞具體的打印參數(shù),并將數(shù)據(jù)發(fā)送到打印機進行打印。
針對目前打印機系統(tǒng)的實際應(yīng)用需要,本文研究了當前打印機系統(tǒng)的相關(guān)通信協(xié)議。當然具體的打印機開發(fā),還涉及具體的協(xié)議開發(fā)工作。本文介紹的打印機相關(guān)通信協(xié)議可以為打印機系統(tǒng)開發(fā)的協(xié)議選擇提供指導(dǎo)作用。