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

LPD

LPD (от англ. Line Printer Daemon) — протокол прикладного уровня сетевой модели OSI, предназначенный для управления печатью в компьютерных сетях. Протокол реализует передачу заданий на печать от клиентских компьютеров к серверу печати (принтеру или специализированному устройству) и обратную передачу статуса очереди. LPD является одним из старейших и наиболее распространённых протоколов печати в Unix-подобных операционных системах, а также поддерживается большинством современных сетевых принтеров.

История

Протокол LPD был разработан в начале 1980-х годов в Калифорнийском университете в Беркли для операционной системы BSD Unix. Первоначально он предназначался для организации печати на удалённых принтерах в локальных сетях, где основным транспортным протоколом выступал TCP/IP. В 1990 году протокол был стандартизирован в документе RFC 1179 «Line Printer Daemon Protocol», который закрепил его спецификацию и порядок взаимодействия между клиентом и сервером.

С распространением персональных компьютеров и сетей Ethernet протокол LPD стал использоваться не только в Unix-среде, но и в операционных системах Microsoft Windows (через службу печати TCP/IP), а также в сетевых принтерах и многофункциональных устройствах (МФУ). В 2000-х годах на смену LPD стали приходить более современные протоколы, такие как IPP (Internet Printing Protocol), однако LPD сохраняет совместимость с большим числом устаревших устройств и используется в корпоративных и промышленных сетях.

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

Протокол LPD работает по схеме «клиент-сервер». Сервером выступает демон печати (line printer daemon), который постоянно ожидает входящие соединения на порту TCP 515. Клиент (пользовательский компьютер или другое устройство) отправляет запросы на этот порт, используя команды, определённые в RFC 1179.

Команды протокола

LPD определяет несколько типов команд, каждая из которых имеет свой код:

  • 01 — Start Job — начало задания на печать. Клиент передаёт идентификатор очереди и имя пользователя.
  • 02 — Receive Jobпередача данных задания (файла для печати) на сервер.
  • 03 — Send Queue State — запрос состояния очереди печати (список заданий, их статус).
  • 04 — Remove Jobудаление задания из очереди (требует аутентификации).
  • 05 — Send Job — запрос на получение данных задания (используется для повторной печати или проверки).

После установки соединения клиент отправляет серию команд, каждая из которых завершается символом перевода строки. Данные задания (файл) передаются в виде потока байтов с контрольными суммами. Сервер подтверждает получение каждой части данных.

Формат данных

Задание на печать в LPD состоит из управляющего файла (control file) и файла данных (data file). Управляющий файл содержит метаданные: имя пользователя, название задания, тип файла (текст, PostScript, PCL и т.д.), параметры печати (количество копий, ориентация страниц). Файл данных — это собственно содержимое для печати (текст, изображение, PDF). Разделение на два файла позволяет серверу обрабатывать задания без необходимости повторной передачи управляющей информации.

Реализации

В Unix-подобных системах

В большинстве дистрибутивов Linux и BSD-систем LPD реализован в виде демона lpd, который входит в пакет LPRng (Line Printer Next Generation) или CUPS (Common Unix Printing System). CUPS, ставший стандартом в Linux, поддерживает LPD как один из протоколов наряду с IPP и SMB. В macOS протокол LPD также поддерживается встроенной системой печати, хотя основным протоколом является IPP.

В Microsoft Windows

В Windows протокол LPD доступен через компонент «Служба печати TCP/IP» (LPD Service), который устанавливается как дополнительная функция. Клиентская часть (LPR) позволяет отправлять задания на сервер LPD. В Windows 10 и 11 поддержка LPD была частично сохранена, но рекомендуется использовать IPP для новых устройств.

В сетевых принтерах

Большинство современных сетевых принтеров (HP, Canon, Epson, Brother и др.) поддерживают LPD в качестве одного из протоколов печати. Обычно очередь печати называется lp, raw или text. Настройка LPD на принтере сводится к указанию IP-адреса и имени очереди.

Преимущества и недостатки

Преимущества

  • Простота реализации — протокол использует минимальный набор команд и не требует сложной аутентификации.
  • Совместимость — LPD поддерживается практически всеми операционными системами и сетевыми принтерами, выпущенными с 1990-х годов.
  • Низкие накладные расходы — небольшой объём служебных данных, что важно для медленных сетей.

Недостатки

  • Отсутствие шифрования — данные передаются в открытом виде, что делает протокол уязвимым для перехвата и модификации.
  • Слабая аутентификация — команда удаления задания может быть выполнена без проверки прав пользователя (по умолчанию).
  • Ограниченная функциональность — LPD не поддерживает двустороннюю печать, сложные настройки страниц, уведомления о завершении.
  • Зависимость от TCP — протокол не работает через UDP или другие транспортные протоколы.

Применение

LPD продолжает использоваться в следующих сценариях:

  • Корпоративные сети — для печати на устаревших принтерах, не поддерживающих IPP.
  • Промышленные системы — в автоматизированных линиях, где требуется простая и надёжная передача заданий.
  • Образовательные учреждения — в компьютерных классах с Unix-подобными системами.
  • Встроенные системы — в маршрутизаторах, сетевых хранилищах (NAS), где LPD реализован как часть стека печати.

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

Протокол LPD не предусматривает шифрования или аутентификации на уровне протокола. Для защиты рекомендуется:

  • Использовать LPD только в доверенных сетях (локальных или VPN).
  • Настроить брандмауэр для ограничения доступа к порту 515.
  • Применять туннелирование через SSH или IPsec для передачи данных.
  • Включить аутентификацию на уровне операционной системы (например, через PAM).

В современных системах (CUPS, LPRng) добавлена поддержка аутентификации и фильтрации по IP-адресам, но это не является частью стандарта RFC 1179.

Сравнение с другими протоколами

ХарактеристикаLPDIPPSMB (Windows)
ПортTCP 515TCP 631TCP 445
ШифрованиеНетПоддерживается (TLS)Поддерживается (SMB3)
АутентификацияНетПоддерживаетсяПоддерживается
Двусторонняя печатьНетПоддерживаетсяПоддерживается
Поддержка драйверовМинимальнаяРасширеннаяПолная
Возраст1980-е1990-е1990-е

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

  • Название «Line Printer Daemon» происходит от строковых принтеров (line printers), которые были распространены в эпоху мейнфреймов и печатали по одной строке за раз.
  • RFC 1179, описывающий LPD, является одним из немногих стандартов, где явно указано, что протокол не предназначен для использования в глобальных сетях (Internet), а только в локальных.
  • В некоторых реализациях LPD (например, в BSD) очередь печати может быть настроена на выполнение произвольных команд, что создаёт риск удалённого выполнения кода (RCE) при неправильной конфигурации.

Источники

  • RFC 1179 — Line Printer Daemon Protocol, 1990.
  • Stevens, W. Richard. «TCP/IP Illustrated, Volume 1: The Protocols». Addison-Wesley, 1994.
  • Nemeth, Evi; Snyder, Garth; Hein, Trent R. «Unix System Administration Handbook». Prentice Hall, 2010.
  • Документация CUPS (Common Unix Printing System) — OpenPrinting.org.
  • Документация Microsoft Windows — «LPR Port Monitor» и «LPD Service».

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

На главную BFOmetr →