Network Working Group                                        T. Hastings
Request for Comments: 2639                                     C. Manros
Category: Informational                                Xerox Corporation
                                                               July 1999
        
Network Working Group                                        T. Hastings
Request for Comments: 2639                                     C. Manros
Category: Informational                                Xerox Corporation
                                                               July 1999
        

Internet Printing Protocol/1.0: Implementer's Guide

Internet打印协议/1.0:实施者指南

Status of this Memo

本备忘录的状况

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.

本备忘录为互联网社区提供信息。它没有规定任何类型的互联网标准。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (1999). All Rights Reserved.

版权所有(C)互联网协会(1999年)。版权所有。

Abstract

摘要

This document is one of a set of documents, which together describe all aspects of a new Internet Printing Protocol (IPP). IPP is an application level protocol that can be used for distributed printing using Internet tools and technologies. This document contains information that supplements the IPP Model and Semantics [RFC2566] and the IPP Transport and Encoding [RFC2565] documents. It is intended to help implementers understand IPP/1.0 and some of the considerations that may assist them in the design of their client and/or IPP object implementations. For example, a typical order of processing requests is given, including error checking. Motivation for some of the specification decisions is also included.

本文档是一组文档之一,这些文档共同描述了新Internet打印协议(IPP)的所有方面。IPP是一种应用程序级协议,可用于使用Internet工具和技术进行分布式打印。本文档包含补充IPP模型和语义[RFC2566]以及IPP传输和编码[RFC2565]文档的信息。它旨在帮助实现者理解IPP/1.0以及一些可能有助于他们设计客户端和/或IPP对象实现的注意事项。例如,给出了处理请求的典型顺序,包括错误检查。还包括一些规范决策的动机。

The full set of IPP documents includes:

整套IPP文件包括:

     Design Goals for an Internet Printing Protocol [RFC2567]
     Rationale for the Structure and Model and Protocol for the Internet
        Printing Protocol [RFC2568]
     Internet Printing Protocol/1.0: Model and Semantics [RFC2566]
     Internet Printing Protocol/1.0: Encoding and Transport [RFC2565]
     Mapping between LPD and IPP Protocols [RFC2569]
        
     Design Goals for an Internet Printing Protocol [RFC2567]
     Rationale for the Structure and Model and Protocol for the Internet
        Printing Protocol [RFC2568]
     Internet Printing Protocol/1.0: Model and Semantics [RFC2566]
     Internet Printing Protocol/1.0: Encoding and Transport [RFC2565]
     Mapping between LPD and IPP Protocols [RFC2569]
        

The document, "Design Goals for an Internet Printing Protocol", takes a broad look at distributed printing functionality, and it enumerates real-life scenarios that help to clarify the features that need to be included in a printing protocol for the Internet. It identifies requirements for three types of users: end users, operators, and

“Internet打印协议的设计目标”文档广泛介绍了分布式打印功能,并列举了有助于澄清需要包含在Internet打印协议中的功能的实际场景。它确定了三类用户的需求:最终用户、操作员和用户

administrators. The design goals document calls out a subset of end user requirements that are satisfied in IPP/1.0. Operator and administrator requirements are out of scope for version 1.0.

管理员。设计目标文件列出了IPP/1.0中满足的最终用户需求子集。操作员和管理员要求超出了版本1.0的范围。

The document, "Rationale for the Structure and Model and Protocol for the Internet Printing Protocol", describes IPP from a high level view, defines a roadmap for the various documents that form the suite of IPP specifications, and gives background and rationale for the IETF working group's major decisions.

“互联网打印协议的结构、模型和协议的基本原理”文件从高层次上描述了IPP,定义了构成IPP规范套件的各种文件的路线图,并为IETF工作组的主要决策提供了背景和基本原理。

The document, "Internet Printing Protocol/1.0: Model and Semantics", describes a simplified model with abstract objects, their attributes, and their operations. The model introduces a Printer and a Job. The Job supports multiple documents per Job. The model document also addresses how security, internationalization, and directory issues are addressed.

“Internet打印协议/1.0:模型和语义”文档描述了一个带有抽象对象、属性及其操作的简化模型。该模型引入了打印机和作业。每个作业支持多个文档。模型文档还讨论了如何解决安全性、国际化和目录问题。

The document, "Internet Printing Protocol/1.0: Encoding and Transport", is a formal mapping of the abstract operations and attributes defined in the model document onto HTTP/1.1. It also defines the encoding rules for a new Internet media type called "application/ipp".

“Internet打印协议/1.0:编码和传输”文档是模型文档中定义的抽象操作和属性到HTTP/1.1的正式映射。它还定义了称为“应用程序/ipp”的新Internet媒体类型的编码规则。

The document, "Mapping between LPD and IPP Protocols", gives some advice to implementers of gateways between IPP and LPD (Line Printer Daemon) implementations.

“LPD和IPP协议之间的映射”文档为IPP和LPD(Line Printer Daemon)实现之间网关的实现者提供了一些建议。

Table of Contents

目录

  1  Introduction......................................................4
   1.1 Conformance language............................................4
   1.2 Other terminology...............................................5
  2  Model and Semantics...............................................5
   2.1 Summary of Operation Attributes.................................5
   2.2 Suggested Operation Processing Steps for IPP Objects ..........10
       2.2.1 Suggested Operation Processing Steps for all Operations..11
       2.2.1.1  Validate version number...............................11
       2.2.1.2  Validate operation identifier.........................11
       2.2.1.3  Validate the request identifier.......................11
       2.2.1.4  Validate attribute group and attribute presence and
                order.................................................12
       2.2.1.5  Validate the values of the REQUIRED Operation
                attributes............................................19
       2.2.1.6  Validate the values of the OPTIONAL Operation
                attributes............................................23
     2.2.2 Suggested Additional Processing Steps for Operations that
           Create/Validate Jobs and Add Documents.....................26
       2.2.2.1  Default "ipp-attribute-fidelity" if not supplied......26
        
  1  Introduction......................................................4
   1.1 Conformance language............................................4
   1.2 Other terminology...............................................5
  2  Model and Semantics...............................................5
   2.1 Summary of Operation Attributes.................................5
   2.2 Suggested Operation Processing Steps for IPP Objects ..........10
       2.2.1 Suggested Operation Processing Steps for all Operations..11
       2.2.1.1  Validate version number...............................11
       2.2.1.2  Validate operation identifier.........................11
       2.2.1.3  Validate the request identifier.......................11
       2.2.1.4  Validate attribute group and attribute presence and
                order.................................................12
       2.2.1.5  Validate the values of the REQUIRED Operation
                attributes............................................19
       2.2.1.6  Validate the values of the OPTIONAL Operation
                attributes............................................23
     2.2.2 Suggested Additional Processing Steps for Operations that
           Create/Validate Jobs and Add Documents.....................26
       2.2.2.1  Default "ipp-attribute-fidelity" if not supplied......26
        
       2.2.2.2  Check that the Printer object is accepting jobs.......26
       2.2.2.3  Validate the values of the Job Template attributes....26
     2.2.3 Algorithm for job validation...............................27
       2.2.3.1  Check for conflicting Job Template attributes values..33
       2.2.3.2  Decide whether to REJECT the request..................33
       2.2.3.3  For the Validate-Job operation, RETURN one of the
                success status codes..................................34
       2.2.3.4  Create the Job object with attributes to support......34
       2.2.3.5  Return one of the success status codes................36
       2.2.3.6  Accept appended Document Content......................36
       2.2.3.7  Scheduling and Starting to Process the Job............36
       2.2.3.8  Completing the Job....................................37
       2.2.3.9  Destroying the Job after completion...................37
       2.2.3.10 Interaction with "ipp-attribute-fidelity".............37
   2.3 Status codes returned by operation ............................37
     2.3.1 Printer Operations.........................................38
       2.3.1.1  Print-Job.............................................38
       2.3.1.2  Print-URI.............................................40
       2.3.1.3  Validate-Job..........................................40
       2.3.1.4  Create-Job............................................41
       2.3.1.5  Get-Printer-Attributes................................41
       2.3.1.6  Get-Jobs..............................................42
     2.3.2 Job Operations.............................................43
       2.3.2.1  Send-Document.........................................43
       2.3.2.2  Send-URI..............................................44
       2.3.2.3  Cancel-Job............................................44
       2.3.2.4  Get-Job-Attributes....................................45
   2.4 Validate-Job...................................................46
   2.5 Case Sensitivity in URIs ......................................46
   2.6 Character Sets, natural languages, and internationalization....46
     2.6.1 Character set code conversion support .....................46
     2.6.2 What charset to return when an unsupported charset is
           requested?.................................................48
     2.6.3 Natural Language Override (NLO) ...........................48
   2.7 The "queued-job-count" Printer Description attribute...........50
     2.7.1 Why is "queued-job-count" RECOMMENDED?.....................50
     2.7.2 Is "queued-job-count" a good measure of how busy a printer
           is?........................................................50
   2.8 Sending empty attribute groups ................................50
   2.9 Returning unsupported attributes in Get-Xxxx responses ........51
   2.10 Returning job-state in Print-Job response ....................51
   2.11 Flow controlling the data portion of a Print-Job request .....52
   2.12 Multi-valued attributes ......................................53
   2.13 Querying jobs with IPP that were submitted using other job
        submission protocols .........................................53
   2.14 The 'none' value for empty sets ..............................54
   2.15 Get-Jobs, my-jobs='true', and 'requesting-user-name'?.........54
        
       2.2.2.2  Check that the Printer object is accepting jobs.......26
       2.2.2.3  Validate the values of the Job Template attributes....26
     2.2.3 Algorithm for job validation...............................27
       2.2.3.1  Check for conflicting Job Template attributes values..33
       2.2.3.2  Decide whether to REJECT the request..................33
       2.2.3.3  For the Validate-Job operation, RETURN one of the
                success status codes..................................34
       2.2.3.4  Create the Job object with attributes to support......34
       2.2.3.5  Return one of the success status codes................36
       2.2.3.6  Accept appended Document Content......................36
       2.2.3.7  Scheduling and Starting to Process the Job............36
       2.2.3.8  Completing the Job....................................37
       2.2.3.9  Destroying the Job after completion...................37
       2.2.3.10 Interaction with "ipp-attribute-fidelity".............37
   2.3 Status codes returned by operation ............................37
     2.3.1 Printer Operations.........................................38
       2.3.1.1  Print-Job.............................................38
       2.3.1.2  Print-URI.............................................40
       2.3.1.3  Validate-Job..........................................40
       2.3.1.4  Create-Job............................................41
       2.3.1.5  Get-Printer-Attributes................................41
       2.3.1.6  Get-Jobs..............................................42
     2.3.2 Job Operations.............................................43
       2.3.2.1  Send-Document.........................................43
       2.3.2.2  Send-URI..............................................44
       2.3.2.3  Cancel-Job............................................44
       2.3.2.4  Get-Job-Attributes....................................45
   2.4 Validate-Job...................................................46
   2.5 Case Sensitivity in URIs ......................................46
   2.6 Character Sets, natural languages, and internationalization....46
     2.6.1 Character set code conversion support .....................46
     2.6.2 What charset to return when an unsupported charset is
           requested?.................................................48
     2.6.3 Natural Language Override (NLO) ...........................48
   2.7 The "queued-job-count" Printer Description attribute...........50
     2.7.1 Why is "queued-job-count" RECOMMENDED?.....................50
     2.7.2 Is "queued-job-count" a good measure of how busy a printer
           is?........................................................50
   2.8 Sending empty attribute groups ................................50
   2.9 Returning unsupported attributes in Get-Xxxx responses ........51
   2.10 Returning job-state in Print-Job response ....................51
   2.11 Flow controlling the data portion of a Print-Job request .....52
   2.12 Multi-valued attributes ......................................53
   2.13 Querying jobs with IPP that were submitted using other job
        submission protocols .........................................53
   2.14 The 'none' value for empty sets ..............................54
   2.15 Get-Jobs, my-jobs='true', and 'requesting-user-name'?.........54
        
   2.16 The "multiple-document-handling" Job Template attribute and
        support of multiple document jobs.............................54
  3  Encoding and Transport...........................................55
   3.1 General Headers................................................56
   3.2 Request  Headers...............................................57
   3.3 Response Headers...............................................58
   3.4 Entity  Headers................................................59
   3.5 Optional support for HTTP/1.0..................................60
   3.6 HTTP/1.1 Chunking..............................................60
     3.6.1 Disabling IPP Server Response Chunking.....................60
     3.6.2 Warning About the Support of Chunked Requests..............60
  4  References.......................................................61
   4.1 Authors' Addresses.............................................62
  5  Security Considerations..........................................62
  6  Notices..........................................................62
  Full Copyright Statement............................................65
        
   2.16 The "multiple-document-handling" Job Template attribute and
        support of multiple document jobs.............................54
  3  Encoding and Transport...........................................55
   3.1 General Headers................................................56
   3.2 Request  Headers...............................................57
   3.3 Response Headers...............................................58
   3.4 Entity  Headers................................................59
   3.5 Optional support for HTTP/1.0..................................60
   3.6 HTTP/1.1 Chunking..............................................60
     3.6.1 Disabling IPP Server Response Chunking.....................60
     3.6.2 Warning About the Support of Chunked Requests..............60
  4  References.......................................................61
   4.1 Authors' Addresses.............................................62
  5  Security Considerations..........................................62
  6  Notices..........................................................62
  Full Copyright Statement............................................65
        

1 Introduction

1导言

This document contains information that supplements the IPP Model and Semantics [RFC2566] and the IPP Transport and Encoding [RFC2565] documents. As such this information is not part of the formal specifications. Instead information is presented to help implementers understand the specification, including some of the motivation for decisions taken by the committee in developing the specification. Some of the implementation considerations are intended to help implementers design their client and/or IPP object implementations. If there are any contradictions between this document and [RFC2566] or [RFC2565], those documents take precedence over this document.

本文档包含补充IPP模型和语义[RFC2566]以及IPP传输和编码[RFC2565]文档的信息。因此,该信息不属于正式规范的一部分。相反,提供信息是为了帮助实现者理解规范,包括委员会在制定规范时做出决定的一些动机。一些实现注意事项旨在帮助实现者设计其客户机和/或IPP对象实现。如果本文件与[RFC2566]或[RFC2565]之间存在任何矛盾,则这些文件优先于本文件。

1.1 Conformance language
1.1 一致性语言

Usually, this document does not contain the terminology MUST, MUST NOT, MAY, NEED NOT, SHOULD, SHOULD NOT, REQUIRED, and OPTIONAL. However, when those terms do appear in this document, their intent is to repeat what the [RFC2566] and [RFC2565] documents require and allow, rather than specifying additional conformance requirements. These terms are defined in section 13 on conformance terminology in [RFC2566], most of which is taken from RFC 2119 [RFC2119].

通常,本文档不包含术语“必须”、“不得”、“可能”、“不需要”、“应该”、“不应该”、“必需”和“可选”。然而,当这些术语出现在本文件中时,其目的是重复[RFC2566]和[RFC2565]文件要求和允许的内容,而不是规定额外的一致性要求。[RFC2566]中关于一致性术语的第13节对这些术语进行了定义,其中大部分术语取自RFC 2119[RFC2119]。

Implementers should read section 13 in [RFC2566] in order to understand these capitalized words. The words MUST, MUST NOT, and REQUIRED indicate what implementations are required to support in a client or IPP object in order to be conformant to [RFC2566] and [RFC2565]. MAY, NEED NOT, and OPTIONAL indicate was is merely allowed as an implementer option. The verbs SHOULD and SHOULD NOT indicate suggested behavior, but which is not required or disallowed, respectively, in order to conform to the specification.

实施者应阅读[RFC2566]中的第13节,以便理解这些大写单词。单词必须、不得和必需表示需要在客户端或IPP对象中支持哪些实现才能符合[RFC2566]和[RFC2565]。可以、不需要和可选指示仅允许作为实现者选项。动词应该和不应该表示建议的行为,但为了符合规范,这些行为分别不是必需的或不允许的。

1.2 Other terminology
1.2 其他术语

The term "sender" refers to the client that sends a request or an IPP object that returns a response. The term "receiver" refers to the IPP object that receives a request and to a client that receives a response.

术语“发送方”指发送请求的客户端或返回响应的IPP对象。术语“接收方”指接收请求的IPP对象和接收响应的客户端。

2 Model and Semantics

2模型和语义

This section discusses various aspects of IPP/1.0 Model and Semantics [RFC2566].

本节讨论IPP/1.0模型和语义[RFC2566]的各个方面。

2.1 Summary of Operation Attributes
2.1 操作属性摘要

Legend for the following table:

下表的图例:

R indicates a REQUIRED operation or attribute for an implementation to support

R表示实现需要支持的操作或属性

O indicates an OPTIONAL operation or attribute for an implementation to support

O表示实现要支持的可选操作或属性

Table 1. Summary of operation attributes for Printer operations

表1。打印机操作的操作属性摘要

Printer Operations

打印机操作

Requests Responses

请求和响应

Operation Print- Pri Crea Get- Get- All Attributes Job, nt- te- Printer- Jobs Opera-Validate URI Job Attribut tions -Job (O) (O) es

操作Print-Pri Crea Get-Get-All Attributes Job,nt-te-Printer-Jobs Opera-Validate URI Job Attributes-Job(O)(O)es

Operation parameters--REQUIRED to be supplied by the sender

操作参数——需要由发送方提供

operation-id R R R R R

操作id R

status-code R

状态代码R

request-id R R R R R R

请求id R

version-number R R R R R R

版本号R

Operation attributes-REQUIRED to be supplied by the sender

发送方需要提供的操作属性

attributes-charset R R R R R R

属性字符集

attributes- R R R R R R natural-language

属性-自然语言

document-uri R

文档uri R

job-id*

工作id*

job-uri*

作业uri*

last-document

最后文件

printer-uri R R R R R

打印机uri R

Operation attributes-RECOMMENDED to be supplied by the sender

建议发件人提供的操作属性

job-name R R R

工作名称R

requesting-user- R R R R R name

正在请求用户-R名称

Printer Operations

打印机操作

Requests Responses

请求和响应

Operation Print- Pri Crea Get- Get- All Attributes Job, nt- te- Printer Jobs Opera-Vali- URI Job Attri- tions date-Job (O) (O) butes

操作打印-Pri Crea Get-Get-所有属性作业,nt-te-打印机作业Opera Vali-URI作业属性日期作业(O)(O)但是

Operation attributes-OPTIONAL to be supplied by the sender

发送方提供的操作属性可选

status-message O

状态信息O

compression O O

压缩氧

document-format R R O

文件格式

document-name O O

文件名O O

document-natural- O O language

文档自然语言

ipp-attribute- R R R fidelity

ipp属性-保真度

job-impressions O O O

工作印象

job-k-octets O O O

job-k-octets-O

job-media-sheets O O O

工作媒体单

limit R

极限R

message

消息

my-jobs R

我的工作

requested- R R attributes

请求的-R属性

which-jobs R

哪一份工作是R

* "job-id" is REQUIRED only if used together with "printer-uri" to identify the target job; otherwise, "job-uri" is REQUIRED.

* 仅当与“打印机uri”一起用于标识目标作业时,才需要“作业id”;否则,需要“作业uri”。

Table 2. Summary of operation attributes for Job operations

表2。作业操作的操作属性摘要

Requests Responses

请求和响应

Operation Send- Send- Cancel Get- All Attributes Document URI -Job Job- Opera-(O) (O) Attri- tions butes

操作发送-发送-取消获取-所有属性文档URI-作业作业-操作-(O)(O)属性但是

Operation parameters--REQUIRED to be supplied by the sender

操作参数——需要由发送方提供

operation-id R R R R

操作id R

status-code R

状态代码R

request-id R R R R R

请求id R

version-number R R R R R

版本号R

Operation attributes-REQUIRED to be supplied by the sender

发送方需要提供的操作属性

attributes- R R R R R charset

属性-R字符集

attributes- R R R R R natural-language

属性-自然语言

document-uri R

文档uri R

job-id* R R R R

作业id*R

job-uri* R R R R

作业uri*R

last-document R R

最后文件

printer-uri R R R R

打印机uri R

Operation attributes-RECOMMENDED to be supplied by the sender

建议发件人提供的操作属性

job-name

职务名称

requesting-user- R R R R name

正在请求用户-R名称

Job Operations

作业操作

Requests Responses

请求和响应

Operation Attributes Send- Send- Cance Get- All Document URI l-Job Job- Opera-(O) (O) Attri- tions butes

操作属性Send-Send-Cance Get-All Document URI l-Job作业-Opera-(O)(O)属性butes

Operation attributes.OPTIONAL to be supplied by the sender

由发送方提供的操作属性。可选

status-message O

状态信息O

compression O O

压缩氧

document-format R R

文件格式

document-name O O

文件名O O

document-natural- O O language

文档自然语言

ipp-attribute-fidelity

属性保真度

job-impressions

工作印象

job-k-octets

job-k-octets

job-media-sheets

工作媒体单

limit

限度

message O

信息O

my-jobs

我的工作

requested-attributes R

请求的属性R

which-jobs

哪些工作

* "job-id" is REQUIRED only if used together with "printer-uri" to identify the target job; otherwise, "job-uri" is REQUIRED.

* 仅当与“打印机uri”一起用于标识目标作业时,才需要“作业id”;否则,需要“作业uri”。

2.2 Suggested Operation Processing Steps for IPP Objects
2.2 IPP对象的建议操作处理步骤

This section suggests the steps and error checks that an IPP object MAY perform when processing requests and returning responses. An IPP object MAY perform some or all of the error checks. However, some implementations MAY choose to be more forgiving than the error checks shown here, in order to be able to accept requests from non-conforming clients. Not performing all of these error checks is a so-called "forgiving" implementation. On the other hand, clients that successfully submit requests to IPP objects that do perform all the error checks will be more likely to be able to interoperate with other IPP object implementations. Thus an implementer of an IPP object needs to decide whether to be a "forgiving" or a "strict" implementation. Therefore, the error status codes returned may differ between implementations. Consequentially, client SHOULD NOT expect exactly the error code processing described in this section.

本节介绍IPP对象在处理请求和返回响应时可能执行的步骤和错误检查。IPP对象可以执行部分或全部错误检查。但是,有些实现可能会选择比此处显示的错误检查更宽容,以便能够接受来自不一致客户机的请求。不执行所有这些错误检查就是所谓的“宽恕”实现。另一方面,成功地向执行所有错误检查的IPP对象提交请求的客户端更有可能与其他IPP对象实现进行互操作。因此,IPP对象的实现者需要决定是“宽容”还是“严格”实现。因此,返回的错误状态代码可能在不同的实现中有所不同。因此,客户机不应该完全期待本节中描述的错误代码处理。

When an IPP object receives a request, the IPP object either accepts or rejects the request. In order to determine whether or not to accept or reject the request, the IPP object SHOULD execute the following steps. The order of the steps may be rearranged and/or combined, including making one or multiple passes over the request.

当IPP对象收到请求时,IPP对象接受或拒绝该请求。为了确定是否接受或拒绝请求,IPP对象应执行以下步骤。可以重新排列和/或组合步骤的顺序,包括对请求进行一次或多次传递。

A client MUST supply requests that would pass all of the error checks indicated here in order to be a conforming client. Therefore, a client SHOULD supply requests that are conforming, in order to avoid being rejected by some IPP object implementations and/or risking different semantics by different implementations of forgiving implementations. For example, a forgiving implementation that accepts multiple occurrences of the same attribute, rather than rejecting the request might use the first occurrences, while another might use the last occurrence. Thus such a non-conforming client would get different results from the two forgiving implementations.

为了成为合格的客户,客户必须提供通过此处所示所有错误检查的请求。因此,客户机应提供符合要求的请求,以避免被某些IPP对象实现拒绝和/或因原谅实现的不同实现而冒不同语义的风险。例如,接受同一属性多次出现而不是拒绝请求的宽容实现可能使用第一次出现,而另一个实现可能使用最后一次出现。因此,这样一个不一致的客户机将从两个宽容的实现中得到不同的结果。

In the following, processing continues step by step until a "RETURNS the xxx status code ." statement is encountered. Error returns are indicated by the verb: "REJECTS". Since clients have difficulty getting the status code before sending all of the document data in a Print-Job request, clients SHOULD use the Validate-Job operation before sending large documents to be printed, in order to validate whether the IPP Printer will accept the job or not.

在下文中,处理将逐步继续,直到遇到“返回xxx状态代码”语句。错误返回由动词“拒绝”表示。由于客户端在发送打印作业请求中的所有文档数据之前很难获取状态代码,因此客户端应在发送要打印的大型文档之前使用“验证作业”操作,以验证IPP打印机是否接受作业。

It is assumed that security authentication and authorization has already taken place at a lower layer.

假设安全认证和授权已经在较低的一层进行。

2.2.1 Suggested Operation Processing Steps for all Operations
2.2.1 所有操作的建议操作处理步骤

This section is intended to apply to all operations. The next section contains the additional steps for the Print-Job, Validate-Job, Print-URI, Create-Job, Send-Document, and Send-URI operations that create jobs, adds documents, and validates jobs.

本节适用于所有操作。下一节包含打印作业、验证作业、打印URI、创建作业、发送文档和发送URI操作的附加步骤,这些操作用于创建作业、添加文档和验证作业。

2.2.1.1 Validate version number
2.2.1.1 验证版本号

Every request and every response contains the "version-number" attribute. The value of this attribute is the major and minor version number of the syntax and semantics that the client and IPP object is using, respectively. The "version-number" attribute remains in a fixed position across all future versions so that all clients and IPP object that support future versions can determine which version is being used. The IPP object checks to see if the major version number supplied in the request is supported. If not, the Printer object REJECTS the request and RETURNS the 'server-error-version-not-supported' status code in the response. The IPP object returns in the "version-number" response attribute the major and minor version for the error response. Thus the client can learn at least one major and minor version that the IPP object supports. The IPP object is encouraged to return the closest version number to the one supplied by the client.

每个请求和每个响应都包含“版本号”属性。该属性的值是客户端和IPP对象分别使用的语法和语义的主要版本号和次要版本号。“版本号”属性在所有未来版本中保持固定位置,以便所有支持未来版本的客户端和IPP对象都可以确定正在使用的版本。IPP对象检查请求中提供的主版本号是否受支持。如果不支持,打印机对象将拒绝请求,并在响应中返回“服务器错误版本不支持”状态代码。IPP对象在“版本号”响应属性中返回错误响应的主要版本和次要版本。因此,客户机可以了解IPP对象支持的至少一个主要和次要版本。建议IPP对象返回与客户端提供的版本号最接近的版本号。

The checking of the minor version number is implementation dependent, however if the client supplied minor version is explicitly supported, the IPP object MUST respond using that identical minor version number. If the requested minor version is not supported (the requested minor version is either higher or lower) than a supported minor version, the IPP object SHOULD return the closest supported minor version.

次要版本号的检查取决于实现,但是如果明确支持客户端提供的次要版本,则IPP对象必须使用相同的次要版本号进行响应。如果请求的次要版本不受支持(请求的次要版本高于或低于受支持的次要版本),IPP对象应返回最接近的受支持次要版本。

2.2.1.2 Validate operation identifier
2.2.1.2 验证操作标识符

The Printer object checks to see if the "operation-id" attribute supplied by the client is supported as indicated in the Printer object's "operations-supported" attribute. If not, the Printer REJECTS the request and returns the 'server-error-operation-not-supported' status code in the response.

打印机对象检查客户端提供的“操作id”属性是否受支持,如打印机对象的“支持的操作”属性所示。否则,打印机将拒绝请求并在响应中返回“服务器错误操作不受支持”状态代码。

2.2.1.3 Validate the request identifier
2.2.1.3 验证请求标识符

The Printer object SHOULD NOT check to see if the "request-id" attribute supplied by the client is in range: between 1 and 2**31 - 1 (inclusive), but copies all 32 bits.

打印机对象不应检查客户端提供的“请求id”属性是否在范围内:1到2**31-1(包括1),而是复制所有32位。

Note: The "version-number", "operation-id", and the "request-id" parameters are in fixed octet positions in the IPP/1.0 encoding. The "version-number" parameter will be the same fixed octet position in all versions of the protocol. These fields are validated before proceeding with the rest of the validation.

注:“版本号”、“操作id”和“请求id”参数在IPP/1.0编码中处于固定的八位字节位置。“版本号”参数在所有版本的协议中都是相同的固定八位字节位置。这些字段将在继续进行其余验证之前进行验证。

2.2.1.4 Validate attribute group and attribute presence and order
2.2.1.4 验证属性组和属性的存在和顺序

The order of the following validation steps depends on implementation.

以下验证步骤的顺序取决于实现。

2.2.1.4.1 Validate the presence and order of attribute groups
2.2.1.4.1 验证属性组的存在和顺序

Client requests and IPP object responses contain attribute groups that Section 3 requires to be present and in a specified order. An IPP object verifies that the attribute groups are present and in the correct order in requests supplied by clients (attribute groups without an * in the following tables).

客户端请求和IPP对象响应包含第3节要求以指定顺序出现的属性组。IPP对象验证属性组是否存在,以及在客户端提供的请求中的顺序是否正确(下表中没有*的属性组)。

If an IPP object receives a request with (1) required attribute groups missing, or (2) the attributes groups are out of order, or (3) the groups are repeated, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' status code. For example, it is an error for the Job Template Attributes group to occur before the Operation Attributes group, for the Operation Attributes group to be omitted, or for an attribute group to occur more than once, except in the Get-Jobs response.

如果IPP对象收到的请求(1)缺少必需的属性组,或(2)属性组出现故障,或(3)组重复,IPP对象将拒绝该请求并返回“客户端错误错误请求”状态代码。例如,作业模板属性组出现在操作属性组之前、省略操作属性组或属性组出现多次(Get Jobs响应中除外)都是错误的。

Since this kind of attribute group error is most likely to be an error detected by a client developer rather than by a customer, the IPP object NEED NOT return an indication of which attribute group was in error in either the Unsupported Attributes group or the Status Message. Also, the IPP object NEED NOT find all attribute group errors before returning this error.

由于此类属性组错误很可能是由客户端开发人员而不是客户检测到的错误,因此IPP对象无需返回不受支持的属性组或状态消息中哪个属性组出错的指示。此外,IPP对象在返回此错误之前不需要查找所有属性组错误。

2.2.1.4.2 Ignore unknown attribute groups in the expected position
2.2.1.4.2 忽略预期位置中的未知属性组

Future attribute groups may be added to the specification at the end of requests just before the Document Content and at the end of response, except for the Get-Jobs response, where it maybe there or before the first job attributes returned. If an IPP object receives an unknown attribute group in these positions, it ignores the entire group, rather than returning an error, since that group may be a new group in a later minor version of the protocol that can be ignored. (If the new attribute group cannot be ignored without confusing the client, the major version number would have been increased in the

未来的属性组可能会在文档内容之前的请求结束时和响应结束时添加到规范中,但Get Jobs响应除外,它可能在那里或在返回第一个作业属性之前。如果IPP对象在这些位置接收到未知属性组,它将忽略整个组,而不是返回错误,因为该组可能是协议较新次要版本中可以忽略的新组。(如果在不混淆客户机的情况下无法忽略新属性组,则主版本号将在

protocol document and in the request). If the unknown group occurs in a different position, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' status code.

协议文件和请求中的)。如果未知组出现在不同位置,IPP对象将拒绝请求并返回“客户端错误错误请求”状态代码。

Clients also ignore unknown attribute groups returned in a response.

客户端还忽略响应中返回的未知属性组。

Note: By validating that requests are in the proper form, IPP objects force clients to use the proper form which, in turn, increases the chances that customers will be able to use such clients from multiple vendors with IPP objects from other vendors.

注意:通过验证请求的格式是否正确,IPP对象将强制客户端使用正确的格式,这反过来又增加了客户使用多个供应商的此类客户端和其他供应商的IPP对象的机会。

2.2.1.4.3 Validate the presence of a single occurrence of required Operation attributes

2.2.1.4.3 验证是否存在所需操作属性的单一匹配项

Client requests and IPP object responses contain Operation attributes that [RFC2566] Section 3 requires to be present. Attributes within a group may be in any order, except for the ordering of target, charset, and natural languages attributes. These attributes MUST be first, and MUST be supplied in the following order: charset, natural language, and then target. An IPP object verifies that the attributes that Section 4 requires to be supplied by the client have been supplied in the request (attributes without an * in the following tables). An asterisk (*) indicates groups and Operation attributes that the client may omit in a request or an IPP object may omit in a response.

客户端请求和IPP对象响应包含[RFC2566]第3节要求存在的操作属性。组中的属性可以是任何顺序,但目标、字符集和自然语言属性的顺序除外。这些属性必须是第一个,并且必须按照以下顺序提供:字符集、自然语言,然后是目标。IPP对象验证第4节要求客户端提供的属性是否已在请求中提供(下表中没有*的属性)。星号(*)表示客户端可能在请求中忽略的组和操作属性,或IPP对象可能在响应中忽略的组和操作属性。

If an IPP object receives a request with required attributes missing or repeated from a group or in the wrong position, the behavior of the IPP object is IMPLEMENTATION DEPENDENT. Some of the possible implementations are:

如果IPP对象从组或错误位置接收到缺少或重复所需属性的请求,则IPP对象的行为取决于实现。一些可能的实施方式包括:

1.REJECTS the request and RETURNS the 'client-error-bad-request' status code

1.拒绝请求并返回“客户端错误错误请求”状态代码

2.accepts the request and uses the first occurrence of the attribute no matter where it is

2.接受请求并使用属性的第一个匹配项,无论它位于何处

3.accepts the request and uses the last occurrence of the attribute no matter where it is

3.接受请求并使用属性的最后一次出现,无论它在哪里

4.accept the request and assume some default value for the missing attribute

4.接受请求并为缺少的属性假定一些默认值

Therefore, client MUST send conforming requests, if they want to receive the same behavior from all IPP object implementations. For example, it is an error for the "attributes-charset" or "attributes-natural-language" attribute to be omitted in any operation request, or for an Operation attribute to be supplied in a Job Template group

因此,如果客户端希望从所有IPP对象实现接收相同的行为,则必须发送一致性请求。例如,在任何操作请求中省略“attributes charset”或“attributes natural language”属性,或者在作业模板组中提供操作属性,都是错误的

or a Job Template attribute to be supplied in an Operation Attribute group in a create request. It is also an error to supply the "attributes-charset" attribute twice.

或在创建请求的操作属性组中提供的作业模板属性。两次提供“attributes charset”属性也是错误的。

Since these kinds of attribute errors are most likely to be detected by a client developer rather than by a customer, the IPP object NEED NOT return an indication of which attribute was in error in either the Unsupported Attributes group or the Status Message. Also, the IPP object NEED NOT find all attribute errors before returning this error.

由于这些类型的属性错误最有可能由客户端开发人员而不是客户检测到,因此IPP对象不需要返回不受支持的属性组或状态消息中哪个属性出错的指示。此外,IPP对象在返回此错误之前不需要查找所有属性错误。

The following tables list all the attributes for all the operations by attribute group in each request and each response. The order of the groups is the order that the client supplies the groups as specified in [RFC2566] Section 3. The order of the attributes within a group is arbitrary, except as noted for some of the special operation attributes (charset, natural language, and target). The tables below use the following notation:

下表按属性组列出了每个请求和每个响应中所有操作的所有属性。组的顺序是指客户按照[RFC2566]第3节的规定提供组的顺序。组中属性的顺序是任意的,但某些特殊操作属性(字符集、自然语言和目标)除外。下表使用以下符号:

R indicates a REQUIRED attribute that an IPP object MUST support O indicates an OPTIONAL attribute that an IPP object NEED NOT support * indicates that a client MAY omit the attribute in a request and that an IPP object MAY omit the attribute in a response. The absence of an * means that a client MUST supply the attribute in a request and an IPP object MUST supply the attribute in a response.

R表示IPP对象必须支持的必需属性O表示IPP对象不需要支持的可选属性*表示客户端可以在请求中忽略该属性,而IPP对象可以在响应中忽略该属性。缺少*表示客户端必须在请求中提供属性,而IPP对象必须在响应中提供属性。

Operation Requests

操作请求

The tables below show the attributes in their proper attribute groups for operation requests:

下表显示了操作请求的相应属性组中的属性:

Note: All operation requests contain "version-number", "operation-id", and "request-id" parameters.

注意:所有操作请求都包含“版本号”、“操作id”和“请求id”参数。

Print-Job Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) printer-uri (R) requesting-user-name (R*) job-name (R*) ipp-attribute-fidelity (R*) document-name (R*) document-format (R*) document-natural-language (O*) compression (O*)

打印作业请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)打印机uri(R)请求用户名(R*)作业名称(R*)ipp属性保真度(R*)文档名称(R*)文档格式(R*)文档自然语言(O*)压缩(O*)

             job-k-octets (O*)
             job-impressions (O*)
             job-media-sheets (O*)
        Group 2: Job Template Attributes (R*)
             <Job Template attributes> (O*)
                  (see [RFC2566] Section 4.2)
        Group 3: Document Content (R)
             <document content>
        
             job-k-octets (O*)
             job-impressions (O*)
             job-media-sheets (O*)
        Group 2: Job Template Attributes (R*)
             <Job Template attributes> (O*)
                  (see [RFC2566] Section 4.2)
        Group 3: Document Content (R)
             <document content>
        

Validate-Job Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) printer-uri (R) requesting-user-name (R*) job-name (R*) ipp-attribute-fidelity (R*) document-name (R*) document-format (R*) document-natural-language (O*) compression (O*) job-k-octets (O*) job-impressions (O*) job-media-sheets (O*) Group 2: Job Template Attributes (R*) <Job Template attributes> (O*) (see [RFC2566] Section 4.2)

验证作业请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)打印机uri(R)请求用户名(R*)作业名称(R*)ipp属性保真度(R*)文档名称(R*)文档格式(R*)文档自然语言(O*)压缩(O*)作业k八位字节(O*)作业印象(O*)作业介质表(O*)第2组:作业模板属性(R*)<作业模板属性>(O*)(参见[RFC2566]第4.2节)

Create-Job Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) printer-uri (R) requesting-user-name (R*) job-name (R*) ipp-attribute-fidelity (R*) job-k-octets (O*) job-impressions (O*) job-media-sheets (O*) Group 2: Job Template Attributes (R*) <Job Template attributes> (O*) (see (see [RFC2566] Section 4.2)

创建作业请求:第1组:操作属性(R)属性字符集(R)属性自然语言(R)打印机uri(R)请求用户名(R*)作业名称(R*)ipp属性保真度(R*)作业k八位字节(O*)作业印象(O*)作业媒体表(O*)第2组:作业模板属性(R*)<作业模板属性>(O*)(请参见[RFC2566]第4.2节)

Print-URI Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) printer-uri (R)

打印URI请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)打印机URI(R)

document-uri (R) requesting-user-name (R*) job-name (R*) ipp-attribute-fidelity (R*) document-name (R*) document-format (R*) document-natural-language (O*) compression (O*) job-k-octets (O*) job-impressions (O*) job-media-sheets (O*) Group 2: Job Template Attributes (R*) <Job Template attributes> (O*) (see (see [RFC2566] Section 4.2)

文档uri(R)请求用户名(R*)作业名称(R*)ipp属性保真度(R*)文档名称(R*)文档格式(R*)文档自然语言(O*)压缩(O*)作业k八位组(O*)作业印象(O*)作业媒体表(O*)组2:作业模板属性(R*)<作业模板属性>(O*)(参见[RFC2566]第4.2节)

Send-Document Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) (printer-uri & job-id) | job-uri (R) last-document (R) requesting-user-name (R*) document-name (R*) document-format (R*) document-natural-language (O*) compression (O*) Group 2: Document Content (R*) <document content>

发送文档请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)(打印机uri和作业id)|作业uri(R)最后一个文档(R)请求用户名(R*)文档名称(R*)文档格式(R*)文档自然语言(O*)压缩(O*)组2:文档内容(R*)<文档内容>

Send-URI Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) (printer-uri & job-id) | job-uri (R) last-document (R) document-uri (R) requesting-user-name (R*) document-name (R*) document-format (R*) document-natural-language (O*) compression (O*)

发送URI请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)(打印机URI和作业id)|作业URI(R)最后一个文档(R)文档URI(R)请求用户名(R*)文档名(R*)文档格式(R*)文档自然语言(O*)压缩(O*)

Cancel-Job Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) (printer-uri & job-id) | job-uri (R) requesting-user-name (R*) message (O*)

取消作业请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)(打印机uri和作业id)|作业uri(R)请求用户名(R*)消息(O*)

Get-Printer-Attributes Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) printer-uri (R) requesting-user-name (R*) requested-attributes (R*) document-format (R*)

获取打印机属性请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)打印机uri(R)请求用户名(R*)请求的属性(R*)文档格式(R*)

Get-Job-Attributes Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) (printer-uri & job-id) | job-uri (R) requesting-user-name (R*) requested-attributes (R*)

获取作业属性请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)(打印机uri和作业id)|作业uri(R)请求用户名(R*)请求的属性(R*)

Get-Jobs Request: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) printer-uri (R) requesting-user-name (R*) limit (R*) requested-attributes (R*) which-jobs (R*) my-jobs (R*)

获取作业请求:组1:操作属性(R)属性字符集(R)属性自然语言(R)打印机uri(R)请求用户名(R*)限制(R*)请求的属性(R*)哪些作业(R*)我的作业(R*)

Operation Responses

操作响应

The tables below show the response attributes in their proper attribute groups for responses.

下表显示了响应的相应属性组中的响应属性。

Note: All operation responses contain "version-number", "status-code", and "request-id" parameters.

注意:所有操作响应都包含“版本号”、“状态代码”和“请求id”参数。

Print-Job Response: Print-URI Response: Create-Job Response:

打印作业响应:打印URI响应:创建作业响应:

Send-Document Response: Send-URI Response: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) status-message (O*) Group 2: Unsupported Attributes (R*) (see Note 3) <unsupported attributes> (R*) Group 3: Job Object Attributes(R*) (see Note 2) job-uri (R) job-id (R) job-state (R) job-state-reasons (O*) job-state-message (O*) number-of-intervening-jobs (O*)

发送文档响应:发送URI响应:第1组:操作属性(R)属性字符集(R)属性自然语言(R)状态消息(O*)第2组:不支持的属性(R*)(请参见备注3)<Unsupported Attributes>(R*)第3组:作业对象属性(R*)(请参见备注2)作业URI(R)作业id(R)作业状态(R)作业状态原因(O*)作业状态消息(O*)中间作业数(O*)

Validate-Job Response: Cancel-Job Response: Group 1: Operation Attributes (R) attributes-charset (R) attributes-natural-language (R) status-message (O*) Group 2: Unsupported Attributes (R*) (see Note 3) <unsupported attributes> (R*)

验证作业响应:取消作业响应:组1:操作属性(R)属性字符集(R)属性自然语言(R)状态消息(O*)组2:不支持的属性(R*)(请参见注释3)<Unsupported Attributes>(R*)

Note 2 - the Job Object Attributes and Printer Object Attributes are returned only if the IPP object returns one of the success status codes.

注2-仅当IPP对象返回一个成功状态代码时,才会返回作业对象属性和打印机对象属性。

Note 3 - the Unsupported Attributes Group is present only if the client included some Operation and/or Job Template attributes or values that the Printer doesn't support whether a success or an error return.

注意3-仅当客户端包含打印机不支持的某些操作和/或作业模板属性或值(无论返回成功还是错误),不支持的属性组才会出现。

   Get-Printer-Attributes Response:
        Group 1: Operation Attributes (R)
             attributes-charset (R)
             attributes-natural-language (R)
             status-message (O*)
        Group 2: Unsupported Attributes (R*) (see Note 4)
             <unsupported attributes> (R*)
        Group 3: Printer Object Attributes(R*) (see Note 2)
             <requested attributes> (R*)
        
   Get-Printer-Attributes Response:
        Group 1: Operation Attributes (R)
             attributes-charset (R)
             attributes-natural-language (R)
             status-message (O*)
        Group 2: Unsupported Attributes (R*) (see Note 4)
             <unsupported attributes> (R*)
        Group 3: Printer Object Attributes(R*) (see Note 2)
             <requested attributes> (R*)
        

Note 4 - the Unsupported Attributes Group is present only if the client included some Operation attributes that the Printer doesn't support whether a success or an error return.

注意4-仅当客户端包含打印机不支持的某些操作属性时,不支持的属性组才存在,无论返回成功还是错误。

   Get-Job-Attributes Response:
        Group 1: Operation Attributes (R)
             attributes-charset (R)
             attributes-natural-language (R)
             status-message (O*)
        Group 2: Unsupported Attributes (R*) (see Note 4)
             <unsupported attributes> (R*)
        Group 3: Job Object Attributes(R*) (see Note 2)
             <requested attributes> (R*)
        
   Get-Job-Attributes Response:
        Group 1: Operation Attributes (R)
             attributes-charset (R)
             attributes-natural-language (R)
             status-message (O*)
        Group 2: Unsupported Attributes (R*) (see Note 4)
             <unsupported attributes> (R*)
        Group 3: Job Object Attributes(R*) (see Note 2)
             <requested attributes> (R*)
        
   Get-Jobs Response:
        Group 1: Operation Attributes (R)
             attributes-charset (R)
             attributes-natural-language (R)
             status-message (O*)
        Group 2: Unsupported Attributes (R*) (see Note 4)
             <unsupported attributes> (R*)
        Group 3: Job Object Attributes(R*) (see Note 2, 5)
             <requested attributes> (R*)
        
   Get-Jobs Response:
        Group 1: Operation Attributes (R)
             attributes-charset (R)
             attributes-natural-language (R)
             status-message (O*)
        Group 2: Unsupported Attributes (R*) (see Note 4)
             <unsupported attributes> (R*)
        Group 3: Job Object Attributes(R*) (see Note 2, 5)
             <requested attributes> (R*)
        

Note 5: for the Get-Jobs operation the response contains a separate Job Object Attributes group 3 to N containing requested-attributes for each job object in the response.

注意5:对于Get Jobs操作,响应包含一个单独的作业对象属性组3到N,其中包含响应中每个作业对象的请求属性。

2.2.1.5 Validate the values of the REQUIRED Operation attributes
2.2.1.5 验证所需操作属性的值

An IPP object validates the values supplied by the client of the REQUIRED Operation attribute that the IPP object MUST support. The next section specifies the validation of the values of the OPTIONAL Operation attributes that IPP objects MAY support.

IPP对象验证客户端提供的IPP对象必须支持的必需操作属性的值。下一节指定IPP对象可能支持的可选操作属性值的验证。

The IPP object performs the following syntactic validation checks of each Operation attribute value:

IPP对象对每个操作属性值执行以下语法验证检查:

a)that the length of each Operation attribute value is correct for the attribute syntax tag supplied by the client according to [RFC2566] Section 4.1,

a) 根据[RFC2566]第4.1节,每个操作属性值的长度对于客户端提供的属性语法标记是正确的,

b)that the attribute syntax tag is correct for that Operation attribute according to [RFC2566] Section 3,

b) 根据[RFC2566]第3节,属性语法标记对于该操作属性是正确的,

c)that the value is in the range specified for that Operation attribute according to [RFC2566] Section 3,

c) 根据[RFC2566]第3节,该值在为该操作属性指定的范围内,

d)that multiple values are supplied by the client only for operation attributes that are multi-valued, i.e., that are 1setOf X according to [RFC2566] Section 3.

d) 客户机仅为多值操作属性提供多个值,即根据[RFC2566]第3节为1setOf X。

If any of these checks fail, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' or the 'client-error-request-value-too-long' status code. Since such an error is most likely to be an error detected by a client developer, rather than by an end-user, the IPP object NEED NOT return an indication of which attribute had the error in either the Unsupported Attributes Group or the

如果其中任何检查失败,IPP对象将拒绝请求并返回“客户端错误错误请求”或“客户端错误请求值过长”状态代码。由于此类错误很可能是由客户端开发人员而不是最终用户检测到的错误,因此IPP对象无需返回指示,说明在不受支持的属性组或

Status Message. The description for each of these syntactic checks is explicitly expressed in the first IF statement in the following table.

状态消息。下表中的第一个IF语句明确表示了这些语法检查的描述。

In addition, the IPP object checks each Operation attribute value against some Printer object attribute or some hard-coded value if there is no "xxx-supported" Printer object attribute defined. If its value is not among those supported or is not in the range supported, then the IPP object REJECTS the request and RETURNS the error status code indicated in the table by the second IF statement. If the value of the Printer object's "xxx-supported" attribute is 'no-value' (because the system administrator hasn't configured a value), the check always fails.

此外,如果没有定义“支持xxx”的打印机对象属性,IPP对象将根据某些打印机对象属性或某些硬编码值检查每个操作属性值。如果其值不在支持的范围内或不在支持的范围内,则IPP对象将拒绝请求并返回表中第二条If语句指示的错误状态代码。如果打印机对象的“支持xxx”属性的值为“无值”(因为系统管理员尚未配置值),则检查始终失败。

attributes-charset (charset)

属性字符集(字符集)

IF NOT a single non-empty 'charset' value, REJECT/RETURN 'client-error-bad-request'.

如果不是单个非空的“字符集”值,则拒绝/返回“客户端错误错误请求”。

IF the value length is greater than 63 octets, REJECT/RETURN ' client-error-request-value-too-long'. IF NOT in the Printer object's "charset-supported" attribute, REJECT/RETURN "client-error-charset-not-supported".

如果值长度大于63个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不在打印机对象的“支持的字符集”属性中,请拒绝/返回“不支持的客户端错误字符集”。

attributes-natural-language(naturalLanguage)

属性自然语言(自然语言)

IF NOT a single non-empty 'naturalLanguage' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 63 octets, REJECT/RETURN ' client-error-request-value-too-long'. ACCEPT the request even if not a member of the set in the Printer object's "generated-natural-language-supported" attribute. If the supplied value is not a member of the Printer object's "generated-natural-language-supported" attribute, use the Printer object's "natural-language-configured" value.

如果没有一个非空的“naturalLanguage”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于63个八位字节,则拒绝/返回“客户端错误请求值太长”。即使不是打印机对象“支持生成的自然语言”属性中的集合成员,也接受请求。如果提供的值不是打印机对象的“支持的生成的自然语言”属性的成员,请使用打印机对象的“已配置的自然语言”值。

requesting-user-name

请求用户名

IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF the IPP object can obtain a better authenticated name, use it instead.

如果没有单个“name”值,则拒绝/返回“client error bad request”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果IPP对象可以获得更好的身份验证名称,请改用它。

job-name(name)

工作名称(名称)

IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT supplied by the client, the Printer object creates a name from the document-name or document-uri.

如果没有单个“name”值,则拒绝/返回“client error bad request”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不是由客户机提供,打印机对象将根据文档名或文档uri创建名称。

document-name (name)

文件名(名称)

IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'.

如果没有单个“name”值,则拒绝/返回“client error bad request”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。

ipp-attribute-fidelity (boolean)

ipp属性保真度(布尔值)

IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is NOT equal to 1 octet, REJECT/RETURN ' client-error-request-value-too-long' IF NOT supplied by the client, the IPP object assumes the value 'false'.

如果没有单个“true”或单个“false”“boolean”值,则拒绝/返回“client error bad request”。如果值长度不等于1个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不是由客户端提供,IPP对象将假定值为“false”。

document-format (mimeMediaType)

文件格式(mimeMediaType)

IF NOT a single non-empty 'mimeMediaType' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT in the Printer object's "document-format-supported" attribute, REJECT/RETURN 'client-error-document-format-not-supported'

如果没有一个非空的'mimeMediaType'值,则拒绝/返回'client error bad request'。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不在打印机对象的“支持的文档格式”属性中,则拒绝/返回“不支持的客户端错误文档格式”

IF NOT supplied by the client, the IPP object assumes the value of the Printer object's "document-format-default" attribute.

如果不是由客户端提供,IPP对象将采用打印机对象的“文档格式默认值”属性的值。

document-uri (uri)

文档uri(uri)

IF NOT a single non-empty 'uri' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 1023 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF the URI syntax is not valid, REJECT/RETURN 'client-error-bad-request'. IF scheme is NOT in the Printer object's "reference-uri-schemes-supported" attribute, REJECT/RETURN 'client-error-uri-scheme-not-supported'. The Printer object MAY check to see if the document exists and is accessible. If the document is not found or is not accessible, REJECT/RETURN 'client-error-not found'.

如果没有单个非空的“uri”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于1023个八位字节,则拒绝/返回“客户端错误请求值太长”。如果URI语法无效,请拒绝/返回“客户端错误错误请求”。如果方案不在打印机对象的“支持的引用uri方案”属性中,请拒绝/返回“不支持的客户端错误uri方案”。打印机对象可能会检查文档是否存在并可访问。如果未找到或无法访问文档,请拒绝/返回“未找到客户端错误”。

last-document (boolean)

最后一个文档(布尔值)

IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is NOT equal to 1 octet, REJECT/RETURN ' client-error-request-value-too-long'

如果没有单个“true”或单个“false”“boolean”值,则拒绝/返回“client error bad request”。如果值长度不等于1个八位字节,则拒绝/返回“客户端错误请求值太长”

job-id (integer(1:MAX))

作业id(整数(1:最大值))

IF NOT an single 'integer' value equal to 4 octets AND in the range 1 to MAX, REJECT/RETURN 'client-error-bad-request'.

如果没有一个“整型”值等于4个八位字节且在1到最大范围内,则拒绝/返回“客户端错误错误请求”。

IF NOT a job-id of an existing Job object, REJECT/RETURN 'client-error-not-found' or 'client-error-gone' status code, if keep track of recently deleted jobs.

如果不是现有作业对象的作业id,请拒绝/返回“未找到客户端错误”或“客户端错误已消失”状态代码(如果跟踪最近删除的作业)。

requested-attributes (1setOf keyword)

请求的属性(1setOf关键字)

IF NOT one or more 'keyword' values, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. Ignore unsupported values which are the keyword names of unsupported attributes. Don't bother to copy such requested (unsupported) attributes to the Unsupported Attribute response group since the response will not return them.

如果没有一个或多个“关键字”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。忽略不支持的值,这些值是不支持的属性的关键字名称。不要费心将这些请求的(不支持的)属性复制到不支持的属性响应组,因为响应不会返回它们。

which-jobs (type2 keyword)

哪些作业(type2关键字)

IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NEITHER 'completed' NOR 'not-completed', copy the attribute and the unsupported value to the Unsupported Attributes response group and REJECT/RETURN 'client-error-attributes-or-values-not-supported'. Note: a Printer still supports the 'completed' value even if it keeps no completed/canceled/aborted jobs: by returning no jobs when so queried. IF NOT supplied by the client, the IPP object assumes the 'not-completed' value.

如果没有单个“关键字”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果“已完成”或“未完成”,请将属性和不支持的值复制到不支持的属性响应组,并拒绝/返回“客户端错误属性或不支持的值”。注意:打印机即使不保留任何已完成/取消/中止的作业,也仍然支持“已完成”值:查询时不返回任何作业。如果不是由客户端提供,IPP对象将采用“未完成”值。

my-jobs (boolean)

我的工作(布尔值)

IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is NOT equal to 1 octet, REJECT/RETURN ' client-error-request-value-too-long' IF NOT supplied by the client, the IPP object assumes the 'false' value.

如果没有单个“true”或单个“false”“boolean”值,则拒绝/返回“client error bad request”。如果值长度不等于1个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不是由客户端提供,IPP对象将采用“false”值。

limit (integer(1:MAX))

限制(整数(1:最大值))

IF NOT a single 'integer' value equal to 4 octets AND in the range 1 to MAX, REJECT/RETURN 'client-error-bad-request'. IF NOT supplied by the client, the IPP object returns all jobs, no matter how many.

如果没有一个“整型”值等于4个八位字节且在1到最大范围内,则拒绝/返回“客户端错误错误请求”。如果不是由客户机提供,IPP对象将返回所有作业,无论有多少个作业。

2.2.1.6 Validate the values of the OPTIONAL Operation attributes
2.2.1.6 验证可选操作属性的值

OPTIONAL Operation attributes are those that an IPP object MAY or MAY NOT support. An IPP object validates the values of the OPTIONAL attributes supplied by the client. The IPP object performs the same syntactic validation checks for each OPTIONAL attribute value as in Section 2.2.1.5. As in Section 2.2.1.5, if any fail, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' or the 'client-error-request-value-too-long' status code.

可选操作属性是IPP对象可能支持或不支持的属性。IPP对象验证客户端提供的可选属性的值。IPP对象对每个可选属性值执行与第2.2.1.5节相同的语法验证检查。如第2.2.1.5节所述,如果任何失败,IPP对象将拒绝请求并返回“客户端错误错误请求”或“客户端错误请求值过长”状态代码。

In addition, the IPP object checks each Operation attribute value against some Printer attribute or some hard-coded value if there is no "xxx-supported" Printer attribute defined. If its value is not among those supported or is not in the range supported, then the IPP

此外,如果没有定义“支持xxx”的打印机属性,IPP对象将根据某些打印机属性或某些硬编码值检查每个操作属性值。如果其值不在支持的范围内或不在支持的范围内,则IPP

object REJECTS the request and RETURNS the error status code indicated in the table. If the value of the Printer object's "xxx-supported" attribute is 'no-value' (because the system administrator hasn't configured a value), the check always fails.

对象拒绝请求并返回表中指示的错误状态代码。如果打印机对象的“支持xxx”属性的值为“无值”(因为系统管理员尚未配置值),则检查始终失败。

If the IPP object doesn't recognize/support an attribute, the IPP object treats the attribute as an unknown or unsupported attribute (see the last row in the table below).

如果IPP对象无法识别/支持某个属性,则IPP对象会将该属性视为未知或不受支持的属性(请参见下表中的最后一行)。

document-natural-language (naturalLanguage)

文档自然语言(自然语言)

IF NOT a single non-empty 'naturalLanguage' value, REJECT/RETURN ' client-error-bad-request'. IF the value length is greater than 63 octets, REJECT/RETURN ' client-error-request-value-too-long'. IF NOT a value that the Printer object supports in document formats, (no corresponding "xxx-supported" Printer attribute), REJECT/RETURN 'client-error-natural-language-not-supported'.

如果没有一个非空的“naturalLanguage”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于63个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不是打印机对象在文档格式中支持的值,(没有相应的“支持xxx”打印机属性),则拒绝/返回“不支持客户端错误自然语言”。

compression (type3 keyword)

压缩(type3关键字)

IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN ' client-error-request-value-too-long'. IF NOT in the Printer object's "compression-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group and REJECT/RETURN 'client-error-attributes-or-values-not-supported'.

如果没有单个“关键字”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不在打印机对象的“支持压缩”属性中,请将该属性和不支持的值复制到不支持的属性响应组,并拒绝/返回“客户端错误属性或不支持的值”。

job-k-octets (integer(0:MAX))

job-k-octets(整数(0:MAX))

IF NOT a single 'integer' value equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in the range of the Printer object's "job-k-octets-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group and REJECT/RETURN 'client-error-attributes-or-values-not-supported'.

如果没有一个“整型”值等于4个八位字节,则拒绝/返回“客户端错误错误请求”。如果不在打印机对象的“job-k-octets-supported”属性的范围内,请将该属性和不支持的值复制到不支持的属性响应组,并拒绝/返回“客户端错误属性或不支持的值”。

job-impressions (integer(0:MAX))

工作印象(整数(0:MAX))

IF NOT a single 'integer' value equal to 4 octets, REJECT/RETURN 'client-error-bad-request'.

如果没有一个“整型”值等于4个八位字节,则拒绝/返回“客户端错误错误请求”。

IF NOT in the range of the Printer object's "job-impressions-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group and REJECT/RETURN 'client-error-attributes-or-values-not-supported'.

如果不在打印机对象的“支持的作业印象”属性的范围内,请将该属性和不支持的值复制到不支持的属性响应组,并拒绝/返回“客户端错误属性或不支持的值”。

job-media-sheets (integer(0:MAX))

作业介质表(整数(0:MAX))

IF NOT a single 'integer' value equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in the range of the Printer object's "job-media-sheets-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group and REJECT/RETURN 'client-error-attributes-or-values-not-supported'.

如果没有一个“整型”值等于4个八位字节,则拒绝/返回“客户端错误错误请求”。如果不在打印机对象的“支持的作业介质表”属性的范围内,请将该属性和不支持的值复制到“不支持的属性”响应组,并拒绝/返回“客户端错误属性或不支持的值”。

message (text(127))

电文(文本(127))

IF NOT a single 'text' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 127 octets, REJECT/RETURN 'client-error-request-value-too-long'.

如果没有单个“文本”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于127个八位字节,则拒绝/返回“客户端错误请求值太长”。

unknown or unsupported attribute

未知或不支持的属性

IF the attribute syntax supplied by the client is supported but the length is not legal for that attribute syntax, REJECT/RETURN 'client-error-request-value-too-long'. ELSE copy the attribute and value to the Unsupported Attributes response group and change the attribute value to the "out-of-band" 'unsupported' value, but otherwise ignore the attribute.

如果支持客户端提供的属性语法,但该属性语法的长度不合法,请拒绝/返回“客户端错误请求值过长”。否则,将属性和值复制到不受支持的属性响应组,并将属性值更改为“带外”的“不受支持”值,否则忽略该属性。

Note: Future Operation attributes may be added to the protocol specification that may occur anywhere in the specified group. When the operation is otherwise successful, the IPP object returns the 'successful-ok-ignored-or-substituted-attributes' status code. Ignoring unsupported Operation attributes in all operations is analogous to the handling of unsupported Job Template attributes in the create and Validate-Job operations when the client supplies the "ipp-attribute-fidelity" Operation attribute with the 'false' value. This last rule is so that we can add OPTIONAL Operation attributes to future versions of IPP so that older clients can inter-work with new IPP objects and newer clients can inter-work with older IPP objects. (If the new attribute cannot be ignored without performing unexpectedly, the major version number would

注意:未来的操作属性可能会添加到协议规范中,该规范可能会出现在指定组中的任何位置。如果操作成功,IPP对象将返回“成功确定忽略或替换属性”状态代码。在所有操作中忽略不支持的操作属性类似于在客户端为“ipp属性保真度”操作属性提供“false”值时,在创建和验证作业操作中处理不支持的作业模板属性。最后一条规则是,我们可以将可选操作属性添加到IPP的未来版本中,以便旧客户端可以与新IPP对象交互,而新客户端可以与旧IPP对象交互。(如果在没有意外执行的情况下无法忽略新属性,则会忽略主版本号。)

have been increased in the protocol document and in the request). This rule for Operation attributes is independent of the value of the "ipp-attribute-fidelity" attribute. For example, if an IPP object doesn't support the OPTIONAL "job-k-octets" attribute', the IPP object treats "job-k-octets" as an unknown attribute and only checks the length for the 'integer' attribute syntax supplied by the client. If it is not four octets, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' status code, else the IPP object copies the attribute to the Unsupported Attribute response group, setting the value to the "out-of-band" ' unsupported' value, but otherwise ignores the attribute.

已在协议文件和请求中增加)。操作属性的此规则与“ipp属性保真度”属性的值无关。例如,如果IPP对象不支持可选的“job-k-octets”属性,则IPP对象将“job-k-octets”视为未知属性,并仅检查客户端提供的“integer”属性语法的长度。如果不是四个八位字节,IPP对象将拒绝请求并返回“客户端错误错误请求”状态代码,否则IPP对象将属性复制到不受支持的属性响应组,将该值设置为“带外”“不受支持”值,但会忽略该属性。

2.2.2 Suggested Additional Processing Steps for Operations that Create/Validate Jobs and Add Documents

2.2.2 为创建/验证作业和添加文档的操作建议的其他处理步骤

This section in combination with the previous section recommends the processing steps for the Print-Job, Validate-Job, Print-URI, Create-Job, Send-Document, and Send-URI operations that IPP objects SHOULD use. These are the operations that create jobs, validate a Print-Job request, and add documents to a job.

本节结合上一节介绍IPP对象应使用的打印作业、验证作业、打印URI、创建作业、发送文档和发送URI操作的处理步骤。这些操作用于创建作业、验证打印作业请求以及向作业添加文档。

2.2.2.1 Default "ipp-attribute-fidelity" if not supplied
2.2.2.1 如果未提供默认“ipp属性保真度”

The Printer object checks to see if the client supplied an "ipp-attribute-fidelity" Operation attribute. If the attribute is not supplied by the client, the IPP object assumes that the value is 'false'.

打印机对象检查客户端是否提供了“ipp属性保真度”操作属性。如果该属性不是由客户端提供的,IPP对象将假定该值为“false”。

2.2.2.2 Check that the Printer object is accepting jobs
2.2.2.2 检查打印机对象是否正在接受作业

If the value of the Printer object's "printer-is-accepting-jobs" is 'false', the Printer object REJECTS the request and RETURNS the 'server-error-not-accepting-jobs' status code.

如果打印机对象的“打印机正在接受作业”的值为“false”,则打印机对象将拒绝请求并返回“服务器错误不接受作业”状态代码。

2.2.2.3 Validate the values of the Job Template attributes
2.2.2.3 验证作业模板属性的值

An IPP object validates the values of all Job Template attribute supplied by the client. The IPP object performs the analogous syntactic validation checks of each Job Template attribute value that it performs for Operation attributes (see Section 2.2.1.5.):

IPP对象验证客户端提供的所有作业模板属性的值。IPP对象对其为操作属性执行的每个作业模板属性值执行类似的语法验证检查(见第2.2.1.5节):

a)that the length of each value is correct for the attribute syntax tag supplied by the client according to [RFC2566] Section 4.1.

a) 根据[RFC2566]第4.1节,每个值的长度对于客户端提供的属性语法标记是正确的。

b)that the attribute syntax tag is correct for that attribute according to [RFC2566] Sections 4.2 to 4.4.

b) 根据[RFC2566]第4.2至4.4节,属性语法标记对于该属性是正确的。

c)that multiple values are supplied only for multi-valued attributes, i.e., that are 1setOf X according to [RFC2566] Sections 4.2 to 4.4.

c) 仅为多值属性提供多个值,即根据[RFC2566]第4.2节至第4.4节的规定为1setOf X。

As in Section 2.2.1.5, if any of these syntactic checks fail, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' or 'client-error-request-value-too-long' status code as appropriate, independent of the value of the "ipp-attribute-fidelity". Since such an error is most likely to be an error detected by a client developer, rather than by an end-user, the IPP object NEED NOT return an indication of which attribute had the error in either the Unsupported Attributes Group or the Status Message. The description for each of these syntactic checks is explicitly expressed in the first IF statement in the following table.

如第2.2.1.5节所述,如果任何语法检查失败,IPP对象将拒绝请求并返回“客户端错误错误请求”或“客户端错误请求值过长”状态代码(视情况而定),与“IPP属性保真度”的值无关。由于此类错误很可能是由客户端开发人员而不是最终用户检测到的错误,因此IPP对象无需返回指示,说明在不受支持的属性组或状态消息中哪个属性存在错误。下表中的第一个IF语句明确表示了这些语法检查的描述。

Each Job Template attribute MUST occur no more than once. If an IPP Printer receives a create request with multiple occurrences of a Job Template attribute, it MAY:

每个作业模板属性只能出现一次。如果IPP打印机收到多次出现作业模板属性的创建请求,它可能:

1.reject the operation and return the 'client-error-bad syntax' error status code

1.拒绝操作并返回“客户端错误错误语法”错误状态代码

2.accept the operation and use the first occurrence of the attribute

2.接受该操作并使用该属性的第一个匹配项

3.accept the operation and use the last occurrence of the attribute

3.接受操作并使用属性的最后一次出现

depending on implementation. Therefore, clients MUST NOT supply multiple occurrences of the same Job Template attribute in the Job Attributes group in the request.

取决于实施情况。因此,客户端不能在请求的“作业属性”组中多次提供同一作业模板属性。

2.2.3 Algorithm for job validation
2.2.3 作业验证算法

The process of validating a Job-Template attribute "xxx" against a Printer attribute "xxx-supported" can use the following validation algorithm (see section 3.2.1.2 in [RFC2566]).

根据打印机属性“支持xxx”验证作业模板属性“xxx”的过程可以使用以下验证算法(参见[RFC2566]中的第3.2.1.2节)。

To validate the value U of Job-Template attribute "xxx" against the value V of Printer "xxx-supported", perform the following algorithm:

要根据打印机“支持xxx”的值V验证作业模板属性“xxx”的值U,请执行以下算法:

1.If U is multi-valued, validate each value X of U by performing the algorithm in Table 3 with each value X. Each validation is separate from the standpoint of returning unsupported values.

1.如果U是多值的,则通过使用每个值X执行表3中的算法来验证U的每个值X。从返回不支持的值的角度来看,每个验证是独立的。

Example: If U is "finishings" that the client supplies with 'staple', 'bind' values, then X takes on the successive values: 'staple', then 'bind'

示例:如果U是客户机提供的“装订”、“绑定”值的“finishings”,那么X将采用后续值:“装订”,然后是“绑定”

2.If V is multi-valued, validate X against each Z of V by performing the algorithm in Table 3 with each value Z. If a value Z validates, the validation for the attribute value X succeeds. If it fails, the algorithm is applied to the next value Z of V. If there are no more values Z of V, validation fails.

2.如果V是多值的,则通过对每个值Z执行表3中的算法,针对V的每个Z验证X。如果值Z验证,则属性值X的验证成功。如果失败,该算法将应用于V的下一个值Z。如果没有更多的值Z,验证将失败。

Example: If V is "sides-supported" with values: 'one-sided', 'two-sided-long', and 'two-sided-short', then Z takes on the successive values: 'one-sided', 'two-sided-long', and 'two-sided-short'. If the client supplies "sides" with 'two-sided-long', the first comparison fails ('one-sided' is not equal to 'two-sided-long'), the second comparison succeeds ('two-sided-long' is equal to 'two-sided-long"), and the third comparison ('two-sided-short' with 'two-sided-long') is not even performed.

示例:如果V为“支持的边”,值为:“单面”、“双面长”和“双面短”,则Z为连续值:“单面”、“双面长”和“双面短”。如果客户向“侧面”提供“双面长”,则第一次比较失败(“单面”不等于“双面长”),第二次比较成功(“双面长”等于“双面长”),第三次比较(“双面短”与“双面长”)甚至不执行。

3.If both U and V are single-valued, let X be U and Z be V and use the validation rules in Table 3.

3.如果U和V都是单值的,则设X为U,Z为V,并使用表3中的验证规则。

Table 3 - Rules for validating single values X against Z

表3-根据Z验证单个值X的规则

attribute attribute validated if: syntax of X syntax of Z

属性已验证if:X的语法Z的语法

integer rangeOfInteger X is within the range of Z

整数X的整数范围在Z的范围内

uri uriScheme the uri scheme in X is equal to Z

uri uri模式X中的uri模式等于Z

any boolean the value of Z is TRUE

Z值为真的任何布尔值

any any X and Z are of the same type and are equal.

任何X和Z都属于同一类型且相等。

If the value of the Printer object's "xxx-supported" attribute is ' no-value' (because the system administrator hasn't configured a value), the check always fails. If the check fails, the IPP object copies the attribute to the Unsupported Attributes response group with its unsupported value. If the attribute contains more than one value, each value is checked and each unsupported value is separately copied, while supported values are not copied. If an IPP object doesn't recognize/support a Job Template attribute, i.e., there is no corresponding Printer object "xxx-supported" attribute, the IPP object treats the attribute as an unknown or unsupported attribute (see the last row in the table below).

如果打印机对象的“支持xxx”属性的值为“无值”(因为系统管理员尚未配置值),则检查始终失败。如果检查失败,IPP对象会将该属性复制到具有其不支持的值的不支持的属性响应组。如果属性包含多个值,则会选中每个值,并分别复制每个不支持的值,而不会复制支持的值。如果IPP对象不识别/不支持作业模板属性,即没有相应的打印机对象“支持xxx”属性,则IPP对象会将该属性视为未知或不支持的属性(请参阅下表中的最后一行)。

If some Job Template attributes are supported for some document formats and not for others or the values are different for different document formats, the IPP object SHOULD take that into account in this validation using the value of the "document-format" supplied by the client (or defaulted to the value of the Printer's "document-format-default" attribute, if not supplied by the client). For example, if "number-up" is supported for the 'text/plain' document format, but not for the 'application/postscript' document format, the check SHOULD (though it NEED NOT) depend on the value of the "document-format" operation attribute. See "document-format" in [RFC2566] section 3.2.1.1 and 3.2.5.1.

如果某些文档格式支持某些作业模板属性,而其他文档格式不支持这些属性,或者不同文档格式的值不同,则IPP对象应使用客户端提供的“文档格式”值(或默认为打印机的“文档格式默认值”)在验证中考虑这些属性属性(如果不是由客户端提供)。例如,如果“text/plain”文档格式支持“number up”,但“application/postscript”文档格式不支持“number up”,则检查应(尽管不需要)取决于“document format”操作属性的值。参见[RFC2566]第3.2.1.1节和第3.2.5.1节中的“文件格式”。

Note: whether the request is accepted or rejected is determined by the value of the "ipp-attribute-fidelity" attribute in a subsequent step, so that all Job Template attribute supplied are examined and all unsupported attributes and/or values are copied to the Unsupported Attributes response group.

注意:接受还是拒绝请求取决于后续步骤中“ipp属性保真度”属性的值,以便检查提供的所有作业模板属性,并将所有不支持的属性和/或值复制到不支持的属性响应组。

job-priority (integer(1:100))

作业优先级(整数(1:100))

IF NOT a single 'integer' value with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT supplied by the client, use the value of the Printer object's "job-priority-default" attribute at job submission time. IF NOT in the range 1 to 100, inclusive, copy the attribute and the unsupported value to the Unsupported Attributes response group. Map the value to the nearest supported value in the range 1:100 as specified by the number of discrete values indicated by the value of the Printer's "job-priority-supported" attribute. See the formula in [RFC2566] Section 4.2.1.

如果不是长度等于4个八位字节的单个“整数值”,则拒绝/返回“客户端错误错误请求”。如果不是由客户端提供,请在作业提交时使用打印机对象的“作业优先级默认值”属性的值。如果不在1到100(包括1到100)的范围内,请将属性和不支持的值复制到不支持的属性响应组。将该值映射到1:100范围内最接近的支持值,该值由打印机“支持的作业优先级”属性的值指示的离散值数量指定。见[RFC2566]第4.2.1节中的公式。

job-hold-until (type3 keyword | name)

作业保留至(键入3关键字|名称)

IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT supplied by the client, use the value of the Printer object's "job-hold-until" attribute at job submission time. IF NOT in the Printer object's "job-hold-until-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果没有单个“关键字”或“名称”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不是由客户机提供,请在作业提交时使用打印机对象的“作业保留到”属性的值。如果不在打印机对象的“支持前保持作业”属性中,请将该属性和不支持的值复制到“不支持的属性”响应组。

job-sheets (type3 keyword | name)

工作表(type3关键字|名称)

IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT in the Printer object's "job-sheets-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果没有单个“关键字”或“名称”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不在打印机对象的“支持的工作表”属性中,请将该属性和不支持的值复制到“不支持的属性”响应组。

multiple-document-handling (type2 keyword)

多文档处理(type2关键字)

IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT in the Printer object's "multiple-document-handling-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果没有单个“关键字”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果不在打印机对象的“支持多文档处理”属性中,请将该属性和不支持的值复制到“不支持的属性”响应组。

copies (integer(1:MAX))

副本(整数(1:最大值))

IF NOT a single 'integer' value with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in range of the Printer object's "copies-supported" attribute copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果不是长度等于4个八位字节的单个“整数值”,则拒绝/返回“客户端错误错误请求”。如果不在打印机对象的“支持的副本”属性的范围内,请将该属性和不支持的值复制到不支持的属性响应组。

finishings (1setOf type2 enum)

饰面(第1种类型2枚举)

IF NOT an 'enum' value(s) each with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in the Printer object's "finishings-supported" attribute, copy the attribute and the unsupported value(s), but not any supported values, to the Unsupported Attributes response group.

如果不是长度等于4个八位字节的“枚举”值,则拒绝/返回“客户端错误错误请求”。如果打印机对象的“finishings supported”属性不在其中,请将该属性和不支持的值(但不是任何支持的值)复制到不支持的属性响应组。

page-ranges (1setOf rangeOfInteger(1:MAX))

页面范围(1整合器的设置范围(1:最大))

IF NOT a 'rangeOfInteger' value(s) each with a length equal to 8 octets, REJECT/RETURN 'client-error-bad-request'. IF first value is greater than second value in any range, the ranges are not in ascending order, or ranges overlap, REJECT/RETURN 'client-error-bad-request'. IF the value of the Printer object's "page-ranges-supported" attribute is 'false', copy the attribute to the Unsupported Attributes response group and set the value to the "out-of-band" 'unsupported' value.

如果不是长度等于8个八位字节的“rangeOfInteger”值,则拒绝/返回“客户端错误错误请求”。如果任何范围内的第一个值大于第二个值,则范围不按升序排列,或范围重叠,请拒绝/返回“客户端错误错误请求”。如果打印机对象的“支持的页面范围”属性的值为“false”,请将该属性复制到“不支持的属性”响应组,并将该值设置为“带外”的“不支持的”值。

sides (type2 keyword)

侧面(type2关键字)

IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT in the Printer object's "sides-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果没有单个“关键字”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果打印机对象的“支持的边”属性中没有,请将该属性和不支持的值复制到“不支持的属性”响应组。

number-up (integer(1:MAX))

向上计数(整数(1:最大值))

IF NOT a single 'integer' value with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT a value or in the range of one of the values of the Printer object's "number-up-supported" attribute, copy the attribute and value to the Unsupported Attribute response group.

如果不是长度等于4个八位字节的单个“整数值”,则拒绝/返回“客户端错误错误请求”。如果不是打印机对象“number up supported”属性的值或在其中一个值的范围内,请将该属性和值复制到不受支持的属性响应组。

orientation-requested (type2 enum)

要求的方向(类型2枚举)

IF NOT a single 'enum' value with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in the Printer object's "orientation-requested-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果没有一个长度等于4个八位字节的“enum”值,请拒绝/返回“client error bad request”。如果不在打印机对象的“支持的方向请求”属性中,请将该属性和不支持的值复制到不支持的属性响应组。

media (type3 keyword | name)

媒体(类型3关键字|名称)

IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client-error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT in the Printer object's "media-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果没有单个“关键字”或“名称”值,则拒绝/返回“客户端错误错误请求”。如果值长度大于255个八位字节,则拒绝/返回“客户端错误请求值太长”。如果打印机对象的“支持的介质”属性中没有,请将该属性和不支持的值复制到“不支持的属性”响应组。

printer-resolution (resolution)

打印机分辨率(分辨率)

IF NOT a single 'resolution' value with a length equal to 9 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in the Printer object's "printer-resolution-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果没有长度等于9个八位字节的单个“分辨率”值,则拒绝/返回“客户端错误错误请求”。如果不在打印机对象的“支持的打印机分辨率”属性中,请将该属性和不支持的值复制到不支持的属性响应组。

print-quality (type2 enum)

打印质量(类型2枚举)

IF NOT a single 'enum' value with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in the Printer object's "print-quality-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.

如果没有一个长度等于4个八位字节的“enum”值,请拒绝/返回“client error bad request”。如果不在打印机对象的“支持的打印质量”属性中,请将该属性和不支持的值复制到“不支持的属性”响应组。

unknown or unsupported attribute (i.e., there is no corresponding Printer object "xxx-supported" attribute)

未知或不受支持的属性(即,没有相应的打印机对象“支持xxx”属性)

IF the attribute syntax supplied by the client is supported but the length is not legal for that attribute syntax, REJECT/RETURN 'client-error-bad-request' if the length of the attribute syntax is fixed or 'client-error-request-value-too-long' if the length of the attribute syntax is variable. ELSE copy the attribute and value to the Unsupported Attributes response group and change the attribute value to the "out-of-band" 'unsupported' value. Any remaining Job Template Attributes are either unknown or unsupported Job Template attributes and are validated algorithmically according to their attribute syntax for proper length (see below).

如果支持客户端提供的属性语法,但该属性语法的长度不合法,则如果属性语法的长度固定,则拒绝/返回“客户端错误错误请求”,如果属性语法的长度可变,则拒绝/返回“客户端错误请求值太长”。否则,将属性和值复制到不支持的属性响应组,并将属性值更改为“带外”‘不支持’值。任何剩余的作业模板属性都是未知的或不受支持的作业模板属性,并根据其属性语法以适当的长度进行算法验证(见下文)。

If the attribute syntax is supported AND the length check fails, the IPP object REJECTS the request and RETURNS the ' client-error-bad-request' if the length of the attribute syntax is fixed or the 'client-error-request-value-too-long' status code if the length of the attribute syntax is variable. Otherwise, the IPP object copies the unsupported Job Template attribute to the Unsupported Attributes response group and changes the attribute value to the "out-of-band" 'unsupported' value. The following table shows the length checks for all attribute syntaxes. In the following table: "<=" means less than or equal, "=" means equal to:

如果支持属性语法且长度检查失败,则IPP对象将拒绝请求,并在属性语法的长度固定时返回“客户端错误错误请求”,或者在属性语法的长度可变时返回“客户端错误请求值过长”状态码。否则,IPP对象会将不受支持的作业模板属性复制到不受支持的属性响应组,并将属性值更改为“带外”的“不受支持”值。下表显示了所有属性语法的长度检查。在下表中:“<=”表示小于或等于,“=”表示等于:

   Name              Octet length check for read-write attributes
   -----------       --------------------------------------------
   'textWithLanguage    <= 1023 AND 'naturalLanguage'  <= 63
   'textWithoutLanguage' <= 1023
   'nameWithLanguage'    <= 255 AND 'naturalLanguage'  <= 63
   'nameWithoutLanguage' <= 255
   'keyword'             <= 255
   'enum'                = 4
   'uri'                 <= 1023
   'uriScheme'           <= 63
   'charset'             <= 63
   'naturalLanguage'     <= 63
   'mimeMediaType'       <= 255
        
   Name              Octet length check for read-write attributes
   -----------       --------------------------------------------
   'textWithLanguage    <= 1023 AND 'naturalLanguage'  <= 63
   'textWithoutLanguage' <= 1023
   'nameWithLanguage'    <= 255 AND 'naturalLanguage'  <= 63
   'nameWithoutLanguage' <= 255
   'keyword'             <= 255
   'enum'                = 4
   'uri'                 <= 1023
   'uriScheme'           <= 63
   'charset'             <= 63
   'naturalLanguage'     <= 63
   'mimeMediaType'       <= 255
        

'octetString' <= 1023 'boolean' = 1 'integer' = 4 'rangeOfInteger' = 8 'dateTime' = 11 'resolution' = 9 '1setOf X'

'octetString'<=1023'布尔'=1'整数'=4'整数范围'=8'日期时间'=11'分辨率'=9'1setOf X'

2.2.3.1 Check for conflicting Job Template attributes values
2.2.3.1 检查是否存在冲突的作业模板属性值

Once all the Operation and Job Template attributes have been checked individually, the Printer object SHOULD check for any conflicting values among all the supported values supplied by the client. For example, a Printer object might be able to staple and to print on transparencies, however due to physical stapling constraints, the Printer object might not be able to staple transparencies. The IPP object copies the supported attributes and their conflicting attribute values to the Unsupported Attributes response group. The Printer object only copies over those attributes that the Printer object either ignores or substitutes in order to resolve the conflict, and it returns the original values which were supplied by the client. For example suppose the client supplies "finishings" equals 'staple' and "media" equals 'transparency', but the Printer object does not support stapling transparencies. If the Printer chooses to ignore the stapling request in order to resolve the conflict, the Printer objects returns "finishings" equal to 'staple' in the Unsupported Attributes response group. If any attributes are multi-valued, only the conflicting values of the attributes are copied.

单独检查所有操作和作业模板属性后,打印机对象应检查客户端提供的所有支持值之间是否存在任何冲突值。例如,打印机对象可能能够装订和打印透明胶片,但是由于物理装订约束,打印机对象可能无法装订透明胶片。IPP对象将支持的属性及其冲突的属性值复制到不支持的属性响应组。打印机对象仅复制打印机对象为解决冲突而忽略或替换的属性,并返回客户端提供的原始值。例如,假设客户端提供的“finishings”等于“装订”,而“media”等于“透明度”,但打印机对象不支持装订透明胶片。如果打印机选择忽略装订请求以解决冲突,打印机对象将在不支持的属性响应组中返回等于“装订”的“finishings”。如果任何属性是多值的,则仅复制属性的冲突值。

Note: The decisions made to resolve the conflict (if there is a choice) is implementation dependent.

注意:解决冲突的决策(如果有选择)取决于实现。

2.2.3.2 Decide whether to REJECT the request
2.2.3.2 决定是否拒绝请求

If there were any unsupported Job Template attributes or unsupported/conflicting Job Template attribute values and the client supplied the "ipp-attribute-fidelity" attribute with the 'true' value, the Printer object REJECTS the request and return the status code:

如果存在任何不受支持的作业模板属性或不受支持/冲突的作业模板属性值,并且客户端为“ipp属性保真度”属性提供了“true”值,则打印机对象将拒绝请求并返回状态代码:

(1) 'client-error-conflicting-attributes' status code, if there were any conflicts between attributes supplied by the client. (2) 'client-error-attributes-or-values-not-supported' status code, otherwise.

(1) “客户端错误冲突属性”状态代码,如果客户端提供的属性之间存在任何冲突。(2) “不支持客户端错误属性或值”状态代码,否则为。

Note: Unsupported Operation attributes or values that are returned do not affect the status returned in this step. If the unsupported Operation attribute was a serious error, the above already rejected the request in a previous step. If control gets to this step with unsupported Operation attributes being returned, they are not serious errors.

注意:返回的不受支持的操作属性或值不会影响此步骤中返回的状态。如果不支持的操作属性是一个严重错误,则上述操作已在上一步中拒绝了该请求。如果控件执行此步骤时返回了不受支持的操作属性,则这些属性不是严重错误。

2.2.3.3 For the Validate-Job operation, RETURN one of the success status codes

2.2.3.3 对于验证作业操作,返回一个成功状态代码

If the requested operation is the Validate-Job operation, the Printer object returns:

如果请求的操作是验证作业操作,打印机对象将返回:

(1) the "successful-ok" status code, if there are no unsupported or conflicting Job Template attributes or values. (2) the "successful-ok-conflicting-attributes, if there are any conflicting Job Template attribute or values. (3) the "successful-ok-ignored-or-substituted-attributes, if there are only unsupported Job Template attributes or values.

(1) 如果没有不受支持或冲突的作业模板属性或值,“成功确定”状态代码。(2) 如果存在任何冲突的作业模板属性或值,则“成功确定”属性会发生冲突。(3)如果只有不支持的作业模板属性或值,则“成功确定”属性会被忽略或替换。

Note: Unsupported Operation attributes or values that are returned do not affect the status returned in this step. If the unsupported Operation attribute was a serious error, the above already rejected the request in a previous step. If control gets to this step with unsupported Operation attributes being returned, they are not serious errors.

注意:返回的不受支持的操作属性或值不会影响此步骤中返回的状态。如果不支持的操作属性是一个严重错误,则上述操作已在上一步中拒绝了该请求。如果控件执行此步骤时返回了不受支持的操作属性,则这些属性不是严重错误。

2.2.3.4 Create the Job object with attributes to support
2.2.3.4 创建具有要支持的属性的作业对象

If "ipp-attribute-fidelity" is set to 'false' (or it was not supplied by the client), the Printer object:

如果“ipp属性保真度”设置为“false”(或客户端未提供),打印机对象:

(1) creates a Job object, assigns a unique value to the job's "job-uri" and "job-id" attributes, and initializes all of the job's other supported Job Description attributes. (2) removes all unsupported attributes from the Job object. (3) for each unsupported value, removes either the unsupported value or substitutes the unsupported attribute value with some supported value. If an attribute has no values after removing unsupported values from it, the attribute is removed from the Job object (so that the normal default behavior at job processing time will take place for that attribute). (4) for each conflicting value, removes either the conflicting value or substitutes the conflicting attribute value with some other supported value. If an attribute has no values after removing conflicting values from it, the attribute is removed from the Job object (so that the normal default behavior at job processing time will take place for that attribute).

(1) 创建作业对象,为作业的“作业uri”和“作业id”属性指定唯一值,并初始化作业的所有其他受支持的作业描述属性。(2) 从作业对象中删除所有不受支持的属性。(3) 对于每个不受支持的值,删除不受支持的值或用某个受支持的值替换不受支持的属性值。如果从属性中删除不支持的值后该属性没有值,则该属性将从作业对象中删除(这样该属性将在作业处理时发生正常的默认行为)。(4) 对于每个冲突的值,删除冲突的值或用其他支持的值替换冲突的属性值。如果从属性中删除冲突值后该属性没有值,则该属性将从作业对象中删除(以便该属性在作业处理时发生正常的默认行为)。

If there were no attributes or values flagged as unsupported, or the value of 'ipp-attribute-fidelity" was 'false', the Printer object is able to accept the create request and create a new Job object. If the "ipp-attribute-fidelity" attribute is set to 'true', the Job Template attributes that populate the new Job object are necessarily all the Job Template attributes supplied in the create request. If the "ipp-attribute-fidelity" attribute is set to 'false', the Job Template attributes that populate the new Job object are all the client supplied Job Template attributes that are supported or that have value substitution. Thus, some of the requested Job Template attributes may not appear in the Job object because the Printer object did not support those attributes. The attributes that populate the Job object are persistently stored with the Job object for that Job. A Get-Job-Attributes operation on that Job object will return only those attributes that are persistently stored with the Job object.

如果没有标记为不受支持的属性或值,或者“ipp属性保真度”的值为“false”,则打印机对象能够接受创建请求并创建新作业对象。如果“ipp属性保真度”为属性设置为“true”,填充新作业对象的作业模板属性必须是创建请求中提供的所有作业模板属性。如果“ipp属性保真度”属性设置为“false”,则填充新作业对象的作业模板属性是所有受支持或具有值替换的客户端提供的作业模板属性。因此,某些请求的作业模板属性可能不会出现在作业对象中,因为打印机对象不支持这些属性。填充作业对象的属性将与该作业的作业对象一起永久存储。该作业对象上的“获取作业属性”操作将仅返回与作业对象一起持久存储的那些属性。

Note: All Job Template attributes that are persistently stored with the Job object are intended to be "override values"; that is, they that take precedence over whatever other embedded instructions might be in the document data itself. However, it is not possible for all Printer objects to realize the semantics of "override". End users may query the Printer's "pdl-override-supported" attribute to determine if the Printer either attempts or does not attempt to override document data instructions with IPP attributes.

注意:与作业对象一起持久存储的所有作业模板属性都是“覆盖值”;也就是说,它们优先于文档数据本身中的任何其他嵌入式指令。但是,并非所有打印机对象都能实现“覆盖”的语义。最终用户可以查询打印机的“支持pdl覆盖”属性,以确定打印机是否尝试使用IPP属性覆盖文档数据指令。

There are some cases, where a Printer supports a Job Template attribute and has an associated default value set for that attribute. In the case where a client does not supply the corresponding attribute, the Printer does not use its default values to populate Job attributes when creating the new Job object; only Job Template attributes actually in the create request are used to populate the Job object. The Printer's default values are only used later at Job processing time if no other IPP attribute or instruction embedded in the document data is present.

在某些情况下,打印机支持作业模板属性,并为该属性设置了关联的默认值。如果客户端不提供相应的属性,则打印机在创建新作业对象时不会使用其默认值填充作业属性;只有创建请求中实际存在的作业模板属性才用于填充作业对象。如果文档数据中不存在其他IPP属性或指令,则打印机的默认值仅在作业处理时使用。

Note: If the default values associated with Job Template attributes that the client did not supply were to be used to populate the Job object, then these values would become "override values" rather than defaults. If the Printer supports the 'attempted' value of the "pdl-override-supported" attribute, then these override values could replace values specified within the document data. This is not the intent of the default value mechanism. A default value for an attribute is used only if the create request did not specify that attribute (or it was ignored when allowed by "ipp-attribute-fidelity" being 'false') and no value was provided within the content of the document data.

注意:如果要使用与客户端未提供的作业模板属性关联的默认值来填充作业对象,则这些值将成为“覆盖值”,而不是默认值。如果打印机支持“pdl override supported”(pdl覆盖支持)属性的“尝试”值,则这些覆盖值可以替换文档数据中指定的值。这不是默认值机制的意图。仅当创建请求未指定某个属性(或当“ipp属性保真度”为“false”时被忽略)且文档数据内容中未提供任何值时,才使用该属性的默认值。

If the client does not supply a value for some Job Template attribute, and the Printer does not support that attribute, as far as IPP is concerned, the result of processing that Job (with respect to the missing attribute) is undefined.

如果客户端没有为某个作业模板属性提供值,并且打印机不支持该属性,则就IPP而言,处理该作业的结果(关于缺少的属性)是未定义的。

2.2.3.5 Return one of the success status codes
2.2.3.5 返回一个成功状态代码

Once the Job object has been created, the Printer object accepts the request and returns to the client:

创建作业对象后,打印机对象接受请求并返回到客户端:

(1) the 'successful-ok' status code, if there are no unsupported or conflicting Job Template attributes or values. (2) the 'successful-ok-conflicting-attributes' status code, if there are any conflicting Job Template attribute or values. (3) the 'successful-ok-ignored-or-substituted-attributes' status code, if there are only unsupported Job Template attributes or values.

(1) 如果没有不受支持或冲突的作业模板属性或值,“成功确定”状态代码。(2) 如果存在任何冲突的作业模板属性或值,“成功确定冲突属性”状态代码。(3) 如果只有不受支持的作业模板属性或值,则显示“成功确定忽略或替换属性”状态代码。

Note: Unsupported Operation attributes or values that are returned do not affect the status returned in this step. If the unsupported Operation attribute was a serious error, the above already rejected the request in a previous step. If control gets to this step with unsupported Operation attributes being returned, they are not serious errors.

注意:返回的不受支持的操作属性或值不会影响此步骤中返回的状态。如果不支持的操作属性是一个严重错误,则上述操作已在上一步中拒绝了该请求。如果控件执行此步骤时返回了不受支持的操作属性,则这些属性不是严重错误。

The Printer object also returns Job status attributes that indicate the initial state of the Job ('pending', 'pending-held', ' processing', etc.), etc. See Print-Job Response, [RFC2566] section 3.2.1.2.

打印机对象还返回指示作业初始状态的作业状态属性(“挂起”、“挂起”、“处理”等)。请参阅打印作业响应[RFC2566]第3.2.1.2节。

2.2.3.6 Accept appended Document Content
2.2.3.6 接受附加文档内容

The Printer object accepts the appended Document Content data and either starts it printing, or spools it for later processing.

Printer对象接受附加的文档内容数据并开始打印,或将其后台打印以供以后处理。

2.2.3.7 Scheduling and Starting to Process the Job
2.2.3.7 计划并开始处理作业

The Printer object uses its own configuration and implementation specific algorithms for scheduling the Job in the correct processing order. Once the Printer object begins processing the Job, the Printer changes the Job's state to 'processing'. If the Printer object supports PDL override (the "pdl-override-supported" attribute set to 'attempted'), the implementation does its best to see that IPP attributes take precedence over embedded instructions in the document data.

打印机对象使用其自己的配置和特定于实现的算法,以正确的处理顺序安排作业。打印机对象开始处理作业后,打印机会将作业的状态更改为“正在处理”。如果打印机对象支持PDL覆盖(“支持的PDL覆盖”属性设置为“已尝试”),则实现会尽力确保IPP属性优先于文档数据中的嵌入指令。

2.2.3.8 Completing the Job
2.2.3.8 完成工作

The Printer object continues to process the Job until it can move the Job into the 'completed' state. If an Cancel-Job operation is received, the implementation eventually moves the Job into the ' canceled' state. If the system encounters errors during processing that do not allow it to progress the Job into a completed state, the implementation halts all processing, cleans up any resources, and moves the Job into the 'aborted' state.

打印机对象将继续处理作业,直到可以将作业移动到“已完成”状态。如果收到取消作业操作,则实现最终会将作业移动到“已取消”状态。如果系统在处理过程中遇到错误,使其无法将作业推进到已完成状态,则实现将停止所有处理,清理所有资源,并将作业移动到“已中止”状态。

2.2.3.9 Destroying the Job after completion
2.2.3.9 完成后销毁作业

Once the Job moves to the 'completed', 'aborted', or 'canceled' state, it is an implementation decision as to when to destroy the Job object and release all associated resources. Once the Job has been destroyed, the Printer would return either the "client-error-not-found" or "client-error-gone" status codes for operations directed at that Job.

一旦作业移动到“已完成”、“已中止”或“已取消”状态,则何时销毁作业对象并释放所有相关资源是一个实现决策。一旦作业被销毁,打印机将返回针对该作业的操作的“未找到客户端错误”或“客户端错误已消失”状态代码。

Note: the Printer object SHOULD NOT re-use a "job-uri" or "job-id" value for a sufficiently long time after a job has been destroyed, so that stale references kept by clients are less likely to access the wrong (newer) job.

注意:在作业被销毁后,打印机对象不应在足够长的时间内重复使用“作业uri”或“作业id”值,以便客户端保留的陈旧引用不太可能访问错误(较新)的作业。

2.2.3.10 Interaction with "ipp-attribute-fidelity"
2.2.3.10 与“ipp属性保真度”的交互

Some Printer object implementations may support "ipp-attribute-fidelity" set to 'true' and "pdl-override-supported" set to ' attempted' and yet still not be able to realize exactly what the client specifies in the create request. This is due to legacy decisions and assumptions that have been made about the role of job instructions embedded within the document data and external job instructions that accompany the document data and how to handle conflicts between such instructions. The inability to be 100% precise about how a given implementation will behave is also compounded by the fact that the two special attributes, "ipp-attribute-fidelity" and "pdl-override-supported", apply to the whole job rather than specific values for each attribute. For example, some implementations may be able to override almost all Job Template attributes except for "number-up".

某些打印机对象实现可能支持将“ipp属性保真度”设置为“true”和将“支持的pdl覆盖”设置为“尝试”,但仍然无法准确实现客户端在创建请求中指定的内容。这是由于对文档数据中嵌入的作业指导书的角色和随文档数据而来的外部作业指导书以及如何处理这些指导书之间的冲突做出了遗留决策和假设。由于两个特殊属性“ipp属性保真度”和“支持的pdl覆盖”适用于整个作业,而不是每个属性的特定值,因此无法100%精确地描述给定实现的行为。例如,某些实现可能能够覆盖除“number up”之外的几乎所有作业模板属性。

2.3 Status codes returned by operation
2.3 操作返回的状态代码

This section lists all status codes once in the first operation (Print-Job). Then it lists the status codes that are different or specialized for subsequent operations under each operation.

本节列出了第一次操作(打印作业)中的所有状态代码。然后,它列出了每个操作下后续操作的不同或专用状态代码。

2.3.1 Printer Operations
2.3.1 打印机操作
2.3.1.1 Print-Job
2.3.1.1 打印作业

The Printer object MUST return one of the following "status-code" values for the indicated reason. Whether all of the document data has been accepted or not before returning the success or error response depends on implementation. See Section 14 for a more complete description of each status code.

出于指定的原因,打印机对象必须返回以下“状态代码”值之一。返回成功或错误响应之前是否接受了所有文档数据取决于实现。有关每个状态代码的更完整说明,请参见第14节。

For the following success status codes, the Job object has been created and the "job-id", and "job-uri" assigned and returned in the response:

对于以下成功状态代码,已创建作业对象,并在响应中分配和返回“作业id”和“作业uri”:

successful-ok: no request attributes were substituted or ignored. successful-ok-ignored-or-substituted-attributes: some supplied (1) attributes were ignored or (2) unsupported attribute syntaxes or values were substituted with supported values or were ignored. Unsupported attributes, attribute syntaxes, or values MUST be returned in the Unsupported Attributes group of the response. successful-ok-conflicting-attributes: some supplied attribute values conflicted with the values of other supplied attributes and were either substituted or ignored. Attributes or values which conflict with other attributes and have been substituted or ignored MUST be returned in the Unsupported Attributes group of the response as supplied by the client.

成功确定:未替换或忽略任何请求属性。成功确定忽略或替换属性:某些提供的(1)属性被忽略或(2)不支持的属性语法或值被支持的值替换或被忽略。不支持的属性、属性语法或值必须在响应的“不支持的属性”组中返回。成功确定冲突属性:某些提供的属性值与其他提供的属性值冲突,被替换或忽略。必须在客户端提供的响应的“不支持的属性”组中返回与其他属性冲突且已被替换或忽略的属性或值。

[RFC2566] section 3.1.6 Operation Status Codes and Messages states:

[RFC2566]第3.1.6节运行状态代码和消息说明:

If the Printer object supports the "status-message" operation attribute, it SHOULD use the REQUIRED 'utf-8' charset to return a status message for the following error status codes (see section 14): 'client-error-bad-request', 'client-error-charset-not-supported', 'server-error-internal-error', ' server-error-operation-not-supported', and 'server-error-version-not-supported'. In this case, it MUST set the value of the "attributes-charset" operation attribute to 'utf-8' in the error response.

如果打印机对象支持“status message”操作属性,则应使用所需的“utf-8”字符集为以下错误状态代码返回状态消息(请参阅第14节):“客户端错误错误错误请求”、“客户端错误字符集不受支持”、“服务器错误内部错误”、“服务器错误操作不受支持”,和“不支持服务器错误版本”。在这种情况下,它必须在错误响应中将“attributes charset”操作属性的值设置为“utf-8”。

For the following error status codes, no job is created and no "job-id" or "job-uri" is returned:

对于以下错误状态代码,不会创建作业,也不会返回“作业id”或“作业uri”:

client-error-bad-request: The request syntax does not conform to the specification.

客户端错误错误请求:请求语法不符合规范。

client-error-forbidden: The request is being refused for authorization or authentication reasons. The implementation security policy is to not reveal whether the failure is one of authentication or authorization. client-error-not-authenticated: Either the request requires authentication information to be supplied or the authentication information is not sufficient for authorization. client-error-not-authorized: The requester is not authorized to perform the request on the target object. client-error-not-possible: The request cannot be carried out because of the state of the system. See also 'server-error-not-accepting-jobs' status code which MUST take precedence if the Printer object's "printer-accepting-jobs" attribute is ' false'. client-error-timeout: not applicable. client-error-not-found: the target object does not exist. client-error-gone: the target object no longer exists and no forwarding address is known. client-error-request-entity-too-large: the size of the request and/or print data exceeds the capacity of the IPP Printer to process it. client-error-request-value-too-long: the size of request variable length attribute values, such as 'text' and 'name' attribute syntaxes, exceed the maximum length specified in [RFC2566] for the attribute and MUST be returned in the Unsupported Attributes Group. client-error-document-format-not-supported: the document format supplied is not supported. The "document-format" attribute with the unsupported value MUST be returned in the Unsupported Attributes Group. This error SHOULD take precedence over any other 'xxx-not-supported' error, except 'client-error-charset-not-supported'. client-error-attributes-or-values-not-supported: one or more supplied attributes, attribute syntaxes, or values are not supported and the client supplied the "ipp-attributes-fidelity" operation attribute with a 'true' value. They MUST be returned in the Unsupported Attributes Group as explained below. client-error-uri-scheme-not-supported: not applicable. client-error-charset-not-supported: the charset supplied in the "attributes-charset" operation attribute is not supported. The Printer's "configured-charset" MUST be returned in the response as the value of the "attributes-charset" operation attribute and used for any 'text' and 'name' attributes returned in the error response. This error SHOULD take precedence over any other error, unless the request syntax is so bad that the client's supplied "attributes-charset" cannot be determined.

禁止客户端错误:由于授权或身份验证原因,请求被拒绝。实现安全策略是不透露失败是身份验证还是授权。未验证的客户端错误:请求要求提供验证信息,或者验证信息不足以进行授权。客户端错误未授权:请求者无权对目标对象执行请求。客户端错误不可能:由于系统的状态,无法执行请求。另请参阅“服务器错误不接受作业”状态代码,如果打印机对象的“打印机接受作业”属性为“false”,则该状态代码必须优先。客户端错误超时:不适用。找不到客户端错误:目标对象不存在。客户端错误消失:目标对象不再存在,并且不知道转发地址。客户端错误请求实体太大:请求和/或打印数据的大小超过IPP打印机处理它的容量。客户端错误请求值太长:请求可变长度属性值(如“text”和“name”属性语法)的大小超过[RFC2566]中为属性指定的最大长度,必须在不支持的属性组中返回。不支持客户端错误文档格式:不支持提供的文档格式。必须在“不支持的属性”组中返回具有不支持值的“文档格式”属性。此错误应优先于任何其他“不支持xxx”错误,但“不支持客户端错误字符集”除外。不支持客户端错误属性或值:不支持一个或多个提供的属性、属性语法或值,并且客户端为“ipp属性保真度”操作属性提供了“true”值。它们必须在不支持的属性组中返回,如下所述。不支持客户端错误uri方案:不适用。不支持客户端错误字符集:“attributes charset”操作属性中提供的字符集不受支持。打印机的“配置字符集”必须在响应中作为“属性字符集”操作属性的值返回,并用于错误响应中返回的任何“文本”和“名称”属性。此错误应优先于任何其他错误,除非请求语法太差,无法确定客户端提供的“attributes charset”。

client-error-conflicting-attributes: one or more supplied attribute va attribute values conflicted with each other and the client supplied the "ipp-attributes-fidelity" operation attribute with a 'true' value. They MUST be returned in the Unsupported Attributes Group as explained below. server-error-internal-error: an unexpected condition prevents the request from being fulfilled. server-error-operation-not-supported: not applicable (since Print-Job is REQUIRED). server-error-service-unavailable: the service is temporarily overloaded. server-error-version-not-supported: the version in the request is not supported. The "closest" version number supported MUST be returned in the response. server-error-device-error: a device error occurred while receiving or spooling the request or document data or the IPP Printer object can only accept one job at a time. server-error-temporary-error: a temporary error such as a buffer full write error, a memory overflow, or a disk full condition occurred while receiving the request and/or the document data. server-error-not-accepting-jobs: the Printer object's "printer-is-not-accepting-jobs" attribute is 'false'. server-error-busy: the Printer is too busy processing jobs to accept another job at this time. server-error-job-canceled: the job has been canceled by an operator or the system while the client was transmitting the document data.

客户端错误冲突属性:一个或多个提供的属性va属性值相互冲突,并且客户端提供的“ipp属性保真度”操作属性具有“true”值。它们必须在不支持的属性组中返回,如下所述。服务器错误内部错误:意外情况阻止请求得到满足。不支持服务器错误操作:不适用(因为需要打印作业)。服务器错误服务不可用:服务暂时超载。不支持服务器错误版本:不支持请求中的版本。响应中必须返回支持的“最接近”版本号。服务器错误设备错误:接收或后台处理请求或文档数据时发生设备错误,或者IPP打印机对象一次只能接受一个作业。服务器错误临时错误:在接收请求和/或文档数据时发生临时错误,如缓冲区已满写入错误、内存溢出或磁盘已满。服务器错误不接受作业:打印机对象的“打印机不接受作业”属性为“false”。服务器错误忙:打印机正忙于处理作业,此时无法接受其他作业。服务器错误作业已取消:当客户端传输文档数据时,操作员或系统已取消作业。

2.3.1.2 Print-URI
2.3.1.2 打印URI

All of the Print-Job status codes described in Section 3.2.1.2 Print-Job Response are applicable to Print-URI with the following specializations and differences. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中描述的所有打印作业状态代码都适用于具有以下专门化和差异的打印URI。有关每个状态代码的更完整说明,请参见第14节。

server-error-uri-scheme-not-supported: the URI scheme supplied in the "document-uri" operation attribute is not supported and is returned in the Unsupported Attributes group.

不支持服务器错误uri方案:“文档uri”操作属性中提供的uri方案不受支持,并在不支持的属性组中返回。

2.3.1.3 Validate-Job
2.3.1.3 验证作业

All of the Print-Job status codes described in Section 3.2.1.2 Print-Job Response are applicable to Validate-Job. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中描述的所有打印作业状态代码均适用于验证作业。有关每个状态代码的更完整说明,请参见第14节。

2.3.1.4 Create-Job
2.3.1.4 创造就业机会

All of the Print-Job status codes described in Section 3.2.1.2 Print-Job Response are applicable to Create-Job with the following specializations and differences. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中描述的所有打印作业状态代码适用于创建具有以下专门化和差异的作业。有关每个状态代码的更完整说明,请参见第14节。

server-error-operation-not-supported: the Create-Job operation is not supported.

不支持服务器错误操作:不支持创建作业操作。

2.3.1.5 Get-Printer-Attributes
2.3.1.5 获取打印机属性

All of the Print-Job status codes described in Section 3.2.1.2 Print-Job Response are applicable to the Get-Printer-Attributes operation with the following specializations and differences. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中描述的所有打印作业状态代码适用于“获取打印机属性”操作,具有以下专门化和差异。有关每个状态代码的更完整说明,请参见第14节。

For the following success status codes, the requested attributes are returned in Group 3 in the response:

对于以下成功状态代码,请求的属性将在响应的组3中返回:

successful-ok: no request attributes were substituted or ignored (same as Print-Job) and no requested attributes were unsupported. successful-ok-ignored-or-substituted-attributes: same as Print-Job, except the "requested-attributes" operation attribute MAY, but NEED NOT, be returned with the unsupported values. successful-ok-conflicting-attributes: same as Print-Job.

成功确定:未替换或忽略任何请求属性(与打印作业相同),且不支持任何请求属性。成功确定忽略或替换的属性:与打印作业相同,但“请求的属性”操作属性可能返回,但不需要返回不支持的值。成功确定冲突属性:与打印作业相同。

For the error status codes, Group 3 is returned containing no attributes or is not returned at all:

对于错误状态代码,返回的组3不包含属性或根本不返回:

client-error-not-possible: Same as Print-Job, in addition the Printer object is not accepting any requests. client-error-request-entity-too-large: same as Print-job, except that no print data is involved. client-error-attributes-or-values-not-supported: not applicable, since unsupported operation attributes MUST be ignored and ' successful-ok-ignored-or-substituted-attributes' returned. client-error-conflicting-attributes: same as Print-Job, except that "ipp-attribute-fidelity" is not involved. server-error-operation-not-supported: not applicable (since Get-Printer-Attributes is REQUIRED). server-error-device-error: same as Print-Job, except that no document data is involved. server-error-temporary-error: same as Print-Job, except that no document data is involved. server-error-not-accepting-jobs: not applicable.

客户端错误不可能:与打印作业相同,此外打印机对象不接受任何请求。客户端错误请求实体太大:与打印作业相同,只是不涉及打印数据。客户端错误属性或值不受支持:不适用,因为必须忽略不受支持的操作属性,并返回“成功确定忽略或替换属性”。客户端错误冲突属性:与打印作业相同,只是不涉及“ipp属性保真度”。不支持服务器错误操作:不适用(因为需要获取打印机属性)。服务器错误设备错误:与打印作业相同,只是不涉及文档数据。服务器错误临时错误:与打印作业相同,只是不涉及文档数据。不接受作业时发生服务器错误:不适用。

server-error-busy: same as Print-Job, except the IPP object is too busy to accept even query requests. server-error-job-canceled: not applicable.

服务器错误忙:与打印作业相同,只是IPP对象太忙,甚至无法接受查询请求。服务器错误作业已取消:不适用。

2.3.1.6 Get-Jobs
2.3.1.6 找工作

All of the Print-Job status codes described in Section 3.2.1.2 Print-Job Response are applicable to the Get-Jobs operation with the following specializations and differences. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中描述的所有打印作业状态代码均适用于Get作业操作,具有以下专门化和差异。有关每个状态代码的更完整说明,请参见第14节。

For the following success status codes, the requested attributes are returned in Group 3 in the response:

对于以下成功状态代码,请求的属性将在响应的组3中返回:

successful-ok: no request attributes were substituted or ignored (same as Print-Job) and no requested attributes were unsupported. successful-ok-ignored-or-substituted-attributes: same as Print-Job, except the "requested-attributes" operation attribute MAY, but NEED NOT, be returned with the unsupported values. successful-ok-conflicting-attributes: same as Print-Job.

成功确定:未替换或忽略任何请求属性(与打印作业相同),且不支持任何请求属性。成功确定忽略或替换的属性:与打印作业相同,但“请求的属性”操作属性可能返回,但不需要返回不支持的值。成功确定冲突属性:与打印作业相同。

For any error status codes, Group 3 is returned containing no attributes or is not returned at all. The following brief error status code descriptions contain unique information for use with Get-Jobs operation. See section 14 for the other error status codes that apply uniformly to all operations:

对于任何错误状态代码,返回的组3不包含任何属性或根本不返回。以下简短的错误状态代码描述包含用于获取作业操作的唯一信息。有关统一适用于所有操作的其他错误状态代码,请参见第14节:

client-error-not-possible: Same as Print-Job, in addition the Printer object is not accepting any requests. client-error-request-entity-too-large: same as Print-job, except that no print data is involved. client-error-document-format-not-supported: not applicable. client-error-attributes-or-values-not-supported: not applicable, since unsupported operation attributes MUST be ignored and ' successful-ok-ignored-or-substituted-attributes' returned. client-error-conflicting-attributes: same as Print-Job, except that "ipp-attribute-fidelity" is not involved. server-error-operation-not-supported: not applicable (since Get-Jobs is REQUIRED). server-error-device-error: same as Print-Job, except that no document data is involved. server-error-temporary-error: same as Print-Job, except that no document data is involved. server-error-not-accepting-jobs: not applicable. server-error-job-canceled: not applicable.

客户端错误不可能:与打印作业相同,此外打印机对象不接受任何请求。客户端错误请求实体太大:与打印作业相同,只是不涉及打印数据。不支持客户端错误文档格式:不适用。客户端错误属性或值不受支持:不适用,因为必须忽略不受支持的操作属性,并返回“成功确定忽略或替换属性”。客户端错误冲突属性:与打印作业相同,只是不涉及“ipp属性保真度”。不支持服务器错误操作:不适用(因为需要获取作业)。服务器错误设备错误:与打印作业相同,只是不涉及文档数据。服务器错误临时错误:与打印作业相同,只是不涉及文档数据。不接受作业时发生服务器错误:不适用。服务器错误作业已取消:不适用。

2.3.2 Job Operations
2.3.2 作业操作
2.3.2.1 Send-Document
2.3.2.1 发送文件

All of the Print-Job status codes described in Section 3.2.1.2 Print-Job Response are applicable to the Get-Printer-Attributes operation with the following specializations and differences. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中描述的所有打印作业状态代码适用于“获取打印机属性”操作,具有以下专门化和差异。有关每个状态代码的更完整说明,请参见第14节。

For the following success status codes, the document has been added to the specified Job object and the job's "number-of-documents" attribute has been incremented:

对于以下成功状态代码,文档已添加到指定的作业对象,并且作业的“文档数”属性已递增:

successful-ok: no request attributes were substituted or ignored (same as Print-Job). successful-ok-ignored-or-substituted-attributes: same as Print-Job. successful-ok-conflicting-attributes: same as Print-Job.

成功确定:未替换或忽略任何请求属性(与打印作业相同)。成功确定忽略或替换属性:与打印作业相同。成功确定冲突属性:与打印作业相同。

For the error status codes, no document has been added to the Job object and the job's "number-of-documents" attribute has not been incremented:

对于错误状态代码,未向作业对象添加任何文档,且作业的“文档数”属性未增加:

client-error-not-possible: Same as Print-Job, except that the Printer's "printer-is-accepting-jobs" attribute is not involved, so that the client is able to finish submitting a multi-document job after this attribute has been set to 'true'. Another condition is that the state of the job precludes Send-Document, i.e., the job has already been closed out by the client. However, if the IPP Printer closed out the job due to timeout, the 'client-error-timeout' error status SHOULD be returned instead. client-error-timeout: This request was sent after the Printer closed the job, because it has not received a Send-Document or Send-URI operation within the Printer's "multiple-operation-time-out" period. client-error-request-entity-too-large: same as Print-Job. client-error-conflicting-attributes: same as Print-Job, except that "ipp-attributes-fidelity" operation attribute is not involved. server-error-operation-not-supported: the Send-Document request is not supported. server-error-not-accepting-jobs: not applicable. server-error-job-canceled: the job has been canceled by an operator or the system while the client was transmitting the data.

客户端错误不可能:与打印作业相同,只是不涉及打印机的“打印机正在接受作业”属性,因此在该属性设置为“true”后,客户端可以完成提交多文档作业。另一个条件是作业的状态阻止发送文档,即作业已被客户端关闭。但是,如果IPP打印机由于超时而关闭了作业,则应返回“客户端错误超时”错误状态。客户端错误超时:此请求是在打印机关闭作业后发送的,因为它在打印机的“多次操作超时”期间未收到发送文档或发送URI操作。客户端错误请求实体太大:与打印作业相同。客户端错误冲突属性:与打印作业相同,只是不涉及“ipp属性保真度”操作属性。不支持服务器错误操作:不支持发送文档请求。不接受作业时发生服务器错误:不适用。服务器错误作业已取消:在客户端传输数据时,操作员或系统已取消作业。

2.3.2.2 Send-URI
2.3.2.2 发送URI

All of the Print-Job status code descriptions in Section 3.2.1.2 Print-Job Response with the specializations described for Send-Document are applicable to Send-URI. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中的所有打印作业状态代码描述以及“发送文档”中描述的专门化都适用于发送URI。有关每个状态代码的更完整说明,请参见第14节。

server-error-uri-scheme-not-supported: the URI scheme supplied in the "document-uri" operation attribute is not supported and the "document-uri" attribute MUST be returned in the Unsupported Attributes group.

不支持服务器错误uri方案:不支持“文档uri”操作属性中提供的uri方案,必须在不支持的属性组中返回“文档uri”属性。

2.3.2.3 Cancel-Job
2.3.2.3 取消工作

All of the Print-Job status codes described in Section 3.2.1.2 Print-Job Response are applicable to Cancel-Job with the following specializations and differences. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中描述的所有打印作业状态代码适用于具有以下专门化和差异的取消作业。有关每个状态代码的更完整说明,请参见第14节。

For the following success status codes, the Job object is being canceled or has been canceled:

对于以下成功状态代码,作业对象正在被取消或已被取消:

successful-ok: no request attributes were substituted or ignored (same as Print-Job). successful-ok-ignored-or-substituted-attributes: same as Print-Job. successful-ok-conflicting-attributes: same as Print-Job.

成功确定:未替换或忽略任何请求属性(与打印作业相同)。成功确定忽略或替换属性:与打印作业相同。成功确定冲突属性:与打印作业相同。

For any of the error status codes, the Job object has not been canceled or was previously canceled.

对于任何错误状态代码,作业对象尚未取消或以前已取消。

client-error-not-possible: The request cannot be carried out because of the state of the Job object ('completed', ' canceled', or 'aborted') or the state of the system. client-error-not-found: the target Printer and/or Job object does not exist. client-error-gone: the target Printer and/or Job object no longer exists and no forwarding address is known. client-error-request-entity-too-large: same as Print-Job, except no document data is involved. client-error-document-format-not-supported: not applicable. client-error-attributes-or-values-not-supported: not applicable, since unsupported operation attributes and values MUST be ignored. client-error-conflicting-attributes: same as Print-Job, except that the Printer's "printer-is-accepting-jobs" attribute is not involved.

客户端错误不可能:由于作业对象的状态(“已完成”、“已取消”或“已中止”)或系统的状态,无法执行请求。找不到客户端错误:目标打印机和/或作业对象不存在。客户端错误消失:目标打印机和/或作业对象不再存在,并且不知道转发地址。客户端错误请求实体太大:与打印作业相同,只是不涉及文档数据。不支持客户端错误文档格式:不适用。不支持客户端错误属性或值:不适用,因为必须忽略不支持的操作属性和值。客户端错误冲突属性:与打印作业相同,只是不涉及打印机的“打印机正在接受作业”属性。

server-error-operation-not-supported: not applicable (Cancel-Job is REQUIRED). server-error-device-error: same as Print-Job, except no document data is involved. server-error-temporary-error: same as Print-Job, except no document data is involved. server-error-not-accepting-jobs: not applicable. server-error-job-canceled: not applicable.

不支持服务器错误操作:不适用(需要取消作业)。服务器错误设备错误:与打印作业相同,只是不涉及文档数据。服务器错误临时错误:与打印作业相同,只是不涉及文档数据。不接受作业时发生服务器错误:不适用。服务器错误作业已取消:不适用。

2.3.2.4 Get-Job-Attributes
2.3.2.4 获取作业属性

All of the Print-Job status codes described in Section 3.2.1.2 Print-Job Response are applicable to Get-Job-Attributes with the following specializations and differences. See Section 14 for a more complete description of each status code.

第3.2.1.2节“打印作业响应”中描述的所有打印作业状态代码适用于获取具有以下专门化和差异的作业属性。有关每个状态代码的更完整说明,请参见第14节。

For the following success status codes, the requested attributes are returned in Group 3 in the response:

对于以下成功状态代码,请求的属性将在响应的组3中返回:

successful-ok: no request attributes were substituted or ignored (same as Print-Job) and no requested attributes were unsupported. successful-ok-ignored-or-substituted-attributes: same as Print-Job, except the "requested-attributes" operation attribute MAY, but NEED NOT, be returned with the unsupported values. successful-ok-conflicting-attributes: same as Print-Job.

成功确定:未替换或忽略任何请求属性(与打印作业相同),且不支持任何请求属性。成功确定忽略或替换的属性:与打印作业相同,但“请求的属性”操作属性可能返回,但不需要返回不支持的值。成功确定冲突属性:与打印作业相同。

For the error status codes, Group 3 is returned containing no attributes or is not returned at all.

对于错误状态代码,返回的组3不包含属性或根本不返回。

client-error-not-possible: Same as Print-Job, in addition the Printer object is not accepting any requests. client-error-document-format-not-supported: not applicable. client-error-attributes-or-values-not-supported: not applicable. client-error-uri-scheme-not-supported: not applicable. client-error-conflicting-attributes: not applicable server-error-operation-not-supported: not applicable (since Get-Job-Attributes is REQUIRED). server-error-device-error: same as Print-Job, except no document data is involved. server-error-temporary-error: sane as Print-Job, except no document data is involved. server-error-not-accepting-jobs: not applicable. server-error-job-canceled: not applicable.

客户端错误不可能:与打印作业相同,此外打印机对象不接受任何请求。不支持客户端错误文档格式:不适用。不支持客户端错误属性或值:不适用。不支持客户端错误uri方案:不适用。客户端错误冲突属性:不适用服务器错误操作不受支持:不适用(因为需要获取作业属性)。服务器错误设备错误:与打印作业相同,只是不涉及文档数据。服务器错误临时错误:与打印作业相同,但不涉及任何文档数据。不接受作业时发生服务器错误:不适用。服务器错误作业已取消:不适用。

2.4 Validate-Job
2.4 验证作业

The Validate-Job operation has been designed so that its implementation may be a part of the Print-Job operation. Therefore, requiring Validate-Job is not a burden on implementers. Also it is useful for client's to be able to count on its presence in all conformance implementations, so that the client can determine before sending a long document, whether the job will be accepted by the IPP Printer or not.

验证作业操作的设计使其实现可能是打印作业操作的一部分。因此,要求验证作业不是实现者的负担。此外,客户能够在所有一致性实现中依赖其存在也是很有用的,这样客户可以在发送长文档之前确定作业是否会被IPP打印机接受。

2.5 Case Sensitivity in URIs
2.5 URI中的大小写敏感度

IPP client and server implementations must be aware of the diverse uppercase/lowercase nature of URIs. RFC 2396 defines URL schemes and Host names as case insensitive but reminds us that the rest of the URL may well demonstrate case sensitivity. When creating URL's for fields where the choice is completely arbitrary, it is probably best to select lower case. However, this cannot be guaranteed and implementations MUST NOT rely on any fields being case-sensitive or case-insensitive in the URL beyond the URL scheme and host name fields.

IPP客户端和服务器实现必须了解URI的不同大小写性质。RFC2396将URL方案和主机名定义为不区分大小写,但提醒我们URL的其余部分可能具有区分大小写的能力。当为完全任意选择的字段创建URL时,最好选择小写。但是,这是无法保证的,除了URL方案和主机名字段外,实现不得依赖URL中任何区分大小写或不区分大小写的字段。

The reason that the IPP specification does not make any restrictions on URIs, is so that implementations of IPP may use off-the-shelf components that conform to the standards that define URIs, such as RFC 2396 and the HTTP/1.1 specifications [RFC2068]. See these specifications for rules of matching, comparison, and case-sensitivity.

IPP规范对URI没有任何限制的原因是,IPP的实现可以使用符合定义URI的标准的现成组件,如RFC 2396和HTTP/1.1规范[RFC2068]。有关匹配、比较和区分大小写的规则,请参见这些规范。

It is also recommended that System Administrators and implementations avoid creating URLs for different printers that differ only in their case. For example, don't have Printer1 and printer1 as two different IPP Printers.

还建议系统管理员和实现避免为不同的打印机创建URL,这些打印机仅在其情况下有所不同。例如,不要将Printer1和Printer1作为两个不同的IPP打印机。

The HTTP/1.1 specification [RFC2068] contains more details on comparing URLs.

HTTP/1.1规范[RFC2068]包含有关比较URL的更多详细信息。

2.6 Character Sets, natural languages, and internationalization
2.6 字符集、自然语言和国际化

This section discusses character set support, natural language support and internationalization.

本节讨论字符集支持、自然语言支持和国际化。

2.6.1 Character set code conversion support
2.6.1 字符集代码转换支持

IPP clients and IPP objects are REQUIRED to support UTF-8. They MAY support additional charsets. It is RECOMMENDED that an IPP object also support US-ASCII, since many clients support US-ASCII, and indicate that UTF-8 and US-ASCII are supported by populating the

IPP客户端和IPP对象需要支持UTF-8。它们可能支持额外的字符集。建议IPP对象也支持US-ASCII,因为许多客户端支持US-ASCII,并通过填充

Printer's "charset-supported" with 'utf-8' and 'us-ascii' values. An IPP object is required to code covert with as little loss as possible between the charsets that it supports, as indicated in the Printer's "charsets-supported" attribute.

打印机的“支持字符集”,带有“utf-8”和“us ascii”值。IPP对象需要在其支持的字符集之间进行编码转换,并尽可能少地丢失,如打印机的“支持的字符集”属性所示。

How should the server handle the situation where the "attributes-charset" of the response itself is "us-ascii", but one or more attributes in that response is in the "utf-8" format?

服务器应该如何处理响应本身的“attributes charset”是“us ascii”,但该响应中的一个或多个属性是“utf-8”格式的情况?

Example: Consider a case where a client sends a Print-Job request with "utf-8" as the value of "attributes-charset" and with the "job-name" attribute supplied. Later another client submits a Get-Job-Attribute or Get-Jobs request. This second request contains the "attributes-charset" with value "us-ascii" and "requested-attributes" attribute with exactly one value "job-name".

示例:考虑一个客户端发送一个打印作业请求,其中“UTF-8”作为“属性字符集”的值,并提供“作业名”属性。稍后,另一个客户端提交Get Job属性或Get Jobs请求。第二个请求包含值为“us ascii”的“attributes charset”和值为“job name”的“requested attributes”属性。

According to the RFC2566 document (section 3.1.4.2), the value of the "attributes-charset" for the response of the second request must be "us-ascii" since that is the charset specified in the request. The "job-name" value, however, is in "utf-8" format. Should the request be rejected even though both "utf-8" and "us-ascii" charsets are supported by the server? or should the "job-name" value be converted to "us-ascii" and return "successful-ok-conflicting-attributes" (0x0002) as the status code?

根据RFC2566文件(第3.1.4.2节),第二个请求响应的“属性字符集”的值必须为“us ascii”,因为这是请求中指定的字符集。但是,“作业名称”值采用“utf-8”格式。即使服务器同时支持“utf-8”和“us ascii”字符集,请求是否应被拒绝?还是应该将“作业名称”值转换为“us ascii”并返回“成功确定冲突属性”(0x0002)作为状态代码?

Answer: An IPP object that supports both utf-8 (REQUIRED) and us-ascii, the second paragraph of section 3.1.4.2 applies so that the IPP object MUST accept the request, perform code set conversion between these two charsets with "the highest fidelity possible" and return 'successful-ok', rather than a warning 'successful-ok-conflicting-attributes, or an error. The printer will do the best it can to convert between each of the character sets that it supports-- even if that means providing a string of question marks because none of the characters are representable in US ASCII. If it can't perform such conversion, it MUST NOT advertise us-ascii as a value of its "attributes-charset-supported" and MUST reject any request that requests 'us-ascii'.

回答:支持utf-8(必需)和us ascii的IPP对象,第3.1.4.2节第二段适用,因此IPP对象必须接受请求,以“可能的最高保真度”在这两个字符集之间执行代码集转换,并返回“成功ok”,而不是警告“成功ok”,或者是一个错误。打印机将尽其所能在其支持的每个字符集之间进行转换,即使这意味着提供一个问号字符串,因为没有一个字符可以用美国ASCII表示。如果它不能执行这样的转换,它不能将us ascii作为其“支持的属性字符集”的值公布,并且必须拒绝任何请求“us ascii”的请求。

One IPP object implementation strategy is to convert all request text and name values to a Unicode internal representation. This is 16-bit and virtually universal. Then convert to the specified operation attributes-charset on output.

一种IPP对象实现策略是将所有请求文本和名称值转换为Unicode内部表示形式。这是16位的,几乎是通用的。然后在输出时转换为指定的操作属性字符集。

Also it would be smarter for a client to ask for 'utf-8', rather than 'us-ascii' and throw away characters that it doesn't understand, rather than depending on the code conversion of the IPP object.

此外,对于客户端来说,请求“utf-8”,而不是“us ascii”,并丢弃它不理解的字符,比依赖IPP对象的代码转换更为明智。

2.6.2 What charset to return when an unsupported charset is requested?
2.6.2 当请求不受支持的字符集时,返回哪个字符集?

Section 3.1.4.1 Request Operation attributes was clarified in November 1998 as follows:

第3.1.4.1节请求操作属性于1998年11月澄清如下:

All clients and IPP objects MUST support the 'utf-8' charset [RFC2044] and MAY support additional charsets provided that they are registered with IANA [IANA-CS]. If the Printer object does not support the client supplied charset value, the Printer object MUST reject the request, set the "attributes-charset" to 'utf-8' in the response, and return the 'client-error-charset-not-supported' status code and any 'text' or 'name' attributes using the 'utf-8' charset.

所有客户端和IPP对象必须支持“utf-8”字符集[RFC2044],并且可以支持其他字符集,前提是它们已在IANA[IANA-CS]注册。如果打印机对象不支持客户端提供的字符集值,则打印机对象必须拒绝请求,在响应中将“attributes charset”设置为“utf-8”,并使用“utf-8”字符集返回“client error charset not supported”(客户端错误字符集不受支持)状态代码以及任何“text”(文本)或“name”(名称)属性。

Since the client and IPP object MUST support UTF-8, returning any text or name attributes in UTF-8 when the client requests a charset that is not supported should allow the client to display the text or name.

由于客户端和IPP对象必须支持UTF-8,因此当客户端请求不受支持的字符集时,返回UTF-8中的任何文本或名称属性应允许客户端显示文本或名称。

Since such an error is a client error, rather than a user error, the client should check the status code first so that it can avoid displaying any other returned 'text' and 'name' attributes that are not in the charset requested.

由于此类错误是客户端错误,而不是用户错误,因此客户端应首先检查状态代码,以避免显示不在请求的字符集中的任何其他返回的“text”和“name”属性。

Furthermore, [RFC2566] section 14.1.4.14 client-error-charset-not-supported (0x040D) was clarified in November 1998 as follows:

此外,[RFC2566]第14.1.4.14节不支持客户端错误字符集(0x040D)于1998年11月澄清如下:

For any operation, if the IPP Printer does not support the charset supplied by the client in the "attributes-charset" operation attribute, the Printer MUST reject the operation and return this status and any 'text' or 'name' attributes using the 'utf-8' charset (see Section 3.1.4.1).

对于任何操作,如果IPP打印机不支持客户端在“属性字符集”操作属性中提供的字符集,则打印机必须拒绝该操作,并使用“utf-8”字符集返回该状态以及任何“文本”或“名称”属性(见第3.1.4.1节)。

2.6.3 Natural Language Override (NLO)
2.6.3 自然语言覆盖(NLO)

The 'text' and 'name' attributes each have two forms. One has an implicit natural language, and the other has an explicit natural language. The 'textWithoutLanguage' and 'textWithoutLanguage' are the two 'text' forms. The 'nameWithoutLanguage" and ' nameWithLanguage are the two 'name' forms. If a receiver (IPP object or IPP client) supports an attribute with attribute syntax 'text', it MUST support both forms in a request and a response. A sender (IPP client or IPP object) MAY send either form for any such attribute. When a sender sends a WithoutLanguage form, the implicit natural language is specified in the "attributes-natural-language" operation attribute which all senders MUST include in every request and response.

“text”和“name”属性都有两种形式。一种是隐式自然语言,另一种是显式自然语言。“textWithoutLanguage”和“textWithoutLanguage”是两种“文本”形式。“nameWithoutLanguage”和“nameWithLanguage”是两种“名称”形式。如果接收者(IPP对象或IPP客户端)支持属性语法为“text”的属性,则它必须在请求和响应中同时支持这两种形式。发送者(IPP客户端或IPP对象)可以为任何此类属性发送任一表单。当发送方发送WithoutLanguage表单时,隐式自然语言在“attributes natural language”操作属性中指定,所有发送方必须在每个请求和响应中包含该属性。

When a sender sends a WithLanguage form, it MAY be different from the implicit natural language supplied by the sender or it MAY be the same. The receiver MUST treat either form equivalently.

当发送方发送WithLanguage表单时,它可能与发送方提供的隐式自然语言不同,也可能相同。接收者必须同等对待任何一种形式。

There is an implementation decision for senders, whether to always send the WithLanguage forms or use the WithoutLanguage form when the attribute's natural language is the same as the request or response. The former approach makes the sender implementation simpler. The latter approach is more efficient on the wire and allows inter-working with non-conforming receivers that fail to support the WithLanguage forms. As each approach have advantages, the choice is completely up to the implementer of the sender.

发送者有一个实现决策,当属性的自然语言与请求或响应相同时,是始终发送WithLanguage表单还是使用WithoutLanguage表单。前一种方法使发送方实现更简单。后一种方法在线路上更有效,并允许与不支持WithLanguage表单的不一致接收器交互工作。由于每种方法都有优点,选择完全取决于发送方的实现者。

Furthermore, when a client receives a 'text' or 'name' job attribute that it had previously supplied, that client MUST NOT expect to see the attribute in the same form, i.e., in the same WithoutLanguage or WithLanguage form as the client supplied when it created the job. The IPP object is free to transform the attribute from the WithLanguage form to the WithoutLanguage form and vice versa, as long as the natural language is preserved. However, in order to meet this latter requirement, it is usually simpler for the IPP object implementation to store the natural language explicitly with the attribute value, i.e., to store using an internal representation that resembles the WithLanguage form.

此外,当客户机收到其先前提供的“文本”或“名称”作业属性时,该客户机不得期望看到与创建作业时提供的客户机格式相同的属性,即使用相同的WithoutLanguage或WithLanguage格式。IPP对象可以自由地将属性从WithLanguage形式转换为WithoutLanguage形式,反之亦然,只要保留了自然语言。然而,为了满足后一个要求,IPP对象实现通常更容易使用属性值显式存储自然语言,即使用类似于WithLanguage形式的内部表示进行存储。

The IPP Printer MUST copy the natural language of a job, i.e., the value of the "attributes-natural-language" operation attribute supplied by the client in the create operation, to the Job object as a Job Description attribute, so that a client is able to query it. In returning a Get-Job-Attributes response, the IPP object MAY return one of three natural language values in the response's "attributes-natural-language" operation attribute: (1) that requested by the requester, (2) the natural language of the job, or (3) the configured natural language of the IPP Printer, if the requested language is not supported by the IPP Printer.

IPP打印机必须将作业的自然语言(即客户端在创建操作中提供的“attributes natural language”操作属性的值)作为作业描述属性复制到作业对象,以便客户端能够查询它。在返回Get Job Attributes响应时,IPP对象可能会返回响应的“Attributes natural language”操作属性中的三个自然语言值之一:(1)请求者请求的值,(2)作业的自然语言,或(3)IPP打印机配置的自然语言,如果IPP打印机不支持请求的语言。

This "attributes-natural-language" Job Description attribute is useful for an IPP object implementation that prints start sheets in the language of the user who submitted the job. This same Job Description attribute is useful to a multi-lingual operator who has to communicate with different job submitters in different natural languages. This same Job Description attribute is expected to be used in the future to generate notification messages in the natural language of the job submitter.

此“attributes natural language”作业描述属性对于IPP对象实现非常有用,IPP对象以提交作业的用户的语言打印起始页。对于必须用不同自然语言与不同的工作提交人交流的多语言操作员来说,相同的工作描述属性非常有用。这个相同的职务描述属性预计将在将来用于以职务提交者的自然语言生成通知消息。

Early drafts of [RFC2566] contained a job-level natural language override (NLO) for the Get-Jobs response. A job-level (NLO) is an (unrequested) Job Attribute which then specified the implicit natural

[RFC2566]的早期草案包含了一个用于获取作业响应的作业级自然语言覆盖(NLO)。作业级别(NLO)是一个(未请求的)作业属性,然后指定隐式自然属性

language for any other WithoutLanguage job attributes returned in the response for that job. Interoperability testing of early implementations showed that no one was implementing the job-level NLO in Get-Job responses. So the job-level NLO was eliminated from the Get- Jobs response. This simplification makes all requests and responses consistent in that the implicit natural language for any WithoutLanguage 'text' or 'name' form is always supplied in the request's or response's "attributes-natural-language" operation attribute.

在该作业的响应中返回的任何其他WithoutLanguage作业属性的语言。对早期实现的互操作性测试表明,没有人在Get作业响应中实现作业级NLO。因此,从Get-Jobs响应中消除了作业级别的NLO。这种简化使所有请求和响应保持一致,因为任何WithoutLanguage“text”或“name”形式的隐式自然语言总是在请求或响应的“attributes natural language”操作属性中提供。

2.7 The "queued-job-count" Printer Description attribute
2.7 “排队作业计数”打印机描述属性
2.7.1 Why is "queued-job-count" RECOMMENDED?
2.7.1 为什么建议使用“排队作业计数”?

The reason that "queued-job-count" is RECOMMENDED, is that some clients look at that attribute alone when summarizing the status of a list of printers, instead of doing a Get-Jobs to determine the number of jobs in the queue. Implementations that fail to support the "queued-job-count" will cause that client to display 0 jobs when there are actually queued jobs.

建议使用“排队作业计数”的原因是,某些客户端在汇总打印机列表的状态时仅查看该属性,而不是执行Get Jobs来确定队列中的作业数。不支持“排队作业计数”的实现将导致该客户端在实际存在排队作业时显示0个作业。

We would have made it a REQUIRED Printer attribute, but some implementations had already been completed before the issue was raised, so making it a SHOULD was a compromise.

我们本来会将其作为必需的打印机属性,但在提出问题之前,一些实现已经完成,因此将其作为一个应该是一种折衷。

2.7.2 Is "queued-job-count" a good measure of how busy a printer is?
2.7.2 “排队作业计数”是衡量打印机有多忙的好方法吗?

The "queued-job-count" is not a good measure of how busy the printer is when there are held jobs. A future registration could be to add a "held-job-count" (or an "active-job-count") Printer Description attribute if experience shows that such an attribute (combination) is needed to quickly indicate how busy a printer really is.

“排队作业计数”不能很好地衡量有保留作业时打印机的繁忙程度。如果经验表明需要添加“保持作业计数”(或“活动作业计数”)打印机描述属性(组合)以快速指示打印机的实际繁忙程度,则将来的注册可能是添加“保持作业计数”(或“活动作业计数”)打印机描述属性。

2.8 Sending empty attribute groups
2.8 发送空属性组

The [RFC2566] and [RFC2565] specifications RECOMMEND that a sender not send an empty attribute group in a request or a response. However, they REQUIRE a receiver to accept an empty attribute group as equivalent to the omission of that group. So a client SHOULD omit the Job Template Attributes group entirely in a create operation that is not supplying any Job Template attributes. Similarly, an IPP object SHOULD omit an empty Unsupported Attributes group if there are no unsupported attributes to be returned in a response.

[RFC2566]和[RFC2565]规范建议发送方不要在请求或响应中发送空属性组。但是,它们要求接收者接受一个空属性组,作为该组的省略。因此,在不提供任何作业模板属性的创建操作中,客户端应该完全忽略作业模板属性组。类似地,如果响应中没有要返回的不受支持的属性,则IPP对象应该省略空的不受支持的属性组。

The [RFC2565] specification REQUIRES a receiver to be able to receive either an empty attribute group or an omitted attribute group and treat them equivalently. The term "receiver" means an IPP object for a request and a client for a response. The term "sender' means a client for a request and an IPP object for a response.

[RFC2565]规范要求接收方能够接收空属性组或省略的属性组,并对其进行等效处理。术语“接收者”指用于请求的IPP对象和用于响应的客户端。术语“发送方”是指请求的客户端和响应的IPP对象。

There is an exception to the rule for Get-Jobs when there are no attributes to be returned. [RFC2565] contains the following paragraph:

当没有要返回的属性时,Get Jobs规则有一个例外。[RFC2565]包含以下段落:

The syntax allows an xxx-attributes-tag to be present when the xxx-attribute-sequence that follows is empty. The syntax is defined this way to allow for the response of Get-Jobs where no attributes are returned for some job-objects. Although it is RECOMMENDED that the sender not send an xxx-attributes-tag if there are no attributes (except in the Get-Jobs response just mentioned), the receiver MUST be able to decode such syntax.

当下面的xxx属性序列为空时,该语法允许出现xxx属性标记。语法是这样定义的,以允许在某些作业对象没有返回属性的情况下响应Get作业。尽管建议发送方在没有属性的情况下(除了刚才提到的Get Jobs响应之外)不要发送xxx attributes标记,但接收方必须能够解码这种语法。

2.9 Returning unsupported attributes in Get-Xxxx responses
2.9 在Get Xxxx响应中返回不支持的属性

In the Get-Printer-Attributes, Get-Jobs, or Get-Job-Attributes responses, the client cannot depend on getting unsupported attributes returned in the Unsupported Attributes group that the client requested, but are not supported by the IPP object. However, such unsupported requested attributes will not be returned in the Job Attributes or Printer Attributes group (since they are unsupported). Furthermore, the IPP object is REQUIRED to return the 'successful-ok-ignored-or-substituted-attributes' status code, so that the client knows that not all that was requested has been returned.

在Get Printer Attributes、Get Jobs或Get Job Attributes响应中,客户端无法依赖于获取客户端请求的不支持属性组中返回的不支持属性,但IPP对象不支持这些属性。但是,这些不受支持的请求属性将不会在“作业属性”或“打印机属性”组中返回(因为它们不受支持)。此外,IPP对象需要返回“successful ok ignored or substituted attributes”(成功确定忽略或替换的属性)状态代码,以便客户端知道并非所有请求都已返回。

2.10 Returning job-state in Print-Job response
2.10 正在打印作业响应中返回作业状态

An IPP client submits a small job via Print-Job. By the time the IPP printer/print server is putting together a response to the operation, the job has finished printing and been removed as an object from the print system. What should the job-state be in the response?

IPP客户端通过打印作业提交小作业。当IPP打印机/打印服务器对操作做出响应时,作业已完成打印,并已作为对象从打印系统中删除。响应中的作业状态应该是什么?

The Model suggests that the Printer return a response before it even accepts the document content. The Job Object Attributes are returned only if the IPP object returns one of the success status codes. Then the job-state would always be "pending" or "pending-held".

该模型建议打印机在接受文档内容之前返回响应。仅当IPP对象返回一个成功状态代码时,才会返回作业对象属性。然后作业状态将始终为“挂起”或“挂起挂起”。

This issue comes up for the implementation of an IPP Printer object as a server that forwards jobs to devices that do not provide job status back to the server. If the server is reasonably certain that the job completed successfully, then it should return the job-state as 'completed'. Also the server can keep the job in its "job history" long after the job is no longer in the device. Then a user

将IPP Printer对象实现为服务器时会出现此问题,该服务器将作业转发给不向服务器提供作业状态的设备。如果服务器合理地确定作业已成功完成,则应将作业状态返回为“已完成”。此外,服务器可以在作业不再位于设备中很久之后将作业保留在其“作业历史记录”中。然后是一个用户

could query the server and see that the job was in the 'completed' state and completed as specified by the job's "time-at-completed" time which would be the same as the server submitted the job to the device.

无法查询服务器并查看作业是否处于“已完成”状态,以及作业的“完成时间”指定的时间是否已完成,该时间与服务器向设备提交作业的时间相同。

An alternative is for the server to respond to the client before or while sending the job to the device, instead of waiting until the server has finished sending the job to the device. In this case, the server can return the job's state as 'pending' with the 'job-outgoing' value in the job's "job-state-reasons" attribute.

另一种方法是,服务器在将作业发送到设备之前或发送时响应客户端,而不是等到服务器完成将作业发送到设备之后。在这种情况下,服务器可以使用作业的“作业状态原因”属性中的“作业传出”值将作业状态返回为“挂起”。

If the server doesn't know for sure whether the job completed successfully (or at all), it could return the (out-of-band) 'unknown' value.

如果服务器不确定作业是否成功完成(或根本不知道),它可能会返回(带外)“未知”值。

On the other hand, if the server is able to query the device and/or setup some sort of event notification that the device initiates when the job makes state transitions, then the server can return the current job state in the Print-Job response and in subsequent queries because the server knows what the job state is in the device (or can query the device).

另一方面,如果服务器能够查询设备和/或设置设备在作业进行状态转换时启动的某种事件通知,则服务器可以在打印作业响应和后续查询中返回当前作业状态,因为服务器知道设备中的作业状态(或者可以查询设备)。

All of these alternatives depend on implementation of the server and the device.

所有这些替代方案都取决于服务器和设备的实现。

2.11 Flow controlling the data portion of a Print-Job request
2.11 控制打印作业请求的数据部分的流

A paused printer (or one that is stopped due to paper out or jam or spool space full or buffer space full, may flow control the data of a Print-Job operation (at the TCP/IP layer), so that the client is not able to send all the document data. Consequently, the Printer will not return a response until the condition is changed.

暂停的打印机(或因出纸、卡纸、线轴空间满或缓冲区空间满而停止的打印机)可能会控制打印作业操作的数据流(在TCP/IP层),因此客户端无法发送所有文档数据。因此,在条件改变之前,打印机不会返回响应。

The Printer should not return a Print-Job response with an error code in any of these conditions, since either the printer will be resumed and/or the condition will be freed either by human intervention or as jobs print.

打印机在任何情况下都不应返回带有错误代码的打印作业响应,因为打印机将通过人工干预或打印作业恢复和/或释放状态。

In writing test scripts to test IPP Printers, the script must also be written not to expect a response, if the printer has been paused, until the printer is resumed, in order to work with all possible implementations.

在编写测试脚本以测试IPP打印机时,如果打印机已暂停,则还必须编写脚本,以防出现响应,直到打印机恢复,以便使用所有可能的实现。

2.12 Multi-valued attributes
2.12 多值属性

What is the attribute syntax for a multi-valued attribute? Since some attributes support values in more than one data type, such as "media", "job-hold-until", and "job-sheets", IPP semantics associate

多值属性的属性语法是什么?由于某些属性支持多个数据类型中的值,例如“介质”、“作业保留到”和“作业表”,因此IPP语义关联

the attribute syntax with each value, not with the attribute as a whole. The protocol associates the attribute syntax tag with each value. Don't be fooled, just because the attribute syntax tag comes before the attribute keyword. All attribute values after the first have a zero length attribute keyword as the indication of a subsequent value of the same attribute.

属性语法包含每个值,而不是整个属性。协议将属性语法标记与每个值相关联。不要因为attributesyntax标记在attribute关键字之前就被愚弄了。第一个之后的所有属性值都有一个长度为零的属性关键字,作为同一属性的后续值的指示。

2.13 Querying jobs with IPP that were submitted using other job submission protocols

2.13 使用IPP查询使用其他作业提交协议提交的作业

The following clarification was added to [RFC2566] section 8.5:

[RFC2566]第8.5节增加了以下澄清:

8.5 Queries on jobs submitted using non-IPP protocols

8.5 对使用非IPP协议提交的作业的查询

If the device that an IPP Printer is representing is able to accept jobs using other job submission protocols in addition to IPP, it is RECOMMEND that such an implementation at least allow such "foreign" jobs to be queried using Get-Jobs returning "job-id" and "job-uri" as 'unknown'. Such an implementation NEED NOT support all of the same IPP job attributes as for IPP jobs. The IPP object returns the 'unknown' out-of-band value for any requested attribute of a foreign job that is supported for IPP jobs, but not for foreign jobs.

如果IPP打印机所代表的设备能够使用除IPP之外的其他作业提交协议接受作业,则建议这样的实现至少允许使用返回“作业id”和“作业uri”为“未知”的Get作业查询此类“外部”作业。这种实现不需要支持与IPP作业相同的所有IPP作业属性。IPP对象返回IPP作业支持但不支持外部作业的外部作业的任何请求属性的“未知”带外值。

It is further RECOMMENDED, that the IPP Printer generate "job-id" and "job-uri" values for such "foreign jobs", if possible, so that they may be targets of other IPP operations, such as Get-Job-Attributes and Cancel-Job. Such an implementation also needs to deal with the problem of authentication of such foreign jobs. One approach would be to treat all such foreign jobs as belonging to users other than the user of the IPP client. Another approach would be for the foreign job to belong to 'anonymous'. Only if the IPP client has been authenticated as an operator or administrator of the IPP Printer object, could the foreign jobs be queried by an IPP request. Alternatively, if the security policy is to allow users to query other users' jobs, then the foreign jobs would also be visible to an end-user IPP client using Get-Jobs and Get-Job-Attributes.

进一步建议,如果可能,IPP打印机为此类“外部作业”生成“作业id”和“作业uri”值,以便它们可能成为其他IPP操作的目标,例如获取作业属性和取消作业。这种实施还需要处理此类外国工作的认证问题。一种方法是将所有此类外来作业视为属于IPP客户端用户以外的用户。另一种方法是让外国工作属于“匿名”。只有当IPP客户端已作为IPP打印机对象的操作员或管理员进行身份验证时,IPP请求才能查询外部作业。或者,如果安全策略允许用户查询其他用户的作业,则最终用户IPP客户端也可以使用Get jobs和Get Job属性查看外部作业。

Thus IPP MAY be implemented as a "universal" protocol that provides access to jobs submitted with any job submission protocol. As IPP becomes widely implemented, providing a more universal access makes sense.

因此,IPP可以实现为“通用”协议,提供对使用任何作业提交协议提交的作业的访问。随着IPP的广泛实施,提供更普遍的接入是有意义的。

2.14 The 'none' value for empty sets
2.14 空集合的“无”值

[RFC2566] states that the 'none' value should be used as the value of a 1SetOf when the set is empty. In most cases, sets that are potentially empty contain keywords so the keyword 'none' is used, but for the 3 finishings attributes, the values are enums and thus the empty set is represented by the enum 3. Currently there are no other attributes with 1SetOf values which can be empty and can contain values that are not keywords. This exception requires special code and is a potential place for bugs. It would have been better if we had chosen an out-of-band value, either "no-value" or some new value, such as 'none'. Since we didn't, implementations have to deal with the different representations of 'none', depending on the attribute syntax.

[RFC2566]指出,当集合为空时,“无”值应用作1SetOf的值。在大多数情况下,可能为空的集合包含关键字,因此使用关键字“none”,但对于3个finishings属性,值是枚举,因此空集合由枚举3表示。目前没有其他具有1SetOf值的属性可以为空,并且可以包含非关键字的值。此异常需要特殊的代码,并且可能存在bug。如果我们选择带外值,或者选择“无值”,或者选择一些新值,例如“无”,则会更好。由于我们没有这样做,实现必须根据属性语法处理“none”的不同表示。

2.15 Get-Jobs, my-jobs='true', and 'requesting-user-name'?
2.15 获取作业、my Jobs='true'和'请求用户名'?

In [RFC2566] section 3.2.6.1 'Get-Jobs Request', if the attribute ' my-jobs' is present and set to TRUE, MUST the 'requesting-user-name' attribute be there to, and if it's not present what should the IPP printer do?

在[RFC2566]第3.2.6.1节“获取作业请求”中,如果属性“我的作业”存在并设置为TRUE,“请求用户名”属性必须存在,如果不存在,IPP打印机应该做什么?

[RFC2566] Section 8.3 describes the various cases of "requesting-user-name" being present or not for any operation. If the client does not supply a value for "requesting-user-name", the printer MUST assume that the client is supplying some anonymous name, such as "anonymous".

[RFC2566]第8.3节描述了任何操作中存在或不存在“请求用户名”的各种情况。如果客户端未提供“请求用户名”的值,则打印机必须假定客户端提供了某种匿名名称,如“匿名”。

2.16 The "multiple-document-handling" Job Template attribute and support of multiple document jobs

2.16 “多文档处理”作业模板属性和对多文档作业的支持

ISSUE: IPP/1.0 is silent on which of the four effects an implementation would perform if it supports Create-Job, but does not support "multiple-document-handling".

问题:如果IPP/1.0支持创建作业,但不支持“多文档处理”,那么它对实现将执行的四种效果中的哪一种没有说明。

A fix to IPP/1.0 would be to require implementing all four values of "multiple-document-handling" if Create-Job is supported at all. Or at least 'single-document-new-sheet' and 'separate-documents-uncollated-copies'. In any case, an implementation that supports Create-Job SHOULD also support "multiple-document-handling". Support for all four values is RECOMMENDED, but at least the 'single-document-new-sheet' and 'separate-documents-uncollated-copies' values, along with the "multiple-document-handling-default" indicating the default behavior and "multiple-document-handling-supported" values. If an implementation spools the data, it should also support the 'separate-documents-collated-copies' value as well.

IPP/1.0的修复方案是,如果完全支持创建作业,则需要实现“多文档处理”的所有四个值。或至少“单一文件新表”和“单独文件无格式副本”。在任何情况下,支持创建作业的实现也应该支持“多文档处理”。建议支持所有四个值,但至少支持“单文档新工作表”和“单独文档未附带副本”值,以及指示默认行为的“多文档处理默认值”和“支持的多文档处理”值。如果一个实现对数据进行假脱机处理,它还应该支持“单独的文档整理副本”值。

3 Encoding and Transport

3编码和传输

This section discusses various aspects of IPP/1.0 Encoding and Transport [RFC2565].

本节讨论IPP/1.0编码和传输[RFC2565]的各个方面。

A server is not required to send a response until after it has received the client.s entire request. Hence, a client must not expect a response until after it has sent the entire request. However, we recommend that the server return a response as soon as possible if an error is detected while the client is still sending the data, rather than waiting until all of the data is received. Therefore, we also recommend that a client listen for an error response that an IPP server MAY send before it receives all the data. In this case a client, if chunking the data, can send a premature zero-length chunk to end the request before sending all the data (and so the client can keep the connection open for other requests, rather than closing it). If the request is blocked for some reason, a client MAY determine the reason by opening another connection to query the server using Get-Printer-Attributes.

服务器在收到客户端的整个请求之前,不需要发送响应。因此,客户端必须在发送整个请求之后才能期望响应。但是,如果在客户端仍在发送数据时检测到错误,我们建议服务器尽快返回响应,而不是等到收到所有数据。因此,我们还建议客户端在接收所有数据之前侦听IPP服务器可能发送的错误响应。在这种情况下,如果客户机对数据进行分块,则可以在发送所有数据之前发送一个过早的零长度分块来结束请求(因此客户机可以为其他请求保持连接打开,而不是关闭连接)。如果请求因某种原因被阻止,客户端可以通过打开另一个连接来确定原因,以使用“获取打印机属性”查询服务器。

In the following sections, there are a tables of all HTTP headers which describe their use in an IPP client or server. The following is an explanation of each column in these tables.

在以下部分中,有一个包含所有HTTP头的表格,描述了它们在IPP客户端或服务器中的使用。以下是这些表中每列的说明。

- the .header. column contains the name of a header. - the .request/client. column indicates whether a client sends the header. - the .request/ server. column indicates whether a server supports the header when received. - the .response/ server. column indicates whether a server sends the header. - the .response /client. column indicates whether a client supports the header when received. - the .values and conditions. column specifies the allowed header values and the conditions for the header to be present in a request/response.

- 标题。列包含标题的名称。-请求/客户机。列指示客户端是否发送标头。-.request/server。列指示接收时服务器是否支持标头。-.response/server。列指示服务器是否发送标头。-响应/客户端。列指示接收时客户端是否支持标头。-A.价值和条件。列指定允许的标头值以及标头在请求/响应中出现的条件。

The table for .request headers. does not have columns for responses, and the table for .response headers. does not have columns for requests.

.request头的表。没有响应列和.response标头表。没有用于请求的列。

The following is an explanation of the values in the .request/client. and .response/ server. columns.

下面是对.request/client中的值的解释。和。响应/服务器。柱。

- must: the client or server MUST send the header, - must-if: the client or server MUST send the header when the condition described in the .values and conditions. column is met,

- 必须:客户端或服务器必须发送标头,-must if:当.values and conditions中描述的条件满足时,客户端或服务器必须发送标头。列被满足,

- may: the client or server MAY send the header - not: the client or server SHOULD NOT send the header. It is not relevant to an IPP implementation.

- may:客户端或服务器可能发送标头-not:客户端或服务器不应发送标头。它与IPP实施无关。

The following is an explanation of the values in the .response/client. and .request/ server. columns.

下面是对.response/client中的值的解释。和。请求/服务器。柱。

- must: the client or server MUST support the header, - may: the client or server MAY support the header - not: the client or server SHOULD NOT support the header. It is not relevant to an IPP implementation.

- 必须:客户端或服务器必须支持标头,-may:客户端或服务器可能支持标头-not:客户端或服务器不应支持标头。它与IPP实施无关。

3.1 General Headers
3.1 一般标题

The following is a table for the general headers.

下表列出了常规标题。

General- Request Response Values and Conditions Header

常规-请求-响应值和条件标头

Client Server Server Client

客户端服务器客户端

Cache- must not must not .no-cache. only Control

缓存-不得。无缓存。唯一控制

Connection must-if must must- must .close. only. Both if client and server SHOULD keep a connection for the duration of a sequence of operations. The client and server MUST include this header for the last operation in such a sequence.

连接必须如果必须-必须。关闭。只有if客户端和服务器都应在一系列操作期间保持连接。客户机和服务器必须在这样的序列中的最后一个操作中包含此标头。

Date may may must may per RFC 1123 [RFC1123] from RFC 2068 [RFC2068]

根据RFC 1123[RFC1123]从RFC 2068[RFC2068]开始,日期必须为5月

Pragma must not must not .no-cache. only

Pragma不能不能。没有缓存。只有

Transfer- must-if must must- must .chunked. only . Encoding if Header MUST be present if Content-Length is absent.

如果必须-必须,则传输-必须。分块。只有如果缺少内容长度,则必须存在编码if头。

Upgrade not not not not

不升级

Via not not not not

Via not

3.2 Request Headers
3.2 请求头

The following is a table for the request headers.

下表列出了请求头。

Request-Header Client Server Request Values and Conditions

请求头客户端服务器请求值和条件

Accept may must .application/ipp. only. This value is the default if the

可能必须接受。应用程序/ipp。只有如果

Request-Header Client Server Request Values and Conditions

请求头客户端服务器请求值和条件

client omits it

客户忽略了它

Accept-Charset not not Charset information is within the application/ipp entity

接受字符集非字符集信息在应用程序/ipp实体中

Accept-Encoding may must empty and per RFC 2068 [RFC2068] and IANA registry for content-codings

根据RFC 2068[RFC2068]和IANA内容编码注册表,接受编码可能必须为空

Accept-Language not not language information is within the application/ipp entity

接受语言而不是应用程序/ipp实体中的语言信息

Authorization must-if must per RFC 2068. A client MUST send this header when it receives a 401 .Unauthorized. response and does not receive a .Proxy-Authenticate. header.

必须按照RFC 2068进行授权。客户端在收到401.Unauthorized文件时必须发送此标头。响应,但未收到.Proxy身份验证。标题。

From not not per RFC 2068. Because RFC recommends sending this header only with the user.s approval, it is not very useful

不符合RFC 2068的要求。因为RFC建议仅在用户批准的情况下发送此标题,所以它不是很有用

Host must must per RFC 2068

主机必须符合RFC 2068的要求

If-Match not not

如果不匹配

If-Modified- not not Since

如果已修改-未自

If-None-Match not not

如果没有匹配,则不匹配

If-Range not not

如果范围不是

If-Unmodified- not not Since

如果未修改-自

Max-Forwards not not

马克斯没有

Proxy- must-if not per RFC 2068. A client MUST send Authorization this header when it receives a 401 .Unauthorized. response and a .Proxy-Authenticate. header.

代理-如果不符合RFC 2068,则必须。当客户端接收到401.Unauthorized时,必须将授权发送到此头。响应和代理身份验证。标题。

Range not not

范围不

Referer not not

不推荐

User-Agent not not

用户代理不是

3.3 Response Headers
3.3 响应头

The following is a table for the request headers.

下表列出了请求头。

Response- Server Client Response Values and Conditions Header

响应-服务器客户端响应值和条件标头

Accept-Ranges not not

不接受范围

Age not not

年龄不是

Location must-if may per RFC 2068. When URI needs redirection.

如果可能的话,必须按照RFC 2068确定位置。当URI需要重定向时。

Proxy- not must per RFC 2068 Authenticate

代理-不必按照RFC 2068进行身份验证

Public may may per RFC 2068

公众可根据RFC 2068进行

Retry-After may may per RFC 2068

根据RFC 2068,5月后重试

Server not not

服务器不是

Vary not not

不改变

Warning may may per RFC 2068

根据RFC 2068,可能会出现警告

WWW- must-if must per RFC 2068. When a server needs to Authenticate authenticate a client.

WWW-必须,如果必须,根据RFC 2068。当服务器需要对客户端进行身份验证时。

3.4 Entity Headers
3.4 实体标题

The following is a table for the entity headers.

下表列出了实体标题。

Entity-Header Request Response Values and Conditions

实体头请求响应值和条件

Client Server Server Client

客户端服务器客户端

Allow not not not not

不允许

Content-Base not not not not

内容库不是

Content- may must must must per RFC 2068 and IANA Encoding registry for content codings.

内容-可能必须按照RFC 2068和IANA编码注册表进行内容编码。

Content- not not not not Application/ipp Language handles language

内容-非应用程序/ipp语言处理语言

Content- must-if must must-if must the length of the Length message-body per RFC 2068. Header MUST be present if Transfer-

内容-必须是RFC 2068规定的长度消息正文的长度。如果传输,则必须存在标题-

Entity-Header Request Response Values and Conditions

实体头请求响应值和条件

Client Server Server Client

客户端服务器客户端

Encoding is absent.

没有编码。

Content- not not not not Location

内容-非位置

Content-MD5 may may may may per RFC 2068

Content-MD5可根据RFC 2068进行

Content-Range not not not not

内容范围不

Content-Type must must must must .application/ipp. only

内容类型必须为。应用程序/ipp。只有

ETag not not not not

埃塔格不是

Expires not not not not

过期不

Last-Modified not not not not

上次修改的不是

3.5 Optional support for HTTP/1.0
3.5 对HTTP/1.0的可选支持

IPP implementations consist of an HTTP layer and an IPP layer. In the following discussion, the term "client" refers to the HTTP client layer and the term "server" refers to the HTTP server layer. The Encoding and Transport document [RFC2565] requires that HTTP 1.1 MUST be supported by all clients and all servers. However, a client and/or a server implementation may choose to also support HTTP 1.0.

IPP实现由HTTP层和IPP层组成。在下面的讨论中,术语“客户端”指HTTP客户端层,术语“服务器”指HTTP服务器层。编码和传输文档[RFC2565]要求所有客户端和服务器都必须支持HTTP 1.1。但是,客户机和/或服务器实现也可以选择支持HTTP 1.0。

- This option means that a server may choose to communicate with a (non-conforming) client that only supports HTTP 1.0. In such cases the server should not use any HTTP 1.1 specific parameters or features and should respond using HTTP version number 1.0.

- 此选项意味着服务器可以选择与仅支持HTTP 1.0的(不一致的)客户端通信。在这种情况下,服务器不应使用任何HTTP 1.1特定的参数或功能,而应使用HTTP版本号1.0进行响应。

- This option also means that a client may choose to communicate with a (non-conforming) server that only supports HTTP 1.0. In such cases, if the server responds with an HTTP .unsupported version number. to an HTTP 1.1 request, the client should retry using HTTP version number 1.0.

- 此选项还意味着客户端可以选择与仅支持HTTP 1.0的(不一致的)服务器通信。在这种情况下,如果服务器响应HTTP.unsupported版本号。对于HTTP 1.1请求,客户端应使用HTTP版本号1.0重试。

3.6 HTTP/1.1 Chunking
3.6 HTTP/1.1分块
3.6.1 Disabling IPP Server Response Chunking
3.6.1 禁用IPP服务器响应分块

Clients MUST anticipate that the HTTP/1.1 server may chunk responses and MUST accept them in responses. However, a (non-conforming) HTTP client that is unable to accept chunked responses may attempt to request an HTTP 1.1 server not to use chunking in its response to an operation by using the following HTTP header:

客户端必须预期HTTP/1.1服务器可能会对响应进行分块,并且必须在响应中接受它们。但是,无法接受分块响应的(非一致性)HTTP客户端可能会尝试使用以下HTTP标头请求HTTP 1.1服务器在其对操作的响应中不使用分块:

TE: identity

TE:身份

This mechanism should not be used by a server to disable a client from chunking a request, since chunking of document data is an important feature for clients to send long documents.

服务器不应使用此机制来禁止客户端对请求进行分块,因为文档数据分块是客户端发送长文档的一个重要功能。

3.6.2 Warning About the Support of Chunked Requests
3.6.2 关于支持分块请求的警告

This section describes some problems with the use of chunked requests and HTTP/1.1 servers.

本节描述了使用分块请求和HTTP/1.1服务器时的一些问题。

The HTTP/1.1 standard [HTTP] requires that conforming servers support chunked requests for any method. However, in spite of this requirement, some HTTP/1.1 implementations support chunked responses in the GET method, but do not support chunked POST method requests.

HTTP/1.1标准[HTTP]要求一致性服务器支持任何方法的分块请求。然而,尽管有这一要求,一些HTTP/1.1实现支持GET方法中的分块响应,但不支持分块POST方法请求。

Some HTTP/1.1 implementations that support CGI scripts [CGI] and/or servlets [Servlet] require that the client supply a Content-Length. These implementations might reject a chunked POST method and return a 411 status code (Length Required), might attempt to buffer the request and run out of room returning a 413 status code (Request Entity Too Large), or might successfully accept the chunked request.

一些支持CGI脚本[CGI]和/或Servlet[Servlet]的HTTP/1.1实现要求客户端提供内容长度。这些实现可能会拒绝分块POST方法并返回411状态代码(需要长度),可能会尝试缓冲请求并耗尽空间返回413状态代码(请求实体太大),或者可能会成功接受分块请求。

Because of this lack of conformance of HTTP servers to the HTTP/1.1 standard, the IPP standard [RFC2565] REQUIRES that a conforming IPP Printer object implementation support chunked requests and that conforming clients accept chunked responses. Therefore, IPP object implementers are warned to seek HTTP server implementations that support chunked POST requests in order to conform to the IPP standard and/or use implementation techniques that support chunked POST requests.

由于HTTP服务器与HTTP/1.1标准不一致,IPP标准[RFC2565]要求一致的IPP打印机对象实现支持分块请求,并且一致的客户端接受分块响应。因此,IPP对象实现者被警告寻求支持分块POST请求的HTTP服务器实现,以符合IPP标准和/或使用支持分块POST请求的实现技术。

4 References

4参考文献

[CGI] Coar, K. and D. Robinson, "The WWW Common Gateway Interface Version 1.1 (CGI/1.1)", Work in Progress.

[CGI]Coar,K.和D.Robinson,“WWW公共网关接口版本1.1(CGI/1.1)”,正在进行中。

[HTTP] Fielding, R., Gettys,J., Mogul, J., Frystyk,, H., Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

[HTTP]Fielding,R.,Gettys,J.,Mogul,J.,Frystyk,H.,Masinter,L.,Leach,P.和T.Berners Lee,“超文本传输协议——HTTP/1.1”,RFC 26161999年6月。

[RFC2569] Herriot, R., Hastings, T., Jacobs, N. and J. Martin, "Mapping between LPD and IPP Protocols", RFC 2569, April 1999.

[RFC2569]Herriot,R.,Hastings,T.,Jacobs,N.和J.Martin,“LPD和IPP协议之间的映射”,RFC 2569,1999年4月。

[RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S. and P. Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, April 1999.

[RFC2566]deBry,R.,Hastings,T.,Herriot,R.,Isaacson,S.和P.Powell,“互联网打印协议/1.0:模型和语义”,RFC 2566,1999年4月。

[RFC2565] Herriot, R., Butler, S., Moore, P. and R. Tuner, "Internet Printing Protocol/1.0: Encoding and Transport", RFC 2565, April 1999.

[RFC2565]Herriot,R.,Butler,S.,Moore,P.和R.Tuner,“互联网打印协议/1.0:编码和传输”,RFC 25651999年4月。

[RFC2568] Zilles, S., "Rationale for the Structure and Model and Protocol for the Internet Printing Protocol", RFC 2568, April 1999.

[RFC2568]Zilles,S.“互联网打印协议的结构、模型和协议的基本原理”,RFC 2568,1999年4月。

[RFC2567] Wright, D., "Design Goals for an Internet Printing Protocol", RFC 2567, April 1999.

[RFC2567]Wright,D.,“互联网打印协议的设计目标”,RFC2567,1999年4月。

[RFC1123] Braden, S., "Requirements for Internet Hosts - Application and Support", STD 3, RFC 1123, October 1989.

[RFC1123]Braden,S.,“互联网主机的要求-应用和支持”,STD 3,RFC 1123,1989年10月。

[RFC2026] Bradner, S., "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, October 1996.

[RFC2026]Bradner,S.,“互联网标准过程——第3版”,BCP 9,RFC 2026,1996年10月。

[RFC2068] Fielding, R., Gettys, J., Mogul, J., Frystyk, H. and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2068, January 1997.

[RFC2068]菲尔丁,R.,盖蒂斯,J.,莫卧儿,J.,弗莱斯蒂克,H.和T.伯纳斯李,“超文本传输协议——HTTP/1.1”,RFC 2068,1997年1月。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, August 1998.

[RFC2396]Berners Lee,T.,Fielding,R.和L.Masinter,“统一资源标识符(URI):通用语法”,RFC 2396,1998年8月。

[Servlet] Servlet Specification Version 2.1 (http://java.sun.com/products/servlet/2.1/index.html).

[Servlet]Servlet规范版本2.1(http://java.sun.com/products/servlet/2.1/index.html).

[SSL] Netscape, The SSL Protocol, Version 3, (Text version 3.02), November 1996.

[SSL]Netscape,SSL协议,版本3,(文本版本3.02),1996年11月。

4.1 Authors' Addresses
4.1 作者地址

Thomas N. Hastings Xerox Corporation 701 Aviation Blvd. El Segundo, CA 90245

托马斯·黑斯廷斯施乐公司航空大道701号。加利福尼亚州塞贡多市,邮编90245

   EMail: hastings@cp10.es.xerox.com
        
   EMail: hastings@cp10.es.xerox.com
        

Carl-Uno Manros Xerox Corporation 701 Aviation Blvd. El Segundo, CA 90245

卡尔·乌诺·曼罗斯施乐公司航空大道701号。加利福尼亚州塞贡多市,邮编90245

   EMail: manros@cp10.es.xerox.com
        
   EMail: manros@cp10.es.xerox.com
        

5 Security Considerations

5安全考虑

Security issues are discussed in sections 2.2, 2.3.1, and 8.5.

第2.2、2.3.1和8.5节讨论了安全问题。

6 Notices

6通知

The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it

IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不代表它

has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11 [BCP-11]. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF Secretariat.

已尽一切努力确定任何此类权利。有关IETF在标准跟踪和标准相关文件中权利的程序信息,请参见BCP-11[BCP-11]。可从IETF秘书处获得可供发布的权利声明副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果。

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the information to the IETF Executive Director.

IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涉及实施本标准所需技术的专有权利。请将信息发送给IETF执行董事。

Full Copyright Statement

完整版权声明

Copyright (C) The Internet Society (1999). All Rights Reserved.

版权所有(C)互联网协会(1999年)。版权所有。

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

本文件及其译本可复制并提供给他人,对其进行评论或解释或协助其实施的衍生作品可全部或部分编制、复制、出版和分发,不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文件本身,例如删除版权通知或对互联网协会或其他互联网组织的引用,除非出于制定互联网标准的需要,在这种情况下,必须遵循互联网标准过程中定义的版权程序,或根据需要将其翻译成英语以外的其他语言。

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

上述授予的有限许可是永久性的,互联网协会或其继承人或受让人不会撤销。

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。