Открыть сервис

LPR-протокол печати и его особенности

LPR (Line Printer Remote, также известный как LPD — Line Printer Daemon) — это сетевой протокол прикладного уровня, предназначенный для передачи заданий на печать между клиентскими компьютерами и серверами печати в локальных вычислительных сетях. Протокол работает поверх TCP/IP и использует порт 515, обеспечивая постановку заданий в очередь, передачу данных и управление очередями печати. LPR является одним из старейших и наиболее распространённых протоколов сетевой печати, наряду с более современными IPP и SMB.

История

Протокол LPR был разработан в Калифорнийском университете в Беркли в 1980-х годах как часть системы BSD Unix. Изначально он предназначался для организации удалённой печати на мейнфреймах и рабочих станциях, объединённых сетью. Первоначальная спецификация была описана в RFC 1179, опубликованном в августе 1990 года. Этот документ закрепил базовые команды и форматы взаимодействия между клиентом (lpr) и сервером (lpd).

Благодаря простоте реализации и отсутствию лицензионных ограничений, протокол быстро распространился за пределы Unix-систем. В 1990-х годах поддержка LPR была включена в операционные системы Microsoft Windows (начиная с Windows 95) и macOS, что сделало его фактическим стандартом для офисной печати в гетерогенных средах. С развитием сетевых технологий и появлением более функционального протокола IPP (Internet Printing Protocol) популярность LPR снизилась, однако он продолжает поддерживаться большинством современных операционных систем и сетевых принтеров.

Архитектура и принцип работы

LPR использует клиент-серверную архитектуру. Клиентская часть (утилита lpr) запускается на компьютере пользователя, а серверная (демон lpd) работает на хосте, непосредственно подключённом к принтеру, либо на сервере печати. Взаимодействие строится на обмене текстовыми командами и бинарными данными через TCP-соединение.

Основные команды

Спецификация RFC 1179 определяет несколько базовых команд, которые клиент отправляет на сервер:

  • Команда приёма задания (Receive Job): клиент отправляет данные печати, которые сервер помещает в очередь.
  • Удаление задания (Remove Job): позволяет удалить задание из очереди по имени пользователя и номеру.
  • Показ состояния очереди (Send Queue State): запрос на получение списка заданий, ожидающих печати.
  • Показ долгого состояния (Send Long Queue State): расширенная версия предыдущей команды с дополнительной информацией о заданиях.

Каждая команда начинается с однобайтового кода, за которым следует строка параметров, завершающаяся символом перевода строки.

Формат передачи данных

При передаче задания на печать клиент устанавливает два TCP-соединения с сервером: одно для управляющего файла (control file) и второе — для файла данных (data file). Управляющий файл содержит метаданные задания: имя пользователя, имя исходного файла, название хоста-отправителя, параметры форматирования (например, количество копий) и другие атрибуты. Файл данных содержит непосредственно содержимое, подлежащее печати. После успешной передачи сервер подтверждает получение и ставит задание в очередь.

Ключевые особенности и ограничения

Протокол LPR характеризуется рядом особенностей, определяющих сферу его применения:

  • Простота реализации. Протокол не требует сложной аутентификации и шифрования. В базовой спецификации отсутствуют механизмы безопасности, что делало его удобным для использования в доверенных сетях, но уязвимым для несанкционированного доступа в публичных сетях.
  • Отсутствие обратной связи. LPR не предусматривает механизма подтверждения успешной печати клиенту. Сервер лишь уведомляет о приёме задания в очередь, но не сообщает о завершении печати или возникших ошибках.
  • Ограниченная совместимость форматов. Изначально протокол предполагал передачу данных в формате, понятном конкретному принтеру (например, PostScript или PCL). Современные реализации часто используют LPR как транспорт для универсальных форматов, таких как PDF, но это требует дополнительной настройки.
  • Отсутствие сжатия и шифрования. Данные передаются в открытом виде без сжатия, что увеличивает сетевой трафик при печати больших документов.

Применение

Несмотря на возраст, LPR продолжает использоваться в ряде сценариев:

  • Корпоративные Unix/Linux-сети. Во многих организациях, где серверы печати работают под управлением Unix-подобных систем (CUPS, LPRng), LPR остаётся основным протоколом взаимодействия.
  • Встроенные сетевые принтеры. Многие принтеры с сетевыми интерфейсами поддерживают LPR наряду с IPP для обеспечения совместимости со старым программным обеспечением.
  • Промышленные и специализированные системы. В автоматизированных системах управления и на производстве, где используется устаревшее оборудование или специализированное ПО, LPR может оставаться единственным доступным протоколом.
  • Диагностика и администрирование. Администраторы используют утилиты lpr и lpq для ручной проверки работоспособности сетевых принтеров.

Современные альтернативы

Основным конкурентом LPR является протокол IPP, разработанный консорциумом Printer Working Group в конце 1990-х годов. IPP предоставляет расширенные возможности: аутентификацию, шифрование (через TLS), двустороннюю связь, поддержку цветного профилирования и более точную передачу статуса заданий. Протокол IPP реализован в подсистеме CUPS, используемой в большинстве дистрибутивов Linux и macOS.

В средах Microsoft Windows для сетевой печати чаще применяется протокол SMB (Server Message Block), обеспечивающий общий доступ к принтерам через сетевые ресурсы. Тем не менее, Windows также поддерживает LPR в качестве опции для подключения к Unix-серверам печати.

Безопасность

Базовый протокол LPR не содержит встроенных механизмов аутентификации и шифрования. Любой клиент, имеющий доступ к порту 515, может отправить задание на печать или удалить чужие задания из очереди. Для защиты LPR-серверов применяются внешние средства: межсетевые экраны, ограничение доступа по IP-адресам, туннелирование через VPN или SSH. В современных реализациях (например, в CUPS) поддержка LPR может быть отключена по умолчанию в пользу более безопасного IPP.

Интересные факты

  • Название Line Printer Remote происходит от типа печатающих устройств — линейных принтеров, которые были распространены в момент создания протокола.
  • Порт 515, используемый LPR, закреплён за протоколом в реестре IANA и не используется другими сервисами.
  • В операционной системе Windows для подключения к LPR-принтерам используется компонент «Служба LPR», который требуется устанавливать отдельно в более старых версиях системы.

Источники

  • RFC 1179 — Line Printer Daemon Protocol
  • Материалы документации CUPS (Common UNIX Printing System)
  • Документация Microsoft TechNet по настройке служб печати

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →