New RPM 7 Beta is now available — try the new release →

Port 9100 printing: one protocol, many names

Protocols: LPR/LPDPort 9100TCP/IP printing overview

If you have found two of our pages using different words for what looks like the same thing, you are reading correctly. Printing over TCP port 9100 has accumulated at least eleven names, and we have used most of them, because our customers arrived using the vocabulary their own vendor or host system gave them and we accommodated all of it.

This page is the map. It does not introduce a twelfth name.

The short answer

They are almost all the same thing. Open a TCP connection to port 9100, write the print data, close the connection. There is no negotiation, no queue name, no acknowledgement, and no standards document — unlike LPR/LPD, which has RFC 1179 and a defined conversation. Port 9100 printing began as Hewlett-Packard’s method for its JetDirect print servers and became a de facto standard because it is simple enough to implement in an afternoon.

Because it had no official name, everyone named it after their own end of it.

Common terms

TerminologyWhat the name actually describes
Port 9100The TCP port number. The one unambiguous term, which is why we prefer it
JetDirectHP’s brand for its print server hardware. The industry borrowed the brand for the protocol
AppSocketThe vendor-neutral name for the same protocol. Also the name of RPM’s port type that implements it, reads PJL, and can answer back
Telnet printingThe connection resembles a telnet session: raw bytes over a socket. Nothing to do with telnet remote login on port 23
Reverse telnetThe same idea named from the sending host’s point of view — a telnet-like connection opened outward toward a printer
Direct socketThe mechanism: a socket opened straight to the destination, with nothing in between
Raw socketThe same as direct socket. “Raw” here means no protocol wrapper around the data
Stream printingThe data: an unframed byte stream with no beginning or end marker
Direct IP printingCommon in operating-system documentation for configuring a printer by address rather than by print server
IP print or IP printingWhat RPM calls the action that sends a job to port 9100
Raw TCP/IPCommon on printer specification sheets, meaning the same thing

Which end are you on?

Most of the confusion in our own documentation comes from the same term being used for both directions. It helps to ask which way the job is moving.

Receiving into RPM. RPM listens on a port you add yourself; unlike the LPD listener on port 515, no port 9100 listener is created for you. RPM offers two implementations:

Sending out of RPM. The IP print action opens a connection to a host and port you specify, 9100 by default, and writes the job. Ports in the 9100–9110 range are common where one device exposes several logical printers.

So the same eleven names describe RPM receiving a job, RPM sending a job, or the printer at the far end — depending on who is talking.

The one term that is genuinely ambiguous: “raw”

Everything above is a synonym. “Raw” is not, and it is worth being careful with, because in RPM it means two unrelated things.

  1. Raw as a description of the data. The job is already in the printer’s own language, ready to print, needing no driver and no formatting. Raw data can arrive over LPD, over telnet or over AppSocket, and it can leave RPM by several routes. In this sense “raw printing” is about the bytes.
  2. Raw Printer, the name of an RPM action. This sends printer-ready data to a Windows printer through the Windows spooler. In this sense “raw printing” is about a destination, and it has nothing to do with port 9100.

The trap is that a job can be raw in the first sense and not go anywhere near the second. If someone says “we use raw printing,” the useful follow-up is whether they mean the data format or the Raw Printer action.

Our own print spooler page puts it plainly: the Raw Print name “is also used for telnet printing or direct socket printing. It’s a crazy world.”

Which term should you use?

When you can choose, say port 9100 and be understood by everyone. Otherwise:

Further reading