1 引言
本文档包含IPP编码操作规则及传输层和操作层的描述。传输层由HTTP/1.1请求或响应组成。HTTP/1.1由RFC2616【RFC2616】描述。本文档定义了IPP实现支持的HTTP头。
操作层包括一个HTTP请求或响应中的消息主体。该文件“Internet打印协议/1.1:模型和语义”【RFC2911】定义了一个消息主体的语义和支持的值。该文件定义了IPP操作的编码。上述文件【RFC2911】此后称为“IPP模型文档”或简称“模型文档”。
注意:IPP(1.1)和HTTP(1.1)的版本号没有联系,它们版本号只是恰好都是1.1。
2 一致性术语
关键词"MUST","MUST NOT","REQUIRED","SHOULD","SHOULD NOT","RECOMMENDED","MAY","OPTIONAL"在文档RFC2119【RFC2119】中定义。
3 操作层编码
操作层是HTTP请求或者响应的消息主体的一部分,它必须包含一个单一的IPP操作请求或者操作响应。每个请求或响应由一个序列的值和属性组组成。属性组由一系列的属性组成,每一个属性包含名称和值。名称和值是最终的字节序列。
该编码由八位字节作为最原始的类型。有很多类型的八位字节编码,其中三种极为重要:整数,字符串,字节串,其它类型的编码都是基于它们。此编码中的每个字符串必须是这样一种字符序列,字符序列中的字符应该与一些字符集和自然语言相关联。字符串必须和值中的第一个字符(根据阅读顺序)放在编码的第一个字符位置。字符串符合美式英语的US-ASCII编码,称为US-ASCII-STRING。字符串相关联的字符集和自然语言在一个请求或响应中被指定,以后称为LOCALIZED-STRING。在“IPP模式文档顺序”的字符串必须和值中的第一个字节(根据IPP模式文档顺序)变成编码中的第一个字节。在编码中的每一个整数符号必须被编码为用大端格式二进制补码表示的有符号整数。根据使用中的协议,八字节的整数的数量必须是1,2,或4。这样一个字节的整数此后称为SIGNED-BYTE,被使用于版本号和标签领域。两个字节的整数,此后称为SIGNED-SHORT,用于操作ID,状态码和长度。四字节的整数此后称为SIGNED-INTEGER,用于值字段和请求ID。
后续两节以两种方式表示了操作层的编码:
-非形式化地通过图形和描述
-形式化地通过增强的巴克斯-瑙尔范式(ABNF),(RFC2234【RFC2234】文档定义了ABNF
一个操作的请求或响应必须使用后续两节所描述的方式进行编码。
3.1编码的图形表示
3.1.1请求和响应
操作请求或响应应如下编码:
-------------------------------------------------
| 版本号 | 要求2个字节
-------------------------------------------------
| 操作ID(请