RFC 1179
RFC 1179 — это документ, опубликованный в августе 1990 года в серии Request for Comments (RFC) Инженерного совета Интернета (IETF), который описывает протокол Line Printer Daemon (LPD) и определяет стандартный набор команд для взаимодействия с принтерами в компьютерных сетях. Документ имеет статус «Информационного» (Informational) и не является стандартом Интернета в строгом смысле, однако на протяжении многих лет служил де-факто основой для реализации сетевой печати в Unix-подобных системах и ранних версиях Windows.
История создания
Протокол LPD, описанный в RFC 1179, был разработан в Калифорнийском университете в Беркли (UC Berkeley) в рамках операционной системы Berkeley Software Distribution (BSD). Первоначально он предназначался для локальной печати внутри одной машины, но с ростом популярности локальных сетей (LAN) возникла необходимость в удалённом доступе к принтерам. RFC 1179 был написан на основе существующей реализации демона печати (lpd) в BSD 4.3, которая к тому времени уже использовалась в академической среде. Автором документа выступил Л. Питер Дойч (L. Peter Deutsch) из компании Aladdin Enterprises, который систематизировал разрозненные команды и форматы запросов, превратив их в единый протокол.
Документ был опубликован в эпоху, когда Интернет ещё не был коммерциализирован, а основными пользователями сетей были университеты и исследовательские центры. RFC 1179 не проходил процедуру стандартизации IETF (он не был принят как Proposed Standard или Internet Standard), но его практическая ценность привела к широкому распространению. В 1990-е годы протокол стал основой для большинства сетевых принтеров и серверов печати, выпускаемых такими компаниями, как Hewlett-Packard, Lexmark и IBM.
Описание протокола
RFC 1179 определяет клиент-серверную архитектуру, где сервером выступает демон LPD (Line Printer Daemon), работающий на компьютере или сетевом принтере, а клиентом — любая программа, отправляющая задания на печать. Протокол работает поверх TCP (порт 515) и использует простой текстовый формат команд, что делает его лёгким для реализации, но ограниченным с точки зрения безопасности.
Команды и форматы
Основные команды протокола, определённые в RFC 1179, включают:
- Приём задания на печать (Receive Job): используется для отправки файла на сервер.
- Запрос статуса очереди (Print Queue Status): позволяет клиенту получить список заданий в очереди.
- Удаление задания (Remove Job): даёт возможность удалить задание из очереди (обычно требует привилегий суперпользователя).
- Запрос краткого статуса (Short Status): возвращает краткую информацию о состоянии очереди.
Каждая команда начинается с однобайтового кода (например, 0x02 для отправки задания, 0x03 для запроса статуса), за которым следует имя очереди принтера и, при необходимости, идентификатор задания. Формат данных для печати (обычно PostScript, PCL или простой текст) не регламентируется протоколом — он передаётся «как есть» после команды.
Ограничения и особенности
RFC 1179 имеет ряд архитектурных ограничений, которые стали критичными с развитием сетей:
- Отсутствие аутентификации и шифрования: все команды и данные передаются в открытом виде. Это делает протокол уязвимым для перехвата и несанкционированного доступа (например, любой клиент в сети может отправить задание на печать или удалить чужое задание).
- Ограниченная поддержка имён очередей: длина имени очереди не должна превышать 32 символа, а допустимые символы ограничены буквами, цифрами и дефисом.
- Нет механизма подтверждения доставки: сервер не отправляет клиенту уведомление об успешном получении задания или его завершении.
- Зависимость от TCP-соединений: протокол использует отдельные соединения для каждой команды, что увеличивает сетевую нагрузку.
Применение
RFC 1179 стал основой для реализации сетевой печати в операционных системах семейства Unix (BSD, Linux, Solaris) и в ранних версиях Windows (Windows 95, Windows NT). До появления более современных протоколов, таких как IPP (Internet Printing Protocol, описанный в RFC 2911 в 2000 году), LPD был единственным широко распространённым стандартом для печати в гетерогенных сетях. Многие производители сетевых принтеров (например, HP JetDirect) встраивали поддержку LPD в свои устройства, что позволяло использовать их без дополнительного программного обеспечения.
В корпоративной среде протокол применялся для организации централизованных серверов печати, где один компьютер с демоном LPD обслуживал несколько принтеров. Администраторы могли настраивать очереди, ограничивать доступ по IP-адресам и управлять заданиями через командную строку.
Недостатки и критика
С развитием Интернета и ростом требований к безопасности недостатки RFC 1179 стали очевидны. Отсутствие шифрования и аутентификации делало протокол непригодным для использования в открытых сетях. В конце 1990-х — начале 2000-х годов были зафиксированы случаи атак на серверы LPD, когда злоумышленники отправляли ложные задания на печать или перехватывали конфиденциальные документы. Кроме того, протокол не поддерживал двустороннюю связь (например, для получения статуса принтера в реальном времени), что усложняло диагностику.
Документ RFC 1179 также критиковался за неполноту: в нём не были описаны некоторые расширения, использовавшиеся в реальных реализациях (например, поддержка сжатия данных или управление очередями с приоритетами). Это приводило к несовместимости между разными поставщиками.
Современное состояние
К началу 2020-х годов протокол LPD, описанный в RFC 1179, практически полностью вытеснен протоколом IPP (Internet Printing Protocol), который поддерживает шифрование (TLS), аутентификацию, управление цветом и двустороннюю связь. Большинство современных операционных систем (Windows 10/11, macOS, современные дистрибутивы Linux) по умолчанию используют IPP, хотя поддержка LPD сохраняется для обратной совместимости. В Unix-системах демон LPD (lpd или cups-lpd) может быть включён администратором вручную, но это не рекомендуется из соображений безопасности.
Тем не менее, RFC 1179 остаётся важным историческим документом, демонстрирующим эволюцию сетевых протоколов. Он иллюстрирует, как простые решения, созданные для локальных сетей, могут стать временным стандартом, пока не появятся более совершенные альтернативы. В академической литературе RFC 1179 иногда упоминается как пример «нестандартного стандарта», который сыграл ключевую роль в развитии сетевой печати.
Интересные факты
- Порт 515, используемый протоколом LPD, был официально закреплён за этим сервисом в 1990 году и остаётся зарезервированным по сей день, хотя фактический трафик на нём минимален.
- В RFC 1179 отсутствует спецификация формата ответа на запрос статуса очереди — разные реализации могут возвращать данные в произвольном текстовом виде, что усложняет автоматическую обработку.
- Документ был опубликован до формального создания IETF (организация была основана в 1986 году, но RFC 1179 не проходил её процедуры утверждения). Он относится к категории «Информационных» RFC, которые не претендуют на статус стандарта.
Источники
- RFC 1179 — Line Printer Daemon Protocol, L. Peter Deutsch, Aladdin Enterprises, August 1990.
- Stevens, W. Richard. «TCP/IP Illustrated, Volume 1: The Protocols», Addison-Wesley, 1994 (глава о протоколах прикладного уровня).
- Internet Printing Protocol (IPP) — RFC 2911, 2000.
- Документация CUPS (Common Unix Printing System) — раздел о поддержке протокола LPD.
- История развития сетевой печати в BSD-системах — материалы проекта FreeBSD Documentation Project.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →