]> git.ipfire.org Git - thirdparty/cups.git/blame - doc/sdd.html
Added "-c" option support.
[thirdparty/cups.git] / doc / sdd.html
CommitLineData
8db62627 1<HTML>
2<HEAD>
78021ed9 3<TITLE>CUPS Software Design Description</TITLE>
6a921799 4<META NAME="AUTHOR" CONTENT="Easy Software Products">
5<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
6<META NAME="DOCNUMBER" CONTENT="CUPS-SDD-1.0">
8db62627 7</HEAD>
8<BODY>
6a921799 9<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
78021ed9 10<H1>CUPS Software Design Description</H1></A><BR>
6a921799 11CUPS-SDD-1.0<BR>
12Easy Software Products<BR>
13Copyright 1997-1999, All Rights Reserved<BR>
14</CENTER>
15<HR>
16<H1 ALIGN=CENTER><A NAME=CONTENTS>Table of Contents</A></H1>
17<BR>
18<BR><B><A HREF=#1>1 Scope</A></B>
8db62627 19<UL>
6a921799 20<LI><A HREF=#1_1>1.1 Identification</A></LI>
21<LI><A HREF=#1_2>1.2 System Overview</A></LI>
22<LI><A HREF=#1_3>1.3 Document Overview</A></LI>
8db62627 23</UL>
6a921799 24<B><A HREF=#2>2 References</A></B>
8db62627 25<UL>
6a921799 26<LI><A HREF=#2_1>2.1 CUPS Documentation</A></LI>
27<LI><A HREF=#2_2>2.2 Other Documents</A></LI>
8db62627 28</UL>
6a921799 29<B><A HREF=#3>3 Design Overview</A></B>
30<UL>
31<LI><A HREF=#3_1>3.1 Backends</A></LI>
8db62627 32<UL>
6a921799 33<LI><A HREF=#3_1_1>3.1.1 ipp</A></LI>
34<LI><A HREF=#3_1_2>3.1.2 lpd</A></LI>
35<LI><A HREF=#3_1_3>3.1.3 parallel</A></LI>
36<LI><A HREF=#3_1_4>3.1.4 serial</A></LI>
78021ed9 37<LI><A HREF=#3_1_5>3.1.5 socket</A></LI>
8db62627 38</UL>
6a921799 39<LI><A HREF=#3_2>3.2 Berkeley Commands</A></LI>
8db62627 40<UL>
6a921799 41<LI><A HREF=#3_2_1>3.2.1 lpc</A></LI>
42<LI><A HREF=#3_2_2>3.2.2 lpr</A></LI>
43<LI><A HREF=#3_2_3>3.2.3 lprm</A></LI>
8db62627 44</UL>
6a921799 45<LI><A HREF=#3_3>3.3 CGI</A></LI>
46<UL>
78021ed9 47<LI><A HREF=#3_3_1>3.3.1 classes.cgi</A></LI>
48<LI><A HREF=#3_3_2>3.3.2 jobs.cgi</A></LI>
49<LI><A HREF=#3_3_3>3.3.3 printers.cgi</A></LI>
6a921799 50</UL>
51<LI><A HREF=#3_4>3.4 CUPS Interface Library</A></LI>
52<UL>
53<LI><A HREF=#3_4_1>3.4.1 Convenience Functions</A></LI>
54<LI><A HREF=#3_4_2>3.4.2 HTTP Functions</A></LI>
55<LI><A HREF=#3_4_3>3.4.3 IPP Functions</A></LI>
56<LI><A HREF=#3_4_4>3.4.4 Language Functions</A></LI>
57<LI><A HREF=#3_4_5>3.4.5 MIME Functions</A></LI>
58<LI><A HREF=#3_4_6>3.4.6 PPD Functions</A></LI>
59<LI><A HREF=#3_4_7>3.4.7 Raster Functions</A></LI>
60</UL>
61<LI><A HREF=#3_5>3.5 Filters</A></LI>
62<UL>
63<LI><A HREF=#3_5_1>3.5.1 hpgltops</A></LI>
64<LI><A HREF=#3_5_2>3.5.2 imagetops</A></LI>
78021ed9 65<LI><A HREF=#3_5_3>3.5.3 imagetoraster</A></LI>
66<LI><A HREF=#3_5_4>3.5.4 pstops</A></LI>
67<LI><A HREF=#3_5_5>3.5.5 pstoraster</A></LI>
68<LI><A HREF=#3_5_6>3.5.6 rastertohp</A></LI>
69<LI><A HREF=#3_5_7>3.5.7 texttops</A></LI>
6a921799 70</UL>
71<LI><A HREF=#3_6>3.6 Scheduler</A></LI>
72<UL>
73<LI><A HREF=#3_6_1>3.6.1 Authorization</A></LI>
74<LI><A HREF=#3_6_2>3.6.2 Classes</A></LI>
75<LI><A HREF=#3_6_3>3.6.3 Client</A></LI>
76<LI><A HREF=#3_6_4>3.6.4 Configuration</A></LI>
77<LI><A HREF=#3_6_5>3.6.5 Directory Services</A></LI>
78<LI><A HREF=#3_6_6>3.6.6 IPP</A></LI>
79<LI><A HREF=#3_6_7>3.6.7 Jobs</A></LI>
78021ed9 80<LI><A HREF=#3_6_8>3.6.8 Logging</A></LI>
81<LI><A HREF=#3_6_9>3.6.9 Main</A></LI>
82<LI><A HREF=#3_6_10>3.6.10 Printers</A></LI>
6a921799 83</UL>
84<LI><A HREF=#3_7>3.7 System V Commands</A></LI>
85<UL>
86<LI><A HREF=#3_7_1>3.7.1 accept</A></LI>
87<LI><A HREF=#3_7_2>3.7.2 cancel</A></LI>
88<LI><A HREF=#3_7_3>3.7.3 disable</A></LI>
89<LI><A HREF=#3_7_4>3.7.4 enable</A></LI>
90<LI><A HREF=#3_7_5>3.7.5 lp</A></LI>
91<LI><A HREF=#3_7_6>3.7.6 lpadmin</A></LI>
92<LI><A HREF=#3_7_7>3.7.7 lpstat</A></LI>
93<LI><A HREF=#3_7_8>3.7.8 reject</A></LI>
94</UL>
95</UL>
78021ed9 96<B><A HREF=#4>A Glossary</A></B>
6a921799 97<UL>
78021ed9 98<LI><A HREF=#4_1>A.1 Terms</A></LI>
99<LI><A HREF=#4_2>A.2 Acronyms</A></LI>
6a921799 100</UL>
101<HR>
102<H1><A NAME=1>1 Scope</A></H1>
103<H2><A NAME=1_1>1.1 Identification</A></H2>
104 This software design description document provides detailed
105information on the architecture and coding of the Common UNIX Printing
106System (&quot;CUPS&quot;) Version 1.0.
107<H2><A NAME=1_2>1.2 System Overview</A></H2>
108 The Common UNIX Printing System provides a portable printing layer for
109 UNIX&reg; operating systems. It has been developed by Easy Software
110 Products to promote a standard printing solution for all UNIX vendors
111 and users. CUPS provides the System V and Berkeley command-line
112interfaces.
113<P>CUPS uses the Internet Printing Protocol (IETF-IPP) as the basis for
114managing print jobs and queues. The Line Printer Daemon (LPD, RFC1179),
115Server Message Block (SMB), and AppSocket protocols are also supported
116with reduced functionality. </P>
117<P>CUPS adds network printer browsing and PostScript Printer
118Description (&quot;PPD&quot;)-based printing options to support real world
119applications under UNIX. </P>
41f765f4 120<P>CUPS also includes a customized version of GNU GhostScript
121(currently based off GNU GhostScript 4.03) and an image file RIP that
122can be used to support non-PostScript printers. </P>
6a921799 123<H2><A NAME=1_3>1.3 Document Overview</A></H2>
124 This software design description document is organized into the
125 following sections:
126<UL>
127<LI>1 - Scope </LI>
128<LI>2 - References </LI>
129<LI>3 - Design Overview </LI>
6a921799 130<LI>A - Glossary </LI>
131</UL>
132<H1><A NAME=2>2 References</A></H1>
133<H2><A NAME=2_1>2.1 CUPS Documentation</A></H2>
134 The following CUPS documentation is referenced by this document:
135<UL>
136<LI>CUPS-CMP-1.0: CUPS Configuration Management Plan </LI>
137<LI>CUPS-IDD-1.0: CUPS System Interface Design Description </LI>
138<LI>CUPS-SAM-1.0.x: CUPS Software Administrators Manual </LI>
139<LI>CUPS-SDD-1.0: CUPS Software Design Description </LI>
140<LI>CUPS-SPM-1.0: CUPS Software Programming Manual </LI>
141<LI>CUPS-SSR-1.0: CUPS Software Security Report </LI>
142<LI>CUPS-STP-1.0: CUPS Software Test Plan </LI>
143<LI>CUPS-SUM-1.0.x: CUPS Software Users Manual </LI>
144<LI>CUPS-SVD-1.0.x: CUPS Software Version Description </LI>
145</UL>
146<H2><A NAME=2_2>2.2 Other Documents</A></H2>
147 The following non-CUPS documents are referenced by this document:
148<UL>
149<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
150<LI>IPP/1.0: Additional Optional Operations - Set 1 </LI>
6a921799 151<LI>RFC 1179, Line Printer Daemon Protocol </LI>
78021ed9 152<LI>RFC 2565, IPP/1.0: Encoding and Transport </LI>
153<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
154<LI>RFC 2639, IPP/1.0: Implementers Guide </LI>
6a921799 155</UL>
156<H1><A NAME=3>3 Design Overview</A></H1>
157 CUPS is composed of 7 software sub-systems that operate together to
158 perform common printing tasks:
159<UL>
160<LI>Backends </LI>
161<LI>Berkeley Commands </LI>
162<LI>CGI </LI>
163<LI>CUPS Interface Library </LI>
164<LI>Filters </LI>
165<LI>Scheduler </LI>
166<LI>System V Commands </LI>
167</UL>
168<H2><A NAME=3_1>3.1 Backends</A></H2>
169 The backends implement communications over a number of different
170interfaces. All backends are called with a common set of arguments:
171<UL>
172<LI>Device URI - the Uniform Resource Identifier for the output device
173 (e.g. <CODE>parallel:/dev/plp</CODE>, <CODE>ipp://hostname/resource</CODE>
174). </LI>
175<LI>Job Identifier - the job identifier for this job (integer). </LI>
176<LI>User Name - the user associated with this job (name string). </LI>
177<LI>Title - the title/job-name associated with this job (name string). </LI>
178<LI>Copies - the number of copies required (integer). </LI>
179<LI>Options - the options associated with this job (space separated
180 option strings). </LI>
181<LI>Filename (optional) - the file to print; if this option is not
182 specified, the backend must read the print file from the standard
183 input. </LI>
184</UL>
185 Backends are named using the method of the URI, so a URI of
186&quot;ipp://hostname/resource&quot; would be processed by the &quot;ipp&quot; backend.
187<H3><A NAME=3_1_1>3.1.1 ipp</A></H3>
188 The ipp backend sends the specified job to a network printer or host
189using the Internet Printing Protocol. The URI is as specified by the <CODE>
190printer-uri-supported</CODE> attribute from the printer or host.
191<H3><A NAME=3_1_2>3.1.2 lpd</A></H3>
192 The lpd backend sends the specified job to a network printer or host
193using the Line Printer Daemon protocol. The URI is of the form:
194<UL>
195<PRE>lpd://hostname/queue
196</PRE>
197</UL>
198<H3><A NAME=3_1_3>3.1.3 parallel</A></H3>
199 The parallel backend sends the specified job to a local printer
200connected via the specified parallel port device. The URI is of the
201form:
202<UL>
203<PRE>parallel:/dev/file
204</PRE>
205</UL>
206<H3><A NAME=3_1_4>3.1.4 serial</A></H3>
207 The serial backend sends the specified job to a local printer
208connected via the specified serial port device. The URI is of the
209form:
210<UL>
211<PRE>serial:/dev/file?option[+option+...]
212</PRE>
213</UL>
214 The options can be any combination of the following:
215<UL>
216<LI><CODE>baud=<I>rate</I></CODE> - Sets the baud rate for the device. </LI>
217<LI><CODE>bits=<I>7 or 8</I></CODE> - Sets the number of data bits. </LI>
218<LI><CODE>parity=<I>even</I></CODE> - Sets even parity checking. </LI>
219<LI><CODE>parity=<I>odd</I></CODE> - Sets odd parity checking. </LI>
220<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off. </LI>
221</UL>
78021ed9 222<H3><A NAME=3_1_5>3.1.5 socket</A></H3>
6a921799 223 The socket backend sends the specified job to a network host using the
224AppSocket protocol commonly used by Hewlett-Packard and Tektronix
225printers. The URI is of the form:
226<UL>
227<PRE>socket://hostname[:port]
228</PRE>
229</UL>
230 The default port number is 9100.
231<H2><A NAME=3_2>3.2 Berkeley Commands</A></H2>
232 The Berkeley commands provide a simple command-line interface to CUPS
233to submit and control print jobs. It is provided for compatibility with
78021ed9 234existing software that is hard coded to use the Berkeley commands.
6a921799 235<H3><A NAME=3_2_1>3.2.1 lpc</A></H3>
236 The lpc command allows users and administrators to check the status
237and control print queues. The version provided with CUPS supports the
238following commands:
239<UL>
78021ed9 240<LI>quit - Quits the lpc command. </LI>
6a921799 241<LI>status - Shows the status of printers and jobs in the queue. </LI>
6a921799 242</UL>
243<H3><A NAME=3_2_2>3.2.2 lpr</A></H3>
244 The lpr command submits a job for printing. The CUPS version of lpr
78021ed9 245silently ignores the &quot;i&quot;, &quot;t&quot;, &quot;m&quot;, &quot;h&quot;, and &quot;s&quot; options.
6a921799 246<H3><A NAME=3_2_3>3.2.3 lprm</A></H3>
247 The lprm removes one or more print jobs.
248<H2><A NAME=3_3>3.3 CGI</A></H2>
249 The Common Gateway Interface (CGI) programs provide a web-based status
250interface to monitor the status of printers, classes, and jobs.
78021ed9 251<H3><A NAME=3_3_1>3.3.1 classes.cgi</A></H3>
6a921799 252 The classes CGI lists the available printer classes and any pending
253jobs for the class. The user can click on individual classes to limit
254the display and click on jobs to see the job status.
78021ed9 255<H3><A NAME=3_3_2>3.3.2 jobs.cgi</A></H3>
6a921799 256 The jobs CGI lists the queued print jobs in order of priority. The
257list can be limited by printer or job. When the user displays the
258status of an individual print job all job options are displayed.
78021ed9 259<H3><A NAME=3_3_3>3.3.3 printers.cgi</A></H3>
6a921799 260 The printers CGI lists the available printer queues and any pending
261jobs for the printer. The user can click on individual printers to
262limit the display and click on jobs to see the job status.
263<H2><A NAME=3_4>3.4 CUPS Interface Library</A></H2>
264 The CUPS interface library provides common convenience, HTTP, IPP,
265language, MIME, PPD, and raster functions used by the CUPS software.
266<H3><A NAME=3_4_1>3.4.1 Convenience Functions</A></H3>
267 Convenience functions are provided to submit an IPP request, send a
78021ed9 268print file, cancel a job, get a list of available printers, get a list
269of available classes, get the default printer or class, get the default
270server name, get the local username, and get a password string.
6a921799 271<H3><A NAME=3_4_2>3.4.2 HTTP Functions</A></H3>
272 The HTTP functions provide functions to connect to HTTP servers, issue
273requests, read data from a server, and write data to a server.
274<H3><A NAME=3_4_3>3.4.3 IPP Functions</A></H3>
275 The IPP function provide functions to manage IPP request data and
276attributes, read IPP responses from a server, and write IPP requests to
277a server.
278<H3><A NAME=3_4_4>3.4.4 Language Functions</A></H3>
279 The language functions provide a standard interface for retrieving
280common textual messages for a particular locale and determining the
281correct encoding (e.g. US ASCII, ISO-8859-1, etc.)
282<H3><A NAME=3_4_5>3.4.5 MIME Functions</A></H3>
283 The Multimedia Internet Mail Exchange functions manage a MIME type and
284conversion database that supports file typing by extension and content,
285and least-cost file filtering from a source to a destination file type.
286<H3><A NAME=3_4_6>3.4.6 PPD Functions</A></H3>
287 The PostScript Printer Description functions manage PPD files, select
288options, check for option conflicts, and emit selected options in the
289correct order.
290<H3><A NAME=3_4_7>3.4.7 Raster Functions</A></H3>
291 The raster functions manage streams of CUPS raster data (described in
292the Interface Design Document) used by non-PostScript printer drivers.
293<H2><A NAME=3_5>3.5 Filters</A></H2>
294 The filters implement file conversion services for CUPS. All filters
295are called with a common set of arguments:
296<UL>
297<LI>Printer name - the name of the destination printer (name string). </LI>
298<LI>Job Identifier - the job identifier for this job (integer). </LI>
299<LI>User Name - the user associated with this job (name string). </LI>
300<LI>Title - the title/job-name associated with this job (name string). </LI>
301<LI>Copies - the number of copies required (integer). </LI>
302<LI>Options - the options associated with this job (space separated
303 option strings). </LI>
304<LI>Filename (optional) - the file to print; if this option is not
305 specified, the filter must read the input file from the standard
306 input. </LI>
307</UL>
308 Filters are added to the MIME conversion data file and implement all
309necessary conversions from one file type to another.
310<H3><A NAME=3_5_1>3.5.1 hpgltops</A></H3>
311 The hpgltops filter converts HP-GL/2 files into PostScript.
312<H3><A NAME=3_5_2>3.5.2 imagetops</A></H3>
313 The imagetops filter converts image files into PostScript.
78021ed9 314<H3><A NAME=3_5_3>3.5.3 imagetoraster</A></H3>
315 The imagetoraster filter converts image files into CUPS raster data.
316<H3><A NAME=3_5_4>3.5.4 pstops</A></H3>
6a921799 317 The pstops filter inserts printer-specific commands from PPD files and
318performs page filtering as requested by the user.
78021ed9 319<H3><A NAME=3_5_5>3.5.5 pstoraster</A></H3>
320 The pstoraster filter converts PostScript program data into CUPS
321raster data.
322<H3><A NAME=3_5_6>3.5.6 rastertohp</A></H3>
323 The rastertohp filter handles converting CUPS raster data to HP PCL
324and supports both color and black-and-white printers.
325<H3><A NAME=3_5_7>3.5.7 texttops</A></H3>
6a921799 326 The texttops filter converts text files into PostScript.
327<H2><A NAME=3_6>3.6 Scheduler</A></H2>
78021ed9 328 The scheduler is a fully-functional HTTP/1.1 and IPP/1.0 server that
329manages the printers, classes, and jobs in the system. It also handles
330a simple broadcast-based directory service so that remote print queues
331and classes can be accessed transparently from the local system.
6a921799 332<H3><A NAME=3_6_1>3.6.1 Authorization</A></H3>
333 The authorization module is responsible for performing access control
334and authentication for all HTTP and IPP requests entering the system.
335<H3><A NAME=3_6_2>3.6.2 Classes</A></H3>
336 The classes module is responsible for managing printer classes in the
337system. Each class is a collection of local and/or remote printers.
338 The classes module also reads and writes the classes configuration
339file.
340<H3><A NAME=3_6_3>3.6.3 Client</A></H3>
341 The client module is responsible for all HTTP client communications.
342 It handles listening on selected interfaces, accepting connections
343from prospective clients, processing incoming HTTP requests, and
344sending HTTP responses to those requests. The client module also is
345responsible for executing the external CGI programs as needed to
346support web-based printer, class, and job status monitoring.
347<P>Once authorized, all IPP requests are sent to the IPP module. </P>
348<H3><A NAME=3_6_4>3.6.4 Configuration</A></H3>
349 The configuration module is responsible for reading the CUPS
350configuration file and initializing the appropriate data structures and
351values. The configuration module also stops CUPS services before
352reading the configuration file and restarts them after the
353configuration file has been read.
354<H3><A NAME=3_6_5>3.6.5 Directory Services</A></H3>
355 The directory services module sends and recieves printer state
356information over a broadcast socket. Remote printers and classes are
357automatically added to or removed from the local printer and class
358lists as needed.
359<P>The directory services module can only recieve printer state
360information over a single UDP port, however it can broadcast to
361multiple addresses and ports as needed. </P>
362<H3><A NAME=3_6_6>3.6.6 IPP</A></H3>
363 The IPP module handles IPP requests and acts accordingly. URI
364validation is also performed here, as a client can post IPP data to any
78021ed9 365URI on the server which might sidestep the access control or
366authentication of the HTTP server.
6a921799 367<H3><A NAME=3_6_7>3.6.7 Jobs</A></H3>
368 The jobs module manages print jobs, starts filter and backend
369processes for jobs to be printed, and monitors status messages from
370those filters and backends.
78021ed9 371<H3><A NAME=3_6_8>3.6.8 Logging</A></H3>
372 The logging module manages the access, error, and page log files that
373are generated by the scheduler.
374<H3><A NAME=3_6_9>3.6.9 Main</A></H3>
6a921799 375 The main module is responsible for timing out and dispatching input
376and output for client connections. It also watches for incoming <CODE>
78021ed9 377SIGHUP</CODE> and <CODE>SIGCHLD</CODE> signals, reloads the server
378configuration files as needed, and handles child process errors and
379exits.
380<H3><A NAME=3_6_10>3.6.10 Printers</A></H3>
6a921799 381 The printers module is responsible for managing printers and PPD files
382in the system. The printers module also reads and writes the printers
383configuration file.
384<H2><A NAME=3_7>3.7 System V Commands</A></H2>
385 The System V commands provide a robust command-line interface to CUPS
78021ed9 386to submit and control printers and jobs.
6a921799 387<H3><A NAME=3_7_1>3.7.1 accept</A></H3>
388 The accept command tells the scheduler to accept new jobs for specific
389printers.
390<H3><A NAME=3_7_2>3.7.2 cancel</A></H3>
391 The cancel command tells the scheduler to cancel one or more jobs that
392are queued for printing.
393<H3><A NAME=3_7_3>3.7.3 disable</A></H3>
394 The disable command tells the scheduler to stop printing jobs on the
395specified printers.
396<H3><A NAME=3_7_4>3.7.4 enable</A></H3>
397 The enable command tells the scheduler to start printing jobs on the
398specified printers.
399<H3><A NAME=3_7_5>3.7.5 lp</A></H3>
400 The lp command submits submits files for printing. Unlike the
401standard System V lp command, a single CUPS lp command will generate a
402separate job ID for each file that is printed. Also, the Solaris &quot;f&quot;,
403&quot;H&quot;, &quot;P&quot;, &quot;S&quot;, and &quot;y&quot; options are silently ignored.
404<H3><A NAME=3_7_6>3.7.6 lpadmin</A></H3>
405 The lpadmin command manages printer queues and classes. The Solaris
406&quot;A&quot;, &quot;F&quot;, &quot;I&quot;, &quot;M&quot;, &quot;P&quot;, &quot;Q&quot;, &quot;S&quot;, &quot;T&quot;, &quot;U&quot;, &quot;W&quot;, &quot;f&quot;, &quot;l&quot;, &quot;m&quot;, &quot;o&quot;,
407&quot;s&quot;, &quot;t&quot;, and &quot;u&quot; options are not supported, and new options &quot;P&quot; (PPD
78021ed9 408file), &quot;F&quot; (filter), and &quot;E&quot; (enable and accept) are provided to
409configure CUPS-specific features such as PPD file and conversion
410filters.
6a921799 411<H3><A NAME=3_7_7>3.7.7 lpstat</A></H3>
412 The lpstat command lists printers, classes, and jobs as requested by
413the user.
414<H3><A NAME=3_7_8>3.7.8 reject</A></H3>
415 The reject command tells the scheduler not to accept new jobs for
416specific printers.
78021ed9 417<H1 TYPE=A VALUE=1><A NAME=4>A Glossary</A></H1>
418<H2><A NAME=4_1>A.1 Terms</A></H2>
6a921799 419<DL>
420<DT>C </DT>
421<DD>A computer language. </DD>
422<DT>parallel </DT>
423<DD>Sending or receiving data more than 1 bit at a time. </DD>
424<DT>pipe </DT>
425<DD>A one-way communications channel between two programs. </DD>
426<DT>serial </DT>
427<DD>Sending or receiving data 1 bit at a time. </DD>
428<DT>socket </DT>
429<DD>A two-way network communications channel. </DD>
430</DL>
78021ed9 431<H2><A NAME=4_2>A.2 Acronyms</A></H2>
8db62627 432<DL>
6a921799 433<DT>ASCII </DT>
434<DD>American Standard Code for Information Interchange </DD>
435<DT>CUPS </DT>
436<DD>Common UNIX Printing System </DD>
437<DT>ESC/P </DT>
438<DD>EPSON Standard Code for Printers </DD>
439<DT>FTP </DT>
440<DD>File Transfer Protocol </DD>
441<DT>HP-GL </DT>
442<DD>Hewlett-Packard Graphics Language </DD>
443<DT>HP-PCL </DT>
444<DD>Hewlett-Packard Printer Control Language </DD>
445<DT>HP-PJL </DT>
446<DD>Hewlett-Packard Printer Job Language </DD>
447<DT>IETF </DT>
448<DD>Internet Engineering Task Force </DD>
449<DT>IPP </DT>
450<DD>Internet Printing Protocol </DD>
451<DT>ISO </DT>
452<DD>International Standards Organization </DD>
453<DT>LPD </DT>
454<DD>Line Printer Daemon </DD>
455<DT>MIME </DT>
456<DD>Multimedia Internet Mail Exchange </DD>
457<DT>PCL </DT>
458<DD>Page Control Language </DD>
459<DT>PPD </DT>
460<DD>PostScript Printer Description </DD>
461<DT>SMB </DT>
462<DD>Server Message Block </DD>
463<DT>TFTP </DT>
464<DD>Trivial File Transfer Protocol </DD>
8db62627 465</DL>
466</BODY>
467</HTML>