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

Handle

Handle — это именованный идентификатор, используемый в компьютерных системах, программировании и сетевых протоколах для однозначного обозначения объекта, ресурса, пользователя или сессии. В широком смысле handle представляет собой абстрактную ссылку, которая скрывает внутреннюю реализацию и позволяет манипулировать объектом без прямого доступа к его данным. В операционных системах handle — это целочисленный дескриптор, присваиваемый открытому файлу, сокету, процессу или другому системному ресурсу. В интернете и социальных сетях handle — это уникальное имя пользователя (никнейм), часто начинающееся с символа @, используемое для идентификации в мессенджерах, форумах и платформах вроде Twitter (социальная сеть, заблокирована на территории РФ) или Instagram (социальная сеть, принадлежит Meta, признанной экстремистской и запрещённой в РФ). В контексте цифровых архивов и систем управления идентификаторами (например, Handle System) handle — это постоянный идентификатор, присваиваемый цифровым объектам для обеспечения их долговременной доступности.

История

Понятие handle в компьютерных науках восходит к ранним операционным системам 1960-х годов, когда возникла необходимость в абстракции доступа к ресурсам. В системе Multics (1965) впервые были введены дескрипторы сегментов, которые можно считать прототипом современных хендлов. В операционной системе Unix (1970-е) handle был реализован в виде файлового дескриптора (file descriptor) — целого числа, возвращаемого системным вызовом open(). В Windows (1985) handle стал центральным элементом объектно-ориентированной модели управления ресурсами: каждому окну, процессу, файлу или устройству присваивался уникальный дескриптор (HANDLE), который использовался для взаимодействия через API.

В интернете термин handle приобрёл популярность в 1980-х годах с распространением системы досок объявлений (BBS) и ранних протоколов обмена сообщениями (IRC). Пользователи выбирали себе псевдонимы (handles), чтобы скрыть реальное имя или создать альтернативную идентичность. В 1990-х годах handle стал стандартным элементом в электронной почте (часть адреса до @) и в системах мгновенных сообщений (ICQ, AOL Instant Messenger). С развитием социальных сетей в 2000-х handle превратился в обязательный атрибут профиля, часто используемый для упоминаний (mention) и поиска.

Система постоянных идентификаторов Handle System была разработана в 1994 году в корпорации CNRI (Corporation for National Research Initiatives) под руководством Роберта Кана. Она предназначалась для обеспечения долговременной ссылочной целостности цифровых объектов, в частности в научных публикациях и архивах. В 1995 году Handle System стала основой для идентификатора DOI (Digital Object Identifier), который сегодня широко применяется в академическом издательстве.

Классификация

По типу объекта

  • Системные хендлы — дескрипторы, используемые операционной системой для управления ресурсами (файлы, процессы, окна, сокеты).
  • Пользовательские хендлы — идентификаторы, присваиваемые пользователям в сетевых сервисах (никнеймы, @-упоминания).
  • Идентификационные хендлы — постоянные идентификаторы цифровых объектов (Handle System, DOI, PURL).

По области применения

  • Операционные системы — файловые дескрипторы (Unix), HANDLE (Windows), порты (Plan 9).
  • Программирование — хендлы в библиотеках GUI (например, HWND в Windows API), хендлы в OpenGL, дескрипторы в системах управления памятью.
  • Сети и интернет — никнеймы в IRC, Twitter, Instagram (продукт Meta, признанной экстремистской и запрещённой в РФ), Telegram; хендлы в протоколах XMPP и Matrix.
  • Цифровые архивы — Handle System, DOI, ARK (Archival Resource Key).

Устройство и характеристики

В операционных системах

В Unix-подобных системах handle (файловый дескриптор) — это неотрицательное целое число, которое присваивается процессу при открытии файла, сокета или устройства. Дескрипторы хранятся в таблице файловых дескрипторов процесса, которая связывает число с указателем на структуру file в ядре. Максимальное количество открытых дескрипторов на процесс ограничено (обычно 1024, но может быть увеличено через ulimit). В Windows handle — это 32-битное или 64-битное значение, которое может быть указателем на объект ядра, индексом в таблице или закодированным идентификатором. Система использует handle для проверки прав доступа и управления временем жизни объекта.

В Handle System

Handle System основана на клиент-серверной архитектуре. Каждый handle состоит из двух частей: префикса (код организации) и суффикса (локальный идентификатор), разделённых косой чертой (например, 10.1000/182). Префикс регистрируется в глобальной службе Handle System, суффикс назначается локальным администратором. Handle может содержать не только URL, но и другие типы данных (метаданные, ключи шифрования). Система поддерживает репликацию и кэширование для обеспечения отказоустойчивости.

В социальных сетях

Handle в социальных сетях — это строка символов (обычно латиница, цифры и подчёркивание), уникальная в пределах платформы. Максимальная длина варьируется: в Twitter — 15 символов, в Instagram — 30 символов, в Telegram — 32 символа. Handle часто используется для создания ссылки на профиль (например, https://twitter.com/handle`). В мессенджерах handle может быть привязан к номеру телефона или электронной почте.

Применение

В системном программировании

Handle используется для управления ресурсами в многозадачных средах. Например, при работе с файлами в C/C++ handle передаётся функциям read(), write(), close(). В Windows handle применяется для работы с окнами (например, CreateWindow возвращает HWND), семафорами, событиями и потоками. Использование handle позволяет операционной системе контролировать доступ к ресурсам и предотвращать утечки памяти.

В интернете и социальных сетях

Handle служит для идентификации пользователя в публичном пространстве. В Twitter (социальная сеть, заблокирована на территории РФ) handle используется для упоминаний (@username) и поиска. В Instagram (социальная сеть, принадлежит Meta, признанной экстремистской и запрещённой в РФ) handle является частью URL профиля. В Telegram handle позволяет создавать публичные ссылки на каналы и ботов. Handle также применяется в системах аутентификации (например, OpenID) и в протоколах децентрализованных сетей (ActivityPub, Matrix).

В научных публикациях и цифровых архивах

Handle System и DOI используются для постоянной идентификации научных статей, книг, данных и других цифровых объектов. Например, DOI 10.1038/s41586-020-2009-1 однозначно идентифицирует статью в журнале Nature. Handle также применяется в библиотечных системах (например, в проекте DSpace) и в государственных реестрах (например, в системе «Цифровой идентификатор объекта» в России). Преимущество handle перед URL — устойчивость к изменению местоположения ресурса.

В играх и виртуальных мирах

Handle используется для идентификации игроков в многопользовательских онлайн-играх (MMORPG, шутеры). Например, в World of Warcraft handle — это имя персонажа, уникальное на сервере. В платформах вроде Steam handle — это уникальный идентификатор пользователя, который может быть изменён, но остаётся привязанным к аккаунту.

Примеры

  • Файловый дескриптор в Unix: int fd = open("file.txt", O_RDONLY); — возвращает handle, равный 3, если файл открыт успешно.
  • Handle в Windows: HWND hwnd = CreateWindow("STATIC", "Hello", WS_VISIBLE, 0, 0, 100, 100, NULL, NULL, hInstance, NULL); — возвращает дескриптор окна.
  • Handle в Twitter: @elonmusk — handle Илона Маска.
  • Handle в Handle System: 20.500.12345/abc — пример handle, зарегистрированного в Handle System.
  • DOI: 10.1000/182 — handle, используемый для идентификации документа.

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

  • В операционной системе Windows handle может быть не только целым числом, но и указателем на структуру данных. Например, HWND на самом деле является указателем на структуру WND, но для пользователя он скрыт.
  • В системе Handle System существует возможность разрешения handle на несколько типов данных одновременно (например, URL и email). Это позволяет использовать один handle для разных целей.
  • В ранних версиях Unix (1970-е) файловые дескрипторы были ограничены 19, что приводило к проблемам при работе с большим количеством файлов. Современные системы поддерживают до 2^31-1 дескрипторов.
  • Handle в социальных сетях иногда называют «упоминанием» (mention) или «тэгом» (tag), хотя технически это разные понятия.
  • В России Handle System используется в системе «Цифровой идентификатор объекта» (ЦИО) для идентификации научных и образовательных ресурсов, однако её распространение ограничено.

Критика

Использование handle в операционных системах может приводить к утечкам ресурсов, если программист забывает закрыть handle после использования. Это особенно актуально для Windows, где handle может быть связан с объектом ядра, который не освобождается автоматически. В Handle System критикуется централизованность: глобальная служба Handle System управляется CNRI, что создаёт риск зависимости от одной организации. В социальных сетях handle может быть занят (сквоттинг), что приводит к спорам о праве на имя. Также handle может быть использован для фишинга (например, подмена handle известного человека). В России handle как элемент идентификации в интернете регулируется Федеральным законом «О персональных данных» (152-ФЗ), однако прямого упоминания термина в законе нет.

Источники

  • Таненбаум Э., Бос Х. «Современные операционные системы». — 4-е изд. — СПб.: Питер, 2015.
  • Рихтер Дж. «Windows via C/C++». — 5-е изд. — М.: Русская редакция, 2008.
  • RFC 3650: Handle System Overview. — IETF, 2003.
  • Kahn R., Wilensky R. «A Framework for Distributed Digital Object Services». — CNRI, 1995.
  • Официальная документация Handle System: handle.net.
  • Федеральный закон «О персональных данных» от 27.07.2006 № 152-ФЗ.

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

На главную BFOmetr →