Implementation
IPP is implemented using the Hypertext Transfer Protocol (HTTP) and inherits all of the HTTP streaming and security features. For example, authorization can take place via HTTP's Digest access authentication mechanism, GSSAPI, or via public key certificates. Encryption is provided using the SSL/TLS protocol-layer, either in the traditional always-on mode used by HTTPS or using the HTTP Upgrade extension to HTTP (RFC 2817). Streaming is supported using HTTP chunking.
IPP uses the traditional client-server model, with clients sending IPP request messages with the MIME media type "application/ipp" in HTTP POST requests to an IPP printer. IPP request messages consist of key/value pairs using a custom binary encoding followed by an "end of attributes" tag and any document data required for the request. The IPP response is sent back to the client in the HTTP POST response, again using the "application/ipp" MIME media type.
Among other things, IPP allows a client to:
- query a printer's capabilities
- submit print jobs to a printer
- query the status of a printer
- query the status of one or more print jobs
- cancel previously submitted jobs
IPP uses TCP with port 631 as its well-known port. IPP implementations such as CUPS also use UDP with port 631 for IPP printer discovery.
Products using the Internet Printing Protocol include, among others, CUPS which is part of Apple Mac OS X and many BSD and Linux distributions and is the reference implementation for IPP/2.0 and IPP/2.1, Novell iPrint, and Microsoft Windows, starting with MS Windows 2000. MS Windows XP and Windows Server 2003 offer IPP printing via HTTPS. MS Windows Vista, Windows 7, Windows Server 2008 and 2008 R2 also support IPP printing over RPC in the "Medium-Low" security zone. For reasons unknown Microsoft dropped support of secure IPP via SSL with MS Windows Server 2008.
Read more about this topic: Internet Printing Protocol