Протокол IPP
Internet Printing Protocol (IPP) — это сетевой протокол прикладного уровня, предназначенный для удалённой печати и управления принтерами через IP-сети, включая интернет. Разработан как замена более старым и менее функциональным протоколам (таким как LPD/LPR и SMB-печать), обеспечивая стандартизированный интерфейс для отправки заданий на печать, мониторинга состояния устройств и очередей, а также управления конфигурацией принтеров. IPP базируется на архитектуре клиент-сервер, использует HTTP как транспортный протокол и поддерживает шифрование, аутентификацию и расширенные возможности, такие как двусторонняя печать, сортировка и использование разных типов носителей.
История
Разработка IPP началась в середине 1990-х годов как совместный проект компаний Novell, Xerox и других участников, стремившихся создать универсальный протокол для печати, который мог бы работать в гетерогенных сетях (включая Unix, Windows и macOS). Первая версия спецификации, IPP/1.0, была опубликована в 1996 году в виде экспериментального RFC (Request for Comments) — RFC 2566. В 1999 году вышла стабильная версия IPP/1.1, описанная в RFC 2910 и RFC 2911, которая стала основой для широкого внедрения.
В 2000-х годах протокол развивался под эгидой рабочей группы PWG (Printer Working Group), которая выпустила ряд расширений, включая поддержку аутентификации (RFC 3381), шифрования через TLS (RFC 3510) и стандартизацию форматов данных (например, PDF/A). В 2010-х годах IPP был адаптирован для использования в облачных сервисах печати (Google Cloud Print, Apple AirPrint), что привело к появлению версии IPP Everywhere, официально стандартизированной в 2013 году (PWG 5100.14). Эта версия упростила настройку принтеров, исключив необходимость в установке драйверов для большинства современных устройств.
Архитектура и принцип работы
IPP работает по схеме «запрос-ответ» поверх протокола HTTP (порты 631/TCP для незащищённого соединения и 443/TCP для HTTPS). Клиент (например, драйвер принтера в операционной системе или приложение) отправляет HTTP-запросы с данными в формате MIME (Multipurpose Internet Mail Extensions), содержащими команды IPP и файлы для печати. Сервер (принтер или сервер печати) обрабатывает запрос и возвращает ответ с кодом состояния и дополнительной информацией.
Основные операции
Протокол поддерживает несколько базовых операций, каждая из которых имеет уникальный идентификатор (Operation ID):
- Print-Job — отправка задания на печать с передачей данных документа.
- Validate-Job — проверка возможности выполнения задания без фактической печати.
- Cancel-Job — отмена отправленного задания.
- Get-Job-Attributes — получение атрибутов конкретного задания (статус, размер, время создания).
- Get-Printer-Attributes — получение характеристик принтера (поддерживаемые форматы, разрешение, наличие бумаги).
- Create-Job — создание пустого задания для последующей отправки данных (используется для потоковой печати).
Модель данных
IPP использует модель атрибутов, которые делятся на три группы:
- Атрибуты задания — параметры конкретного задания (например, количество копий, ориентация страницы, тип носителя).
- Атрибуты принтера — характеристики устройства (скорость печати, доступные лотки, поддерживаемые форматы файлов).
- Атрибуты операции — параметры самого запроса (например, имя пользователя, пароль).
Каждый атрибут имеет имя, тип данных (целое число, строка, дата, массив) и значение. Стандартные атрибуты определены в RFC 3380 и дополнениях PWG.
Версии и расширения
IPP/1.1
Базовая версия, поддерживающая все основные функции печати. Использует HTTP/1.1 и может работать как с незащищённым, так и с защищённым соединением. Поддерживает аутентификацию по протоколам HTTP Basic, Digest и Kerberos.
IPP 2.0
Опубликована в 2012 году (PWG 5100.14). Включает поддержку IPP Everywhere, что позволяет принтерам автоматически рекламировать свои возможности в сети через протокол DNS-SD (Bonjour). Клиенты могут обнаруживать принтеры без предварительной настройки и печатать без установки драйверов, используя универсальные форматы (PDF, JPEG, PWG Raster).
IPP 2.1 и 2.2
Последующие версии добавили поддержку печати с мобильных устройств, улучшенную обработку ошибок, а также возможность печати на нескольких сторонах листа (дуплекс) и использования финишных опций (сшивание, складывание).
IPP Everywhere
Стандарт, принятый в 2013 году, который стал обязательным для сертификации принтеров в рамках программы Mopria (альянс производителей мобильных устройств и принтеров). IPP Everywhere определяет минимальный набор функций, которые должен поддерживать принтер: печать в форматах PDF, JPEG и PWG Raster, а также возможность обнаружения через DNS-SD. Это позволяет устройствам iOS, Android, Windows и macOS печатать без установки драйверов.
Применение
В операционных системах
- Linux — IPP является основным протоколом для печати в системе CUPS (Common Unix Printing System), которая используется по умолчанию в большинстве дистрибутивов. CUPS поддерживает как клиентскую, так и серверную часть IPP.
- macOS — начиная с версии OS X 10.5 (Leopard), Apple использует CUPS, что обеспечивает полную поддержку IPP. AirPrint, встроенный в iOS и macOS, базируется на IPP Everywhere.
- Windows — начиная с Windows 8, встроенная поддержка IPP позволяет печатать на принтерах, поддерживающих этот протокол, без установки дополнительных драйверов. В Windows 10 и 11 IPP используется для облачной печати через Microsoft Universal Print.
- Android — через сервисы Mopria, которые поддерживают IPP Everywhere для печати на совместимых принтерах.
В корпоративных сетях
IPP используется в серверах печати (например, PaperCut, Printix) для централизованного управления заданиями, учёта расхода ресурсов и обеспечения безопасности. Протокол позволяет администраторам настраивать квоты, ограничивать доступ к принтерам и вести аудит печати.
В облачных сервисах
- Google Cloud Print (закрыт в 2020 году) — использовал IPP для взаимодействия между облачными серверами и принтерами.
- Microsoft Universal Print — облачный сервис печати, который использует IPP в качестве основного протокола для отправки заданий.
- Apple AirPrint — базируется на IPP Everywhere и позволяет печатать с устройств Apple без предварительной настройки.
Безопасность
IPP поддерживает несколько механизмов защиты:
- Шифрование — через HTTPS (TLS/SSL) на порту 443. Рекомендуется использовать для предотвращения перехвата данных.
- Аутентификация — поддерживаются методы HTTP Basic (с передачей пароля в открытом виде, не рекомендуется), Digest (хеширование пароля) и Kerberos (в корпоративных средах).
- Авторизация — на основе атрибутов задания (например, имя пользователя) или через списки контроля доступа (ACL) на сервере.
- Целостность — через цифровые подписи (необязательно, поддерживается в расширениях PWG).
Несмотря на наличие механизмов безопасности, в реальных сетях IPP часто используется без шифрования (на порту 631), что делает его уязвимым для атак типа «человек посередине» (MITM). Для повышения безопасности рекомендуется использовать VPN или туннелирование.
Критика и ограничения
- Сложность реализации — полный стек IPP требует значительных ресурсов для встраивания в недорогие принтеры, что иногда приводит к неполной поддержке стандарта.
- Производительность — использование HTTP/1.1 может приводить к задержкам при передаче больших файлов, особенно на медленных сетях. В версии IPP 2.2 добавлена поддержка HTTP/2 для улучшения скорости.
- Совместимость — некоторые старые принтеры не поддерживают IPP, что требует использования эмуляции или прокси-серверов.
- Безопасность по умолчанию — многие производители поставляют принтеры с включённым IPP без шифрования, что создаёт риски для конфиденциальности документов.
Интересные факты
- IPP является единственным протоколом печати, который официально стандартизирован IETF (Internet Engineering Task Force) и PWG.
- В 2020 году Google объявила о закрытии Google Cloud Print, рекомендовав пользователям переходить на IPP Everywhere.
- Протокол поддерживает печать на нескольких языках описания страниц (PCL, PostScript, PDF), но для IPP Everywhere обязательным является только PWG Raster — простой растровый формат, который могут обрабатывать даже недорогие принтеры.
- В России IPP используется в государственных информационных системах, например, в Единой системе межведомственного электронного взаимодействия (СМЭВ) для печати документов.
Источники
- RFC 2910: Internet Printing Protocol/1.1: Encoding and Transport
- RFC 2911: Internet Printing Protocol/1.1: Model and Semantics
- PWG 5100.14: IPP Everywhere
- PWG 5100.19: IPP 2.0
- CUPS Software Manual (Apple Inc.)
- Microsoft Docs: Internet Printing Protocol (IPP) in Windows
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →