Defining Print Servers
A print server is a computer program or a hardware device that client applications send print jobs to. Print servers generally support one or more TCP/IP print protocols. Common print protocols include:
- LPR/LPD (also known as line printer protocol) documented in RFC 1179
- telnet or stream (usually using port 9100, common with HP printers)
- IPP, Internet Print Protocol, documented in a series of RFCs
- Microsoft print protocol (scantly documented), used with Windows shared printers
Client applications which send print jobs to print servers can be on nearly any computer platform in existence today, from IBM business systems such as mainframes or System i (also known as AS/400 or iSeries); Linux distributions; HP 3000 and HP 9000 systems; commercial Unix implementations such as Solaris, AIX and HP/UX; Mac OS/X; and Windows systems. The current generation of smart phones such as iPhones and Google Android phones can send print jobs to a print server, using proprietary protocols.
There is no one “right” print protocol. The LPR/LPD protocol is very widely implemented; for that reason many systems offer an LPR print client. IPP was developed by printer vendors as an answer to the deficiencies of LPR/LPD and to establish a growth path that addressed modern printing requirements including security, job status and printer feature capability.
Why use a print server?
If your application can print directly to your printer, there is no reason to use a print server. So, you would use a print server to get functions you can’t get from your printer.
Common reasons to use a print server include:
- You can’t reach the printer on your network.
- The printer is busy, and you need to spool or risk losing your print jobs.
- You need to tweak the print job.
- You need functions the printer doesn’t support.
The first reason, availability and connectivity, is not as common these days with even cheap USB printers typically supporting TCP/IP. However, hardware print servers usually support a multitude of networks, so they may make sense for many applications.
The second reason, spooling, is often the justification to use a software print server. Hardware print servers often do not spool or are not as cost effective as a general purpose computer which already has available disk.
Some hardware print servers support data translations, such as changing line endings from Unix style to Windows style, or EBCDIC to ASCII translation. However, for extensive data translations, many choose a software print server. It is easier to talk to your vendor about adding a software translation then it is to get an upgrade for your hardware print server.
Finally, if you wanted to do something with your print jobs besides print them, perhaps, archive to disk or send as an email attachment, then you are probably looking at a software print server.
However, there are so many products on the market, any of the points above could be overturned by the next product announcement or Web search.
We will explore four categories of print servers ordered by the complexity of printing support they are likely to offer. At the top are the solutions best suited for basic printing needs. The farther down you go, the more “out of the box” capabilities and flexibility you will find.
Categories of print servers
The four categories of print servers examined here include:
A hardware print server is typically a basic device with a network connector and a USB or parallel connector for a printer. This print server typically has a built-in Web server for configuration and online help.
Also, hardware print server typically does not spool unless it has a disk.
The JetDirect from Hewlett Packard is a widely used, high performing print server. The following is from the spec sheet for the HP JetDirect 300x print server series, which happened to be the first paid search on the day this was written.
Protocols supported: TCP/IP, IPX/SPX, AppleTalk, IP Direct Mode, LPD, FTP Printing, IPP, Netware NDS, Bindery, NDPS, iPrint, Telnet, SLP, IGMP, BOOTP/DHCP, WINS, SNMP, HTTP
Of these: LPD, FTP, IPP and Telnet are actual print protocols. iPrint is used with IPP and Netware. IPX/SPX and AppleTalk are network protocols along with TCP/IP. SLP (Service Location Protocol) is used to advertise that this printer is available. BOOTP (Bootstrap Protocol) and DHCP (Dynamic Host Configuration Protocol) are used for configuration. SNMP (Simple Network Management Protocol) is used for monitoring the printer status. HTTP is used because the print server has a built in Web server, for configuration and status. NDS, Bindery and NDPS are used with Netware.
Also from the same spec sheet:
Supported printers: Any network-capable printer with an IEEE-1284 compliant parallel port and a compatible network driver. Note: printer must support printing an HP Jetdirect configuration page using the HP PCL, HP/GL-2, ASCII, or PostScript printer languages.
The JetDirect print server packs a lot of capability, but it requires that the printer it is attached to be compatible with HP printer languages, plain text or PostScript. It serves a very broad range but is not entirely general purpose.
Note that the application still has to generate the right codes to drive the printer. The hardware print server doesn’t provide relief from that rule.
Hardware print servers tend to specialize in supporting one or more manufacturers line of printers. A general purpose hardware print server rarely supports specialized printers.
The advantage of hardware print servers is that they are very fast and usually not very expensive. The disadvantage is that they are best used if your printing is very typical, “in the box” so to speak.
The terms “Windows print server” and “Windows shared printer” are usually synonymous. We’ll get to the difference below. A Windows print server is configured through the normal Windows administration tools.
Here’s a brief introduction to Windows printing. Applications print in Windows the same way they write to the screen: they print to Windows. That is, Windows provides a way to select a font, write some text, do graphics and colors, etc. You never worry about your application's compatibility with your Windows monitor. It’s the same with the printer.
Windows, on the other hand, requires a driver from the printer vendor to produce the right codes for the printer. It’s a matter of simple economics: in order to sell a printer you need to provide a driver for it.
The difference between a shared printer in Windows, and a local printer, is that the local printer is attached to your computer while the shared printer is on another Windows computer. This is the most useful when you are sharing a printer among a number of users. For instance, it’s less disruptive to come up with a spare computer to drive several printers than it is to have people printing on your desktop printer through the day.
Technically, the computer that drives the “shared” printer is also a print server. However, the term “Windows print server” also encompasses the idea of printer pools, where you have several compatible printers which can be used interchangeably. This is similar to the hardware print sever with more than one printer connection. When it comes to which printer will print a given job, it’s up to the print server to make that determination.
The advantage of Windows printing is that it supports a very wide variety of both general and specialized printers, and it does this reasonably well. The disadvantage, besides not being very fast, is that it can be quirky to maintain due to user permissions, software idiosyncrasies, etc. Also, Windows defines it’s own “box” so unusual printing situations are not normally handled well by Windows, without third party software.
Print servers have their origin in the world of Unix printing. There are Internet RFCs on TCP/IP printing that go back at least as far as 1972. (With permission, we’ll call it “Unix” since print servers in that environment predate both GNU and Linux).
Historically, Unix print servers supported these print protocols: LPD, FTP and Telnet. IPP is a more recent addition since 1999.
At its core, a Unix print server listens on a well known port (so clients can find it) and supports a number of named queues. When the client prints, it specifies which queue it wants to use.
The queue names are defined by the print server; therefore, you need to know in advance which queue you want to use. They are sometimes referred to as “printers” although the actual printers are only referenced by the print server, not defined by it as in Windows.
The print server typically is configured through a Web portal or an administrator privileged program. In older days one would edit a text configuration file, then figure out the hard way why some queues were no longer defined.
One of the strengths of Unix is the vast number of text processing tools available. The Unix print server model incorporates these as filters. You can set up a print queue to process the print job through one or more of these filters before they are ultimately sent to an actual print device.
A simple illustration: print a PostScript file on an HP LaserJet 4, which is not PostScript capable. The steps to perform this:
- download, build and install the freely available “ghostscript” program
- convert a sample PostScript file to LaserJet 4 codes, send those to the printer, make sure you understand the correct command line options and test that the program is working as you expect
- review the manual pages on the print server configuration
- create a queue definition in the print server configuration file to process files through ghostscript on the way to the printer
- try to print a sample PostScript file to the printer, get frustrated when the definition doesn’t exist, take a walk, get a drink of water
- remember to restart the print server so it re-reads the definition you created
- proudly show your co-workers the PostScript manual they asked for, printed in stunning resolution on their venerable printer
A bright programmer or admin can accomplish the above in under an hour; a real Unix guru, probably five minutes or less. True Unix skills are more a matter of using existing tools in creative ways. It is literally possible to convert any kind of data, using one or a dozen Unix filters, into a standard printer language. Consequently, you can--with the right skill set--configure a queue on a Unix print server to print your specific data to your specific printer.
The advantage of a Unix print server is the nearly unlimited flexibility in printing support; and of course many Unix distributions are free, and others provide decent support at a reasonable price. The disadvantage is that you need to find someone with the skills, and find the tools, to do what you need. Obviously, the more ordinary your print requirements, the more likely it is you can do what you need with GUI or Web configuration tools.
Software print servers come in 3 categories:
- simplistic LPD programs which map a queue to a Windows printer
- comprehensive LPD print programs which offer a variety of data transformations and methods of printing, plus non-print options including “print to email” and “print to disk”
- LPD print server which is merely a way to introduce print jobs into a much larger system
The first category is not much different from a hardware print server. You could expect to pay under $100 USD for software in this category.
The more full featured LPD print program should support unlimited print queues, provide for extensive tailoring of your print jobs, options to convert from a number of data formats to a number of other data formats, plus reprint. The RPM Remote Print Manager product also adds the ability to run a “filter” program, like the Unix print server. On Windows platforms it’s more common to use a custom application in place of a filter, and not actually print. However, the option is certainly there and RPM offers built in programs for translating PCL to PDF and other image formats.
Programs in this category might run between $200 to $800, possibly one thousand.
The last category, the LPD print server which is simply a bridge to a larger system, is priced as part of an extensive data transformation and archiving system which could cost anywhere from $15,000 to $30,000. Examples include Solimar.
The advantage of a software print server is that you can find a tool of nearly any capability (from low to sophisticated), and if the tool has vendor support, then you could find a system that will grow with your organizations needs. The disadvantage of a software print server is that it's easy to underestimate your company’s needs, or to purchase far more than you really need.