* 仕様書

** IPP/1.0

[2] [CITE@en[RFC 2565 - Internet Printing Protocol/1.0: Encoding and Transport]]
([TIME[2015-03-08 18:30:30 +09:00]] 版)
<https://tools.ietf.org/html/rfc2565>

[3] [CITE@en[RFC 2566 - Internet Printing Protocol/1.0: Model and Semantics]]
([TIME[2015-02-08 17:43:40 +09:00]] 版)
<https://tools.ietf.org/html/rfc2566>

[4] [CITE@en[RFC 2567 - Design Goals for an Internet Printing Protocol]]
([TIME[2015-02-09 01:02:21 +09:00]] 版)
<https://tools.ietf.org/html/rfc2567>

[5] [CITE@en[RFC 2568 - Rationale for the Structure of the Model and Protocol for the Internet Printing Protocol]]
([TIME[2014-12-14 19:27:22 +09:00]] 版)
<https://tools.ietf.org/html/rfc2568>

[6] [CITE@en[RFC 2569 - Mapping between LPD and IPP Protocols]]
([TIME[2014-12-21 19:03:22 +09:00]] 版)
<https://tools.ietf.org/html/rfc2569>

** IPP/1.1

[7] [CITE@en[RFC 2910 - Internet Printing Protocol/1.1: Encoding and Transport]]
([TIME[2015-02-15 15:24:06 +09:00]] 版)
<https://tools.ietf.org/html/rfc2910>

[8] [CITE[RFC Errata Report]]
([TIME[2015-03-15 23:26:39 +09:00]] 版)
<http://www.rfc-editor.org/errata_search.php?rfc=2910>

[9] [CITE@en[RFC 2911 - Internet Printing Protocol/1.1: Model and Semantics]]
([TIME[2015-02-15 17:22:27 +09:00]] 版)
<https://tools.ietf.org/html/rfc2911>

[10] [CITE[RFC Errata Report]]
([TIME[2015-03-15 23:26:57 +09:00]] 版)
<http://www.rfc-editor.org/errata_search.php?rfc=2911>

[11] [CITE@en[RFC 3380 - Internet Printing Protocol (IPP): Job and Printer Set Operations]]
([TIME[2015-03-15 22:04:58 +09:00]] 版)
<https://tools.ietf.org/html/rfc3380>

[12] [CITE@en[RFC 3381 - Internet Printing Protocol (IPP): Job Progress Attributes]]
([TIME[2015-02-01 20:00:05 +09:00]] 版)
<https://tools.ietf.org/html/rfc3381>

[13] [CITE[RFC Errata Report]]
([TIME[2015-03-15 23:32:54 +09:00]] 版)
<http://www.rfc-editor.org/errata_search.php?rfc=3381>

[14] [CITE@en[RFC 3382 - Internet Printing Protocol (IPP): The 'collection' attribute syntax]]
([TIME[2014-12-29 01:17:02 +09:00]] 版)
<https://tools.ietf.org/html/rfc3382>

[15] [CITE[RFC Errata Report]]
([TIME[2015-03-15 23:34:03 +09:00]] 版)
<http://www.rfc-editor.org/errata_search.php?rfc=3382>

[16] [CITE@en[RFC 3510 - Internet Printing Protocol/1.1: IPP URL Scheme]]
([TIME[2014-12-21 20:19:26 +09:00]] 版)
<https://tools.ietf.org/html/rfc3510>

[17] [CITE@en[RFC 3995 - Internet Printing Protocol (IPP): Event Notifications and Subscriptions]]
([TIME[2015-02-01 15:23:36 +09:00]] 版)
<https://tools.ietf.org/html/rfc3995>

[18] [CITE@en[RFC 7472 - Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme]]
([TIME[2015-03-04 12:23:14 +09:00]] 版)
<https://tools.ietf.org/html/rfc7472>

** IPP/2.0, IPP/2.1, IPP/2.2

[31] [CITE[Internet Printing Protocol Version 2.0 4 Second Edition (IPP/2.0 SE)]] ([TIME[2011-03-15 05:29:39 +09:00]] 版) <http://ftp.pwg.org/pub/pwg/candidates/cs-ipp20-20110214-5100.12.pdf>

[32] [CITE[IPP Everywhere]] ([TIME[2013-01-29 04:53:11 +09:00]] 版) <http://ftp.pwg.org/pub/pwg/candidates/cs-ippeve10-20130128-5100.14.pdf>

他関連仕様がいくつか。 >>30 参照。

[30] [CITE@en[Internet Printing Protocol - Printer Working Group]]
([TIME[2015-03-16 11:34:36 +09:00]] 版)
<https://www.pwg.org/ipp/>

* プロトコル

[46] [[IPPの日時形式]]

* ポート

[19] [[IPP/1.0]] 時代から [CODE[[[631]]]] が“既定”の[[ポート番号]]として規定されていましたが [SRC[>>2]]、専用の 
[[URL scheme]] はなく [CODE(URI)@en[[[http:]]]] [[URL]] を使っていたので、 [[URL]]
における[[既定のポート番号]]は [CODE[[[80]]]] のままでした。

[21] [[IPP/1.1]] では [CODE(URI)@en[[[ipp:]]]] [[URL scheme]]
が規定されており、その[[既定のポート番号]]は [CODE[[[631]]]] とされています [SRC[>>7, >>16]]。

[38] [[IESG]] の指示により [[IPP]] over [[TLS]] = [CODE(URI)@en[[[ipps:]]]]
も同じく [CODE[[[631]]]] を[[既定のポート番号]]として使います [SRC[>>18]]。

* TLS

[20] [[IPP/1.0]] は [[SSL/3.0]] と併用する場合についての記述があり、
[[HTTPS]] 上で [[IPP/1.0]] を使うことになっていました [SRC[>>2]]。

[22] [[IPP/1.1]] は [[TLS]] に対応することを[['''推奨''']]しています [SRC[>>7]]。
[[TLS]] [[クライアント認証]]や [[TLS]] 上の [[HTTP]] [[基本認証]]に対応することも認めています
[SRC[>>7, >>9]]。

[23] [[TLS]] [[cipher suite]] としては [CODE[[[TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA]]]]
に対応することを[['''必須''']]とし、それ以外は[[任意選択]]としています [SRC[>>7]]。

[24] 加えて、 [[TLS/1.0]] との互換性のために [[TLS/1.1]] の実装が [[SSL/3.0]]
に対応することも認めています [SRC[>>7]]。

[25] [[IPP/1.1]] は一般的な [[HTTPS]] ではなく、 [[IETF]] [[提案標準]]である
[[RFC 2817]] [CODE(HTTP)@en[[[Upgrade:]] [[TLS]]]] 方式による[[平文]]から [[TLS]]
への切り替えを使うとされています [SRC[>>7]]。

;; [26] この方式は [[IPP]] 以外では採用されていないものです。

[33] 2015年になって出版された [[IPP]] over [[HTTPS]] [SRC[>>18]]
は、この [CODE(HTTP)@en[[[Upgrade:]]]] 方式の問題点を次のように指摘しています。

[FIG(list)[
- [34] [[RFC 2817]] 自体の問題では無いとはいえ、おかしな挙動の実装がある
- [35] すべての [[HTTP接続]]の最初で [CODE(HTTP)@en[[[Upgrade:]]]] せずに、
特定の [[IPP]] 操作の前にしか [CODE(HTTP)@en[[[Upgrade:]]]]
しない実装がある
- [36] [[鯖]]が [CODE(HTTP)@en[[[Upgrade:]]]] を求めるより前に[[クライアント]]が[[平文]]でデータを送れてしまう
]FIG]

[27] [[IPP/1.1]] における [[HTTPS]] の扱いは明確ではありませんでした。
[[URL scheme]] としての [CODE(URI)@en[[[https:]]]] には互換性のためだけに対応するとの記載はありますが、
実際の対応方法の規定はありません。 [[SSL/3.0]] への対応は認められていますが、
実際の利用方法の規定がありません。

[37] [[RFC 7472]] [[IPP]] over [[HTTPS]] は、 [[IPP/1.0]] 時代の方式に戻り、
[[HTTPS]] 上で [[IPP]] を使うというものです。ただし新たに
[CODE(URI)@[[[ipps:]]]] [[URL scheme]] を導入しています。

* URL scheme

[28] [CODE(URI)@en[[[ipp:]]]] [[URL]] は[[絶対URL]]でのみ使うことができ、
[[相対URL]]では使えません [SRC[>>16]]。 [CODE(URI)@en[[[ipps:]]]] [[URL]]
も[[絶対URL]]でのみ使えます [SRC[>>18]]。

;; [29] [[相対URL]]は [[URL scheme]] に関わらず定義されているので、
そんな制限が付けられるのか謎ですが... ([[IPP]] プロトコル内では[[相対URL]]
を使ってはならない、という制約なら理解できますが...)

* 歴史

[1] [CITE@en[draft-mcdonald-ipps-uri-scheme-02 - IPP over HTTPS Transport Binding and \x27ipps\x27 URI Scheme]]
( ([TIME[2011-06-05 13:39:57 +09:00]] 版))
<http://tools.ietf.org/html/draft-mcdonald-ipps-uri-scheme-02>

[39] [CITE@en[RFC 7612 - Lightweight Directory Access Protocol (LDAP): Schema for Printer Services]]
([TIME[2015-07-01 10:20:12 +09:00]] 版)
<https://tools.ietf.org/html/rfc7612>

[40] [CITE@ja[IPPSを使って文書を安全に印刷する]]
<http://support.brother.co.jp/j/s/support/html/hl3040cn_jp/ug/html/nug/7-15.html>

[41] [CITE@en[RFC 8010 - Internet Printing Protocol/1.1: Encoding and Transport]]
([TIME[2017-03-06 00:57:55 +09:00]])
<https://tools.ietf.org/html/rfc8010>

[42] [CITE@en[RFC 8011 - Internet Printing Protocol/1.1: Model and Semantics]]
([TIME[2017-03-06 01:00:20 +09:00]])
<https://tools.ietf.org/html/rfc8011>

[43] [CITE[PWG 5100.13 – IPP: Job and Printer Extensions – Set 3]] ([TIME[2012-07-28 08:38:41 +09:00]] 版) <http://ftp.pwg.org/pub/pwg/candidates/cs-ippjobprinterext3v10-20120727-5100.13.pdf>

[44] [CITE[「Re:ステージ! ドリームデイズ♪」3話上映会【1月新番だって言ったよね】(再) - 2020/01/19(日) 23:30開始 - ニコニコ生放送]]
([TIME[2020-01-20 09:11:40 +09:00]])
<https://live2.nicovideo.jp/watch/lv323520583>

[45] [CITE[「Re:ステージ! ドリームデイズ♪」3話上映会【1月新番だって言ったよね】(再) - 2020/01/19(日) 23:30開始 - ニコニコ生放送]]
([TIME[2020-01-20 09:11:40 +09:00]])
<https://live2.nicovideo.jp/watch/lv323520583>