网络打印两个基本端口(LPD和9100)的相关知识

⽹络打印两个基本端⼝(LPD和9100)的相关知识⽹络打印两个基本端⼝(LPD和9100)的相关知识
分类: Windows 2007-11-23 17:57 8107⼈阅读评论(1) 收藏举报
打印设备和主机的连接⽅式(printer interface)形态多样,从历史悠久的串⼝并⼝到现在流⾏的⽹
络打印和USB连接,另类的红外连接和蓝⽛技术,还有超炫的⽕线连接(IEEE 1394)。
我这篇⽂章试着探讨⼀下⽹络打印两个基本端⼝(LPD和9100)的相关知识。
⽹络打印最⼤的好处就是空间上不受限制,不被串⼝线/并⼝线/USB线的长度所禁锢,北京办公
室的员⼯可以直接把⽂件打印到上海办公室⽼板⾝边的打印机,这要感谢TCP/IP协议族建⽴的
强⼤的通讯基础设施。flash mtv
在速度上,⽹络打印只能处于中等⽔平,这倒不是它的强项。
技术变化形式速度
并⾏(1284)(Centronics)250 Kbps
ECP/EPP35 Mbps
TCP/IP100 Mbps
IrDA  4 Mbps
⽕线(FireWire)(1394)(最多63个设备)400 Mbps
USB  1.012 Mbps
2.0480 Mbps
蓝⽛(Bluetooth)23 Mbps
伴随着TCP/IP的诞⽣和发展,⼈们⽴即把这项技术应⽤到打印领域,⽐较早形成标准的就是
Line Printer Daemon Protocol,通称为 LPR 协议,记录在 RFC1179 ⽂档中。LPR 协议在Unix
系统上⼴泛应⽤和实现(那时候还没有Windows)。LPR协议规定发送⽅的端⼝从721到731,
接收⽅端⼝是515。
当HP公司推出JetDirect打印机系列的时候,他们没有在他们的打印服务器上采⽤LPD协议,⽽
是开发了⼀种新的⽹络打印协议,这个新协议被称为 RAW 打印协议或 Socket API。打印设备
上开启的TCP端⼝是9100,这个端⼝提供到打印引擎(print engine)的直接连接,类似于以前的
串⼝或并⼝,这也就是它被称为 RAW 的原因。这个连接通常是全双⼯的,并在打印时提供错误
报告和状态信息。
花开两朵,各表⼀枝。我们回头再谈LPR和9100传输的细节问题,先看⼀下⽹络打印技术在Windows操作系统上的发展。
我这⾥只讲Win OS作为打印客户端的情况,Win OS作为打印服务器的情况不在讨论之列。
我们编辑/查看⽂档的应⽤程序,⽐如MS Word/Excel/PPT,Notepad,Adobe Acrobat等,不会
直接跟⽹络打印设备建⽴连接。当我们从这些程序打印⽂档的时候,操作系统上有⼀类叫做端
总统千金欧游记
⼝监视器(Port Monitor)的程序在运⾏,它们把客户端连接到对应的打印机上。在Win2000之
前,端⼝和port monitor的种类⽐较多也⽐较乱,因为那时打印⾏业标准还不统⼀。每个打印设
备⽣产商如果定义了⾃⼰的接⼝,就要有相应的端⼝类型和port monitor。⽐如安装在WinNT4
上的Digital Network port monitor,Hewlett-Packard JetAdmin,和Lexmark Port Monitors。我
们可以通过打印机属性页看到⾃⼰电脑上安装的端⼝类型,每个类型都有⾃⼰的port monitor。
从Win2000起,微软推出了Standard TCP/IP Port Monitor(SPM),SPM跟打印设备建⽴TCP连
接。SPM是⼀种服务,⽽不是⼀个协议。SPM可以使⽤ RAW 或 LPR 协议向打印机发送作业
对⼤多数打印设备来说,RAW是默认的协议。如果在端⼝配置中选择了LPR 协议,SPM 就⽤
LPR协议发送作业。
我们在Win2k和WinXP上还可以看到LPR Port和LPR Port Monitor,请不要把LPR Port和LPR
协议混淆在⼀起,虽然它们是有联系的。LPR Port默认情况下不会安装,需要在“添加/删除
Windows组件”中选择“Other Network File and Print Services”——>“Print Services for Unix”。从
戳脚翻子细节上讲,LPR Port是由lprmon.dll来管理的,⽽SPM是由tcpmon.dll来执⾏的。
SPM中实现的LPR协议跟标准的LPR协议还是有所不同的。标准的LPR协议使⽤端⼝ 721到731
来发送数据,Windows SPM在使⽤LPR协议时则使⽤>1023的未保留的端⼝。另外⼀个不同
是,SPM向spooler发送打印作业时⽆需确定作业的⼤⼩,⽽标准的LPR协议规定打印作业必须
包含作业⼤⼩的信息。这样的话,标准的LPR Port Monitor就要 spool 作业两次 — ⼀次确定作业⼤⼩,⼀次把作业发给spooler。相⽐之下,SPM Spool作业⼀次,提⾼了打印效率。
我们可以⽐较⼀下⽹络上抓下来的标准LPR包和SPM实现的LPR包。
标准LPR包:
Tcp: SrcPort=XSRP(721), DstPort=LPD(515)  //注:源端⼝在721-731之间
SPM实现的LPR包:
Tcp: SrcPort=1844, DstPort=LPD(515)  //注:源端⼝>1023
它们的源端⼝差别如上⽂所述,⽬标端⼝是⼀致的,另外,我这⾥没贴出来的,LPR协议本⾝携带的数据在两种情况下是⼀致的。
再回过头来看9100端⼝和LPD端⼝配置的不同。
LPR协议因为起源的原因,规定了line printer daemon客户端和服务端交互的⼀系列命令,⼤概的内容如下:
switch(command code){
lianhezaobaocase 01:
Print any waiting jobs;
case 02:
//Receive a printer job;
//second level commands
Send positive acknowledgement;
switch(subcommands code)
{
方块电阻
case 01:
Abort job;
case 02:
Send positive acknowledgement;
Receive control file;
case 03:
Send positive acknowledgement;
Receive data file;
}
case 03:
Send queue state (short);
case 04:
Send queue state (long);
case 05:
Remove jobs;
}
LPR协议规定的⼀套逻辑细节请参看RFC1179。
我们可以看到,这些命令对我们现在打印的要求来说似乎有些繁琐,HP当年设⽴9100端⼝的意思⼤概也是跳过这些命令来往,直接把准备好的PDL(page description language)数据扔给打印引擎,RAW数据就是PDL⽤的数据类型,PCL和PostScript都是RAW数据,打印引擎可以直接处理。
通过⽐较同⼀个作业分别⽤9100和LPR端⼝发的数据包,我们可以看到,LPR⼦命令发送
的“Data File”的内容跟TCP协议9100端⼝发出去的数据内容是⼀样的。这个数据内容,我们可以⽤具体打印机的“Print to file”⽅式得到。
痛风灵
SPM⽤9100端⼝向打印设备发送打印数据,作业完成后就关闭连接。对打印机的管理则遵照RFC 1759(Printer MIB)⽤SNMP协议来进⾏,LPR端⼝则是数据和控制信息都在⼀个连接上处理。打个⽐⽅,9100端⼝是双车道,数据和控制信息分开⾛,LPR则是单车道。
简⽽⾔之,9100端⼝打印更加⾼效快捷,更具有扩展性。

本文发布于:2024-09-22 15:37:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/319482.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:打印   协议   数据   作业   打印机   连接   标准   情况
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议