Port 9100 printing: one protocol, many names
Protocols: LPR/LPD • Port 9100 • TCP/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
| Terminology | What the name actually describes |
|---|---|
| Port 9100 | The TCP port number. The one unambiguous term, which is why we prefer it |
| JetDirect | HP’s brand for its print server hardware. The industry borrowed the brand for the protocol |
| AppSocket | The 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 printing | The connection resembles a telnet session: raw bytes over a socket. Nothing to do with telnet remote login on port 23 |
| Reverse telnet | The same idea named from the sending host’s point of view — a telnet-like connection opened outward toward a printer |
| Direct socket | The mechanism: a socket opened straight to the destination, with nothing in between |
| Raw socket | The same as direct socket. “Raw” here means no protocol wrapper around the data |
| Stream printing | The data: an unframed byte stream with no beginning or end marker |
| Direct IP printing | Common in operating-system documentation for configuring a printer by address rather than by print server |
| IP print or IP printing | What RPM calls the action that sends a job to port 9100 |
| Raw TCP/IP | Common 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:
- Telnet — accepts the byte stream and hands it to a queue you nominate. Because the protocol carries no queue name, the queue is a property of the port rather than of the job. See how telnet printing works and configuring direct socket printing.
- AppSocket — does the above and also reads the PJL commands wrapped around the job, so it can extract the job name, user name and page range as metadata, and answer status queries the way a printer would. If your host expects to talk to a JetDirect printer, this is the one to use.
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.
- 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.
- 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:
- Talking to a printer vendor or reading a spec sheet — JetDirect or raw TCP/IP
- Talking about RPM’s receiving side — Telnet port or AppSocket port, matching what the interface calls them
- Talking about RPM’s sending side — IP print, matching the action name
- Describing the data rather than the transport — raw, and say so explicitly
Further reading
- What is LPR/LPD? — the other protocol cluster, with its own terminology chart
- TCP/IP printing overview — every print protocol and its port
- How network ports and protocols work in RPM — why protocols cannot share a port
- Print servers defined
