Протокол печати через Интернет ( IPP ) — это специализированный протокол связи , используемый между клиентскими устройствами (компьютерами, мобильными телефонами, планшетами и т. д.) и принтерами (или серверами печати ). Протокол позволяет клиентам отправлять одно или несколько заданий печати на сетевой принтер или сервер печати и выполнять такие задачи, как запрос статуса принтера , получение статуса заданий печати или отмена отдельных заданий печати.
Как и все протоколы на основе IP , IPP может работать локально или через Интернет . В отличие от других протоколов печати, IPP также поддерживает контроль доступа , аутентификацию и шифрование , что делает его гораздо более эффективным и безопасным механизмом печати, чем старые.
IPP является основой нескольких программ сертификации логотипов принтеров, включая AirPrint , IPP Everywhere [1] и Mopria Alliance , и поддерживается более чем 98% принтеров, проданных сегодня. [2]
IPP начинался как предложение Novell о создании проекта протокола интернет-печати в 1996 году. Результатом стал проект, написанный Novell и Xerox под названием Lightweight Document Printing Application (LDPA), полученный из ECMA-140: Document Printing Application (DPA). Примерно в то же время IBM публично предложила нечто под названием HyperText Printing Protocol (HTPP), а HP и Microsoft начали работу над новыми службами печати для того, что стало Windows 2000. Каждая из компаний решила начать общий проект Internet Printing Protocol в Printer Working Group (PWG) и договорилась о сессии IPP birds-of-a-feather (или BOF) с директорами по прикладным областям в Internet Engineering Task Force (IETF). Сессия BOF в декабре 1996 года [ требуется ссылка ] показала достаточный интерес к разработке протокола печати, что привело к созданию рабочей группы IETF Internet Printing Protocol (ipp) [3] , которая завершила свою работу в 2005 году.
Работа над IPP продолжается в рабочей группе PWG Internet Printing Protocol, где опубликованы 23 потенциальных стандарта, 1 новый и 3 обновленных документа IETF RFC, а также несколько документов о регистрации и передовой практике, обеспечивающих расширения IPP и поддержку различных услуг, включая 3D-печать, сканирование, факсимильную связь, облачные сервисы и общее управление системой и ресурсами.
IPP/1.0 был опубликован в виде серии экспериментальных документов (RFC 2565, [4] RFC 2566, [5] RFC 2567, [6] RFC 2568, [7] RFC 2569, [8] и RFC 2639 [9] ) в 1999 году.
IPP/1.1 появился в качестве чернового стандарта в 2000 году с вспомогательными документами в 2001, 2003 и 2015 годах (RFC 2910, [10] RFC 2911, [11] RFC 3196, [12] RFC 3510 [13] RFC 7472 [14] ). IPP/1.1 был обновлен в качестве предлагаемого стандарта в январе 2017 года (RFC 8010, [15] RFC 8011, [16] ), а затем принят как Интернет-стандарт 92 (STD 92, [17] ) в июне 2018 года.
IPP 2.0 был опубликован как стандарт-кандидат PWG в 2009 году (PWG 5100.10-2009, [18] ) и определил две новые версии IPP (2.0 для принтеров и 2.1 для серверов печати) с дополнительными требованиями соответствия помимо IPP 1.1. Последующий стандарт-кандидат заменил его в 2011 году, определив дополнительную версию 2.2 для производственных принтеров (PWG 5100.12-2011, [19] ). Эта спецификация была обновлена и утверждена как полный стандарт PWG (PWG 5100.12-2015, [20] ) в 2015 году.
IPP Everywhere был опубликован в 2013 году и обеспечивает общую базу для принтеров для поддержки так называемой «бездрайверной» печати с клиентских устройств. Он основан на IPP и определяет дополнительные правила взаимодействия, такие как список форматов документов, которые должны поддерживать принтеры. Соответствующее руководство по самостоятельной сертификации и набор инструментов были опубликованы в 2016 году, что позволило производителям принтеров и разработчикам серверов печати сертифицировать свои решения по опубликованной спецификации и быть указанными на странице принтеров IPP Everywhere, поддерживаемой PWG.
IPP реализован с использованием протокола передачи гипертекста (HTTP) и наследует все функции потоковой передачи и безопасности HTTP. Например, авторизация может осуществляться с помощью механизма аутентификации доступа HTTP Digest , GSSAPI или любых других методов аутентификации HTTP. Шифрование обеспечивается с использованием уровня протокола TLS , либо в традиционном режиме always-on, используемом HTTPS , либо с использованием расширения HTTP Upgrade для HTTP (RFC 2817 [21] ). Сертификаты открытых ключей могут использоваться для аутентификации с помощью TLS. Потоковая передача поддерживается с помощью HTTP chunking. Документ для печати обычно отправляется в виде потока данных.
IPP поддерживает различные форматы документов для печати.PWG определила формат изображения PWG Raster специально для этой цели. Другие форматы включают PDF или JPEG , в зависимости от возможностей принтера назначения. [22]
IPP использует традиционную модель клиент-сервер, при этом клиенты отправляют сообщения запроса IPP с типом носителя MIME "application/ipp" в запросах HTTP POST на принтер IPP. Сообщения запроса IPP состоят из пар ключ-значение с использованием пользовательского двоичного кодирования, за которым следует тег "конец атрибутов" и любые данные документа, необходимые для запроса (например, документ, который нужно напечатать). Ответ IPP отправляется обратно клиенту в ответе HTTP POST, снова с использованием типа носителя MIME "application/ipp".
Помимо прочего, IPP позволяет клиенту:
IPP использует TCP с портом 631 в качестве своего известного порта .
Продукты, использующие протокол интернет-печати, включают Universal Print от Microsoft, [23] CUPS (который является частью Apple macOS и многих дистрибутивов BSD и Linux и является эталонной реализацией для большинства версий IPP [24] ), Novell iPrint и версии Microsoft Windows, начиная с MS Windows 2000 . [25] Windows XP и Windows Server 2003 предлагают печать IPP через HTTPS . Windows Vista , Windows 7 , [26] Windows Server 2008 и 2008 R2 также поддерживают печать IPP через RPC в зоне безопасности «Средний-низкий».