Skip to main content

Design Goals for an Internet Printing Protocol
RFC 2567

Document Type RFC - Experimental (April 1999)
Author F. Don Wright
Last updated 2013-03-02
RFC stream Internet Engineering Task Force (IETF)
Formats
Additional resources Mailing list discussion
IESG Responsible AD (None)
Send notices to (None)
RFC 2567
Request for posting confirmation emailed to previous authors: Rakesh Gandhi , Himanshu Shah lt; ----------------------------------------------------------+
        Print job accepted and spooled (encrypted)
        - job id = #12345
        - current state of print job = spooled
        - submission time = 02/12/97, 15:35
        - printer state = printing
        - payment required to proceed with job
        - pick up at 230 East Main after 3:30 pm today

      +---------------------------------------------------------- >
      < ----------------------------------------------------------+
        Payment transaction
        .
        .
        .
      < ----------------------------------------------------------+
        Asynchronous response (email in this case)
        - decryption failed on job #12345

Wright                        Experimental                     [Page 27]
RFC 2567             Internet Printing Design Goals           April 1999

        - no pages printed
        - current state of job = aborted

10.11. SUBMITTING A PRINT JOB WITH AUTHENTICATION

   An end-user wants to submit a print job. The print file already
   exists on his workstation. The client and printer are behind the same
   corporate firewall. The printer is available to anyone behind the
   firewall but authentication and authorization is required.
   Authorization takes place using the authenticated end-user's name.
   The data is pushed to the printer. The printer is capable of spooling
   the output.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
      < ----------------------------------------------------------+
        Authentication

        Note: An authentication failure would end the transaction at
                  this point.

      +---------------------------------------------------------- >
        Here is a print job
        - job name = MyJob
        - notify me by email when done printing
        - print on iso-a4-white paper
        - print on both sides of the paper
        - return status of the printer in response
        - tell me where to pick up output
        - document is in Postscript format
        - here is the document to print

      < ----------------------------------------------------------+
        Print job accepted and spooled
        - job id = #12345
        - current state of print job = spooled
        - submission time = 02/12/97, 15:35
        - printer state = printing

Wright                        Experimental                     [Page 28]
RFC 2567             Internet Printing Design Goals           April 1999

10.12. SUBMITTING A PRINT JOB GENERATED DYNAMICALLY

   An end-user wants to submit a print job. The print data is generated
   dynamically and is being transmitted by a printer driver on the
   client workstation as available. The client and printer are behind
   the same corporate firewall. The printer is available to anyone
   behind the firewall and no authentication and authorization is
   required. The data is pushed to the printer. The printer is capable
   of spooling the output.  No error occurs.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
        Here is a print job
        - job name = MyJob
        - notify me by email when done printing
        - print on iso-a4-white paper
        - print on both sides of the paper
        - return status of the printer in response
        - document is in Postscript format
        - here is the print job

      < ----------------------------------------------------------+
        Print data accepted and spooling started
        - job id = #12345
        - current job state = spooled
        - submission time = 02/12/97, 15:35
        - printer state = printing

10.13. SUBMITTING A PRINT JOB WITH A PRINTER JAM - CANCELED

   An end-user wants to submit a print job. The print data is generated
   dynamically and is being transmitted by a printer driver on the
   client workstation as available. The client and printer are behind
   the same corporate firewall. The printer is available to anyone
   behind the firewall and no authentication and authorization is
   required. The data is pushed to the printer. The printer is not
   capable of spooling the output. The printer jams notifies the user
   and the user chooses to cancel the job.

   Client                                            IPP Printer
      +---------------------------------------------------------- >
        Here is a print job
        - job name = MyJob
        - notify me by email when done printing
        - print on iso-a4-white paper
        - print on both sides of the paper

Wright                        Experimental                     [Page 29]
RFC 2567             Internet Printing Design Goals           April 1999

        - return status of the printer in response
        - document is in Postscript format
        - here is the document to print

      < ----------------------------------------------------------+
        Print data accepted and printing started
        - job id = #12345

      +---------------------------------------------------------- >
        - What is the status of print job #12345?

      < --------------------------------------------------------- +
        - Job #12345 accepted but printer jammed, cannot continue

      +---------------------------------------------------------- >
        - Cancel job #12345

      * Printer flushes remaining data
      < ----------------------------------------------------------+
         Print job terminated
        - current job state = canceled
        - submission time = 02/12/97, 15:35
        - printer state = jammed

10.14. SUBMITTING A PRINT JOB WITH A PRINTER JAM - RECOVERED

   An end-user wants to submit a print job. The print data is generated
   dynamically and is being transmitted by a printer driver on the
   client workstation as available. The client and printer are behind
   the same corporate firewall. The printer is available to anyone
   behind the firewall and no authentication and authorization is
   required. The data is pushed to the printer. The printer is not
   capable of spooling the output. The printer jams, notifies the user
   and the user clears the jam and elects to continue.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
        Here is a print job
        - job name = MyJob
        - notify me by email when done printing
        - print on iso-a4-white paper
        - print on both sides of the paper
        - return status of the printer in response
        - document is in Postscript format
        - here is the document to print

      < ----------------------------------------------------------+

Wright                        Experimental                     [Page 30]
RFC 2567             Internet Printing Design Goals           April 1999

        Print data accepted and printing started
        - job id = #12345

      < --------------------------------------------------------- +
        - Notification: printer jammed, cannot continue

      * Jam is clear by human intervention, printing continues

      +---------------------------------------------------------- >
         Here is the last part of the document to print

      < ----------------------------------------------------------+
         Print job received
        - current job state = printing
        - submission time = 02/12/97, 15:35
        - printer state = printing

10.15. SUBMITTING A PRINT JOB WITH SERVER PULL

   An end-user wants to submit a print job. The print data is in a file
   and is publicly available. It is pulled by the printer. The client
   and printer are behind the same corporate firewall. The printer is
   available to anyone behind the firewall and no authentication and
   authorization is required. The printer is capable of spooling the
   output. Printing may start before the entire job has been pulled.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
        Here is a print job

        - job name = MyJob
        - notify me by email when done printing
        - print on iso-a4-white paper
        - print on both sides of the paper
        - return status of the printer in response
        - here is a reference to the data to be printed

      < ----------------------------------------------------------+
        Print data accepted and printing started
        - job id = #12345
        - current state of job = spooled
        - submission time = 02/12/97, 13:15
        - printer state = printing

        .
        .
       < ----------------------------------------------------------+

Wright                        Experimental                     [Page 31]
RFC 2567             Internet Printing Design Goals           April 1999

        Get the file to be printed

       +---------------------------------------------------------- >
        Here it is

        Note: Failure to find the file, would end the transaction
                  with an error at this point and an asynchronous
                  notification would be send to the Client.

       < ----------------------------------------------------------+
         Data received

10.16. SUBMITTING A PRINT JOB WITH REFERENCED RESOURCES

   An end-user wants to submit a print job.  Part of the print data is
   on a file on the user's workstation. It is pushed by the client, but
   the print job requires some resource not included in the print file.
   The client and printer are behind the same corporate firewall. The
   printer is available to anyone behind the firewall and no
   authentication and authorization is required. The printer is capable
   of spooling the output. No errors occur.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
        Here is a print job
        - job name = MyJob
        - notify me by email when done printing
        - print on iso-a4-white paper
        - print on both sides of the paper
        - return status of the printer in response

      < ----------------------------------------------------------+
        Print job accepted and spooled
        - job id = #12345
        - submission time = 02/12/97, 15:35

      +---------------------------------------------------------- >
        - here is the document to print

      < ----------------------------------------------------------+
        - OK

      +---------------------------------------------------------- >
        - here is the URI to print, it is the last document.

      < ----------------------------------------------------------+
        - OK

Wright                        Experimental                     [Page 32]
RFC 2567             Internet Printing Design Goals           April 1999

       < ----------------------------------------------------------+
         Get the external resource

       +---------------------------------------------------------- >
         Here it is

10.17. GETTING CAPABILITIES

10.17.1. Submission Attributes

   An end-user wants to get the production and scheduling attributes
   that are supported or required when submitting jobs to this printer.
   The client will use these attributes when forming the subsequent
   print request.

   Client                                        IPP Printer
      +---------------------------------------------------------- >
        I'm going to submit a Postscript job
        give me your job submission attributes

      < ----------------------------------------------------------+
        Postscript production attributes for this Printer are:
        - medium-select = us-letter-white, us-legal-white
           - default is us-letter-white
           -   copies = 1,2,3,4,5
           - default is 1
                - print-quality = draft, normal, high
           - default is draft
                - sides = 1-sided, 2-sided-long-edge
           - default is 2-sided-long-edge
        - Job scheduling attributes for this Printer are:
             - job-priority = 1,2,3
           - default = 3

10.17.2. Printer Capabilities

   An end-user wants to determine the resolution, marking technology,
   and PDLs supported by the printer.

   Client                                        IPP Printer
      +---------------------------------------------------------- >
        Please tell me the
        - resolution of the printer
        - the marking technology of the printer
        - PDLs supported
      < ----------------------------------------------------------+
        Printer resolution  = 600 dpi
        Marking Technology = laser

Wright                        Experimental                     [Page 33]
RFC 2567             Internet Printing Design Goals           April 1999

        PDLs supported = Postscript level 2, PCL/6

10.18. GETTING STATUS

10.18.1. Printer State/Status

   An end-user wants to determine the state or status of the printer.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
        What is the state of the printer?

      < ----------------------------------------------------------+
        Printer state = out-of-paper

10.18.2. Job Status

   An end user wants to get the status of a job he has submitted.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
        Please tell me the status of job #12345

      < ----------------------------------------------------------+
        Job #12345 is queued
        it is number 3 in the queue
        printer state = printing

10.18.3. Status of All My Jobs

   An end user wants to get a list of all of the jobs he has submitted
   to this Printer.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
        Please tell me the status of my jobs

      < ----------------------------------------------------------+
        Job #00012 is complete
        Printed at 12:35 on 01/23/97

        Job #09876 is printing

        Job #12345 is queued
        it is number 3 in the queue

Wright                        Experimental                     [Page 34]
RFC 2567             Internet Printing Design Goals           April 1999

        Job #34567 is queued
        it is number 7 in the queue

10.19. ASYNCHRONOUS NOTIFICATION

10.19.1. Job Completion

   An end-user wants to get notification of events that affect his print
   jobs. Print job completes without error.

   Client                                        IPP Printer

      < ----------------------------------------------------------+
        Print job #123 completed

10.19.2. Job Complete with Data

   An end-user wants to get notification of events that affect his print
   jobs. Print job completes, users asked for all end of job
   information.

   Client                                        IPP Printer

      < ----------------------------------------------------------+
        Print job #123 completed
        - total pages printed = 15
        - number of copies printed = 3
        - total cost to print = $7.45
        - pick up copies in room H-6, building 005

10.19.3. Print Job Fails

   An end-user wants to get notification of events that affect his print
   jobs. Print job fails. Printer is unattended.

   Client                                        IPP Printer

      < ----------------------------------------------------------+
        Print job #123 failed
        - total pages printed = 15
        - number of pages submitted = 25
        - printer-state = jammed

Wright                        Experimental                     [Page 35]
RFC 2567             Internet Printing Design Goals           April 1999

10.20. CANCEL A JOB

   The end-user submits a print job and later decides to cancel it.

   Client                                        IPP Printer

      +---------------------------------------------------------- >
      < ----------------------------------------------------------+
        Authentication.

      +---------------------------------------------------------- >
        Cancel job #1234

      < ----------------------------------------------------------+
        Job #1234 Canceled

10.21. END TO END SCENARIO - WITHIN AN ENTERPRISE

   An office worker prints on shared departmental printers. All printers
   in the office are public, that is, no authentication or authorization
   is required. Printers are protected from external access by a
   firewall. No billing or accounting is required. Most printing is done
   from desktop applications. A help desk is provided for printing
   problems. Standard operating systems and applications are used.
   Drivers are available, but are installed manually by support
   personnel. This scenario assumes that drivers have been installed and
   that drivers are not IPP aware, that is, they cannot communicate
   across an IPP connection to obtain status and capabilities. IPP
   printers appear in application pull-down menus.  Printer
   configuration data is hard wired into the driver.

   End-user selects print from the application pull down menu. An IPP
   printer is selected from the list of Printers offered

   The driver puts up a dialogue with hard-wired set of options for this
   printer. The end-user makes choices and submits job.

   Client                                        IPP Printer
      +---------------------------------------------------------- >
        Here is a print job
        - job-name = memo-to-boss
        - notify me by email when job is complete
        - print on us-letter-white paper
        - print 1 copy
        - print at normal quality
        - print on 1 side

Wright                        Experimental                     [Page 36]
RFC 2567             Internet Printing Design Goals           April 1999

        - give me the state of the printer in response

   The driver generates the print data and passes it to the IPP driver a
   piece at a time as it is generated.

      +---------------------------------------------------------- >
        Here is the print data

      < ----------------------------------------------------------+
        Print data received, file is spooled
        - printer state = printing
        - time submitted = 2/12/97, 15:35
        - current job state = spooled

   Client adds this job to list of current jobs. List of jobs and state
   of each is available on a pull-down menu on the client.

   End-user selects job #1234 from list and clicks on it to see its
   status.

      +---------------------------------------------------------- >
        Give me the state of job #1234
        and the state of the Printer

      < ----------------------------------------------------------+
        Job #1234 state = spooled
        - it is number 3 in the queue
        - printer state = printing

   The job completes without error

      < ----------------------------------------------------------+
        Job #1234 completed
        12 of 12 pages printed

10.22. END TO END SCENARIO - ACROSS ENTERPRISES

   An office worker in Company A needs to print an office document on a
   "public" printer at Company B, a business partner. Both companies
   have corporate firewalls so the print request must flow out of A's
   firewall and into B's firewall. The office worker can look at public
   printers in Company B's directory service. The document is generated
   by a desktop application. Since the printer is "public" no
   authentication or authorization is required.  A driver is downloaded.
   The driver is IPP aware, that is, it can communicate dynamically
   through the IPP protocol layer to obtain information about the
   printer.

Wright                        Experimental                     [Page 37]
RFC 2567             Internet Printing Design Goals           April 1999

   Client                      Company B's Directory Service

   End user connects to B's Directory service

      +---------------------------------------------------------- >
        Find a Printer with these characteristics
        - public (no authorization or authentication required)
        - is in Lexington, building 004
        - prints black and white

      < ----------------------------------------------------------+
        Printer "Public-A"
        - http://www.lexmark.com/pubprinter/a

        Printer "Public-B"
        - http://www.lexmark.com/pubprinter/b

   End user selects Public-A

   Client                                           Public-A

      +---------------------------------------------------------- >
        Where can I find a driver for you?

      < ----------------------------------------------------------+
        Drivers at http://www.lexmark.com/pubprinters/a/os245

   End user gets driver and installs it on his PC.

   End-user selects print from the application pull down menu. "Public-
   A" is selected from the list of Printers offered

      +---------------------------------------------------------- >
        I'm going to submit a print job
        give me your job submission attributes

      < ----------------------------------------------------------+

        Production attributes for this Printer are:
        - medium-select = us-letter-white, us-legal-white
           - default is us-letter-white
           -   copies = 1,2,3,4,5
           - default is 1
                - print-quality = draft, normal, high
           - default is draft
                - sides = 1-sided, 2-sided-long-edge
           - default is 2-sided-long-edge

Wright                        Experimental                     [Page 38]
RFC 2567             Internet Printing Design Goals           April 1999

        Job scheduling attributes for this Printer are:
        - job-priority = 1,2,3
           default = 3

   Driver puts up dialogue with available options and fills in the
   defaults.

   End-user makes choices and submits job

      +---------------------------------------------------------- >
        Here is a print job
        - job-name = memo-to-Don-Wright
        - notify me by email when job is complete
        - print on us-letter-white paper
        - print 1 copy
        - print at normal quality
        - print on 1 side
        - give me the state of the printer in response

   The driver generates the print data and passes it to the IPP driver a
   piece at a time.

      +---------------------------------------------------------- >
        Here is the print data

      < ----------------------------------------------------------+
        Print data received, and spooling started
        print job id = #1234

        Print data received, file is spooled

        - printer state = printing
        - time submitted = 2/12/97, 15:35
        - current job state = spooled

   Client adds this job to list of current jobs.  List of jobs and state
   of each is available on a pull-down menu on the client.

   End-user selects job #1234 from list and clicks on it to see its
   status.

      +---------------------------------------------------------- >
        Give me the state of job #1234
        and the state of the Printer

      < ----------------------------------------------------------+
        Job #1234 state = spooled

Wright                        Experimental                     [Page 39]
RFC 2567             Internet Printing Design Goals           April 1999

        - it is number 3 in the queue
        - printer state = printing

       * The job completes without error
      < ----------------------------------------------------------+
        Job #1234 completed
        12 of 12 pages printed

10.23. END TO END SCENARIO - ON THE INTERNET

   An executive in her hotel room is finishing an important presentation
   on her laptop computer. She connects to a local print shop through
   the web to get a copy of her charts printed for tomorrow's
   presentation.  She must find a print shop that is convenient and can
   print color transparencies. She must download and temporarily install
   a driver in order to generate the PDL required by the print shop.
   Mutual authentication is required by the print shop and payment must
   be made in advance. The job is encrypted on the wire to prevent
   eavesdropping.

   End-user completes presentation. She goes to the web and connects to
   the SirZippy home page.

      Client                      SirZippy Directory Service
      +---------------------------------------------------------- >

        Find me a printer with these characteristics
        - Near Market Street in San Jose
        - Prints color transparencies
        - drivers can be downloaded
        - supports privacy (encryption)
        -

   Available Printers matching these characteristics are looked up in the
   Directory Service

      < ----------------------------------------------------------+

        Printer "Color-A"
        - located at 123 First Street in San Jose
        - URI is http://www.SirZippy.com/FirstStreet/Color-A
        - prints color transparencies
        - 600 dpi laser
        - driver ABC-Postscript-V1.3 available at this URI
        - cost = $.75 per page
        - authentication required to use printer
        - payment required prior to printing

Wright                        Experimental                     [Page 40]
RFC 2567             Internet Printing Design Goals           April 1999

        Printer "Color-B"
        - located at 67 San Carlos Street, San Jose
        - URI is http://www.SirZippy.com/SanCarlos/Color-B
        - prints color transparencies
        - 1200 dpi laser
        - driver XYZ-PostScript-V4.3 available at this URI
        - cost = $1.25 per page
        - authentication required to use printer
        - payment required prior to printing
        - more information at this URI

   The user decides to use the first printer because it is closer. She
   connects to the URI given to get a driver.

   Client                                         Driver URI

      +---------------------------------------------------------- >
        I need a driver for "Color-A"

      < ----------------------------------------------------------+
         Driver installer is at http://www.xerox.com/prtdrvrs

        Driver is installed

        User connects to
        "Color-A"

   Client                              IPP Printer "Color-A"

      +---------------------------------------------------------- >
      < ----------------------------------------------------------+
        Mutual authentication and exchange of secret keys

      +---------------------------------------------------------- >
        I'm going to submit a print job
        give me your job submission attributes

      < ----------------------------------------------------------+
        Production attributes for this Printer are:
        - medium-select = us-letter-white, us-legal-white
             - default is us-letter-white
        - copies = 1,2,3,4,5
             - default is 1
        - print-quality = draft, normal, high
             - default is draft
        - sides = 1-sided, 2-sided-long-edge
             - default is 2-sided-long-edge

Wright                        Experimental                     [Page 41]
RFC 2567             Internet Printing Design Goals           April 1999

        Job scheduling attributes for this Printer are:
        - job-priority = 1,2,3
           default = 3

   Driver puts up dialogue with available options and fills in the
   defaults.

   End-user makes choices and submits job

      +---------------------------------------------------------- >
         Here is a print job

        - job-name = presentation
        - notify me by email when job is complete
        - print on us-letter-transparency
        - print 1 copy
        - print at high quality
        - print by 9:00 am tomorrow morning
        - give me the state of the printer in response

   The driver generates the print data and passes it to the IPP  driver a
   piece at a time.

      +---------------------------------------------------------- >
       Here is the print data

       < ---------------------------------------------------------+
       Print data received, and spooling started
       print job id = #1234

       Print data received, file is spooled
        - printer state = printing
        - time submitted = 2/12/97, 15:35
        - current job state = held, waiting for payment

      +---------------------------------------------------------- >
      < ----------------------------------------------------------+
        Payment transaction

      < ----------------------------------------------------------+
        Job is scheduled to print, pick up after 9:00am tomorrow
        Thank you for using SirZippy

Wright                        Experimental                     [Page 42]
RFC 2567             Internet Printing Design Goals           April 1999

11.  Full Copyright Statement

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

   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.

Wright                        Experimental                     [Page 43]