我应该将我的CUPS打印设置为使用IPP、LPD还是URL?

每次我要添加网络打印机时,总是面临着同样的困境:

我应该通过IPP、LPD还是使用它的IP地址(AppSocket/Jetdirect?)来设置打印机,以及为什么选择这种方式?

各种方法都有什么优缺点?

IPP和IP地址选项有何不同?如果选择了IPP,是否会避免在IP地址更改时需要重新添加打印机的麻烦?


这里有一个类似的问题,但是答案都涉及到特定的型号/情况: 各种打印机连接方式有什么区别?
这是来自Kubuntu设置向导的IP样式配置的屏幕截图: enter image description here
2个回答

LPD是一种老的标准,IPP则较新。
Ubuntu使用通用UNIX打印系统("CUPS")来处理打印。CUPS使用Internet打印协议("IPP")作为管理打印作业和队列的基础。其他协议也被支持(LPD、SMB、AppSocket,又称JetDirect),其中一些功能有所减弱。
LPD/LPR仍然常用且效果良好,但对于打印机设置每个打印作业的用户控制不多。
今天,LPD和JetDirect/AppSocket协议都可以在互联网上使用,但这两种协议都不提供身份验证服务、访问控制,并且所有文档管理和格式化(包括打印机特定命令)必须由发送文档的设备处理。
IPP更受欢迎,因为它使用双向通信,可以提供更多反馈和控制。
某些打印机可能不支持IPP。

ipp对于ml2165w非常好用!有很多选项(这是好的,但是...)没有解释,但是这个问题得到了解决,谢谢! - Aquarius Power
1你能在回答中加入一些关于ipps的信息吗?除了ipp之外,我在设置打印机时看到了这两个选项。我猜它只是表示“安全”。 - Elijah Lynn
我有一台爱普生ET-2550(ecotank)打印机,通过在浏览器中访问IP地址,然后从右上角的下拉菜单中选择高级设置,再点击服务>协议,向下滚动并找到了我的IPP URL。它是https://192.168.86.34:631/ipp/print。 - Elijah Lynn
1如果某台打印机不支持IPP,选择LPD还是JetDirect/AppSocket有什么区别吗? - jarno

@KodduX已经很好地回答了这个问题(我也点赞了)。但是这里还有一些额外的细节...
IPP相对于JetDirect/AppSocket的主要优势有以下几点:
AppSocket是一种“发送并忘记”的协议。IPP(S)可以提供关于作业处理当前状态的非常详细的反向通道信息(例如当前正在打印的页面),以及更多其他信息(例如查询过去、已完成或已取消的作业)。
AppSocket是一个非常简单的协议,因此在惠普引入它之后(相当久以前),每个人都可以进行逆向工程,尽管它从未成为官方标准;它也非常可靠和稳定(支持所有这些空集的“功能”),这就是为什么它被广泛使用并得到几乎所有网络打印机的支持的原因。
IPP由ISTO Printer Working Group (PWG)标准化,该组织代表了世界上几乎每个打印机制造商。惠普自己甚至非常密切地采用了IPP,他们有超过350款最新打印机型号通过自我认证,与新的'IPP Everywhere' Standard保持一致。
使用IPP(S),您可以获得与安全性相关的更好选项:身份验证/授权、传输数据加密、访问控制等。
使用IPP,您可以为打印作业选项指定一组指定的名称和值。双面打印可以是'sides=two-sided-long-edge''...=two-sided-short-edge'之一,而以前,您可以有多达十种或更多的方式来指定双面打印(因为每个供应商都可以自由使用自己的命名方案)。对于许多其他打印参数也是如此。
IPP(S)允许您查询支持IPP的打印机(过去10年销售的设备中超过90%都可以使用IPP进行通信,因为AirPrint只能通过它工作;其中超过一半的设备还可以直接处理PDF)的特定功能:它是否支持彩色?它支持哪些纸张尺寸?它可以双面打印吗?它可以装订、打孔、折叠吗?它支持哪些IPP版本?我可以向它发送哪种页面描述语言(PDL -- PostScript、PDF、PCL、JPEG等)?等等...
随着IPP标准的最新演进,被称为'IPP Everywhere',终于实现了无需驱动程序的打印。CUPS可以做到!每当遇到一个IPP Everywhere打印机时,它不再需要管理员准备或预安装任何驱动程序和/或设备特定的PPD文件:它知道可以发送标准的页面描述格式之一(JPEG、PWG-Raster、URF-Raster或PDF,不需要专有驱动程序生成),它可以查询设备的特定功能,并自动创建一个反映这些功能的PPD文件,以便即使非IPP启用的应用程序仍然可以以传统方式打印(这些“遗留”应用程序尚未使用IPP,并且用于查找PPD文件 -- 例如LibreOffice、Firefox等)。
IPP是未来,而未来已经到来了。(AppSocket是过去,但它还没有完全消失。大多数IPP打印机仍然支持AppSocket....)
在你的打印机这个特定情况下,有些供应商/型号的IPP实现存在缺陷,可能无法正常工作,而使用AppSocket打印到同一型号则可能完美运行。只需尝试使用IPP进行测试,如果正常工作就继续使用,否则回退到AppSocket。

那么你会如何比较LPD和JetDirect/AppSocket呢? - jarno
@jarno:JetDirect是惠普公司对AppSocket的市场标识。AppSocket只是一个“愚蠢”的数据传输协议,没有双向通信。它不支持任何身份验证。它只需要在接收方打开一个监听连接的端口(HP JetDirect通常使用端口9100)。你可以通过运行netcat来模拟AppSocket,将数据发送到目标地址。 - Kurt Pfeifle
好的,但是关于LPD呢? - jarno
@jarno:请不要滥用评论来提问额外的问题。请自己提问。在你提问之前,请确保你已经阅读了30年前的LPR RFC - Kurt Pfeifle
原始问题涉及三项服务。并非所有打印机都支持IPP,所以我想知道在其他两种选择中应该选哪一种。实际上,在我的系统中安装了闭源驱动程序后,我得到了IPP选项,所以我选择了它。 - jarno
@jarno: 看,LPR早就死了。有原因的!而Koddux给出了这些原因:LPR和AppSocket都“不提供身份验证服务、访问控制和所有文档管理”,并且“格式化(包括打印机特定命令)必须由发送文档的设备处理。”没有更多可说的了。此外,过去十年市场上出现的99%以上的网络连接打印机都支持IPP。 - Kurt Pfeifle
1此外,@jarno -- 我想知道:原始问题在提问后两个小时内得到了一个相当普遍但也正确的答案,并且同时获得了45个赞同。而我自己的回答是在问题提出近5年后添加的,集中于IPP的功能,并详细解释了它们,获得了5个赞同 -- 但你却不认为值得给它点赞,而且你仍然认为我欠你关于第一个答案其他方面更多的细节?!?这种推理对于一个使用这个网站已经超过3年并且不是新手的人来说真是奇怪。 - Kurt Pfeifle
1你认为即使你没有回答我的问题,我还欠你一个点赞吗?你的回答对于那些必须在LPD和JetDirect/AppSocket之间做出选择的人并没有帮助。如果你在回答中包含有关LPD的信息,你可能会得到更多的点赞。 - jarno
1@jarno:看起来我的回答至少帮助了5个人。甚至连你也决定使用IPP了。我在这个网站上的其他回答也帮助了很多人。关于LPD,我不想再提供比这个URL上已经有的更多细节了。你不欠我任何东西。谢谢。 - Kurt Pfeifle