← Блог

Как Remote Desktop стал видеокодеком — 35-летняя случайность

Изначально опубликовано на LinkedIn

Протокол, работающий под твоими RDP-сессиями, существует благодаря стихотворению, спору о товарном знаке и корпоративному предательству. Вот как мы пришли от этого к тому, что есть сейчас.

Человек, которого никто не помнит

В июне 2013 года Эд Якобуччи умер в Бока-Ратон, Флорида. Ему было 59. Рак поджелудочной. Некрологи назвали его «технологическим визионером». Несколько блогеров написали добрые слова. Потом мир пошёл дальше.

Большинство людей, ежедневно использующих Remote Desktop, никогда не слышали его имени. Но протокол, работающий под их сессиями, существует благодаря решениям, которые Эд принял — начиная с конца 1980-х.

До RDP существовал T.120

До того как кто-то назвал это «RDP», идея расшаривания экрана по сети уже имела международный стандарт. МСЭ поддерживал T.120 — семейство протоколов многоточечной конференц-связи. Внутри T.120 важная часть — T.128 (также называемый T.Share) — он определял, как расшаривать приложения удалённо: области экрана, события ввода, команды рисования.

T.120 работал под Microsoft NetMeeting. Под ранним WebEx. Если ты когда-нибудь видел трафик на порту 1503 в захвате пакетов — это ископаемые остатки.

Люди, реализовывавшие T.120, часто были невидимы. Один из них — Data Connection Limited, британская компания, основанная в 1981. Они делали стеки SNA-протоколов, сантехнику ITU-конференций — работу, которая жила тремя слоями ниже чего-либо, что пользователь мог бы увидеть. Data Connection переименовалась в Metaswitch в 2009, была поглощена Microsoft в 2020 и продана Alianza в 2025. Но их отпечатки остались на том, как Microsoft думала о многоточечных протоколах десятилетиями.

Аргентинец, уволившийся стихотворением

Эдвард Якобуччи родился в Буэнос-Айресе в 1953. Изучал системную инженерию в Georgia Tech, присоединился к IBM в 1979, и к середине 1980-х был ведущим архитектором со стороны IBM в совместном проекте IBM–Microsoft OS/2.

Потом Microsoft выбила ковёр из-под ног. За три дня до запуска OS/2 2.0 в 1991 — после лет совместной разработки, поставленных на карту карьер — Microsoft публично бросила OS/2 в пользу Windows. Это был один из самых драматичных корпоративных разводов в истории технологий.

Эд на самом деле ушёл из IBM двумя годами ранее. Его заявление об увольнении было копией стихотворения Роберта Фроста «The Road Not Taken». Без докладной записки. Только стихотворение.

Цитрус с опечаткой

Эд стал сооснователем Citrix Systems в 1989. Они хотели назвать компанию «Citrus» — отсылка к Флориде. Спор о товарном знаке убил название, поэтому объединили «Citrus» и «UNIX»: Citrix.

Когда Microsoft убила OS/2, это чуть не убило и Citrix. Весь продуктовый роадмап испарился. Ответ Эда: лицензировать исходный код Windows NT и построить то, что сама Microsoft не сделала — расширения ядра, позволяющие Windows NT работать с несколькими пользователями одновременно.

Они назвали это MultiWin. Это было критическое изобретение. Windows NT была однопользовательской операционной системой. MultiWin сделала её многопользовательской. Продукт назывался WinFrame (1995) — многопользовательская Windows NT 3.51. Citrix вышла на IPO 3 декабря 1995. Акция открылась на $15, закрылась на $30.

Но Microsoft наблюдала.

Сделка на $175 миллионов, создавшая RDP

В 1997 Microsoft приобрела технологию MultiWin у Citrix примерно за $75 миллионов, плюс роялти, оценённые ещё в ~$100 миллионов. Citrix сохранила право строить поверх Windows Terminal Services. Microsoft получила многопользовательский код ядра, необходимый для выпуска Windows NT 4.0 Terminal Server Edition в 1998.

Протокол, который Microsoft построила для этого продукта, стал RDP. Технически он начался от ITU T.Share. Практически то, что заставило его работать — многосессионная Windows — пришло напрямую от команды Эда в Citrix.

Проблема графики (часть, которая мне реально интересна)

Эд описал ICA Марку Темплтону как «универсальный протокол отображения». Простая фраза — но в ней содержалось всё долгосрочное видение. Годами ранее он сказал Джону Маркезе кое-что острее: «Скорость и лёгкость — относительны. Предсказуемость — абсолютна». Инсайт Эда: по мере усложнения и разнообразия сетей побеждающий протокол будет не самым быстрым — а самым предсказуемым.

Эта философия отражается в том, как графический стек RDP эволюционировал. Если ты только нажимал «Подключить» и смотрел, как появляется рабочий стол, тебе может показаться, что RDP просто «отправляет экран». Так и есть, но как он отправляет экран — менялось философически несколько раз.

Фаза 1: Команды рисования. Ранний RDP отправлял GDI-ордера. «Нарисуй прямоугольник тут». «Отрендери этот текст». Клиент воспроизводил их как удалённый display list. Эффективно для простых UI. Ужасно для чего-то современного.

Фаза 2: Lossless-битмапы. NSCodec сжимал битмапы без потерь — нормально для статичных скриншотов, слишком тяжело для динамического контента.

Фаза 3: Вейвлеты. В 2008 Microsoft приобрела Calista Technologies и построила RemoteFX Codec — lossy-кодек на основе вейвлетов с GPU-ускорением. Server 2012 добавил Progressive RemoteFX: сначала отправь грубое изображение, потом уточняй его за несколько проходов. Экран проясняется на глазах.

Фаза 4: Просто отправляй видео. RDP 10 ввёл режим H.264/AVC 444. Сервер кодирует экран как H.264-видеопоток. Полная 4:4:4 хрома-субдискретизация для чёткости текста. На этом этапе «удалённый рабочий стол» и «видеостриминг» — по сути одна и та же инженерная задача.

Каждая фаза оставила осадок в протоколе. Ни одна полностью не заменила предыдущую. Современная RDP-сессия может использовать GDI-ордера для одних поверхностей, прогрессивные вейвлеты для других и H.264 для остальных — всё в одном соединении.

Исполняемый файл клиента всё ещё называется mstsc.exe — Microsoft Terminal Services Client — имя из 1998, которое никто не удосужился поменять.

Открытая спецификация MS-RDPBCGR была пересмотрена 61 раз с 2007 года. Шестьдесят одна ревизия одного документа за восемнадцать лет. Ничего не удаляется.

Империя, построенная вокруг

RDP никогда не был просто протоколом. Он был wire format для платформы, которую Microsoft расширяла через поглощения:

  • 2006 — Softricity → App-V (виртуализация приложений)

  • 2008 — Calista Technologies → RemoteFX (кодек GPU-ремоутинга)

  • 2008 — Kidaro → MED-V (виртуализация десктопов)

  • 2018 — FSLogix → Profile containers (то, что делает VDI реально развёртываемым)

  • 2020 — Metaswitch → бывшая Data Connection Ltd, те самые люди из T.120 с самого начала

Каждое поглощение заполняло пробел. Протокол — транспорт; платформа — всё вокруг.

Citrix, компания, с которой всё началось, пошла другим путём. Vista Equity Partners приобрела Citrix за $16,5 миллиарда в 2022, объединила с TIBCO Software и переименовала в Cloud Software Group. Компания, изобретшая многопользовательский Windows, теперь — портфельный актив private equity.

Та же мечта, четыре имени клиента

«Удалённая Windows» раньше означала коробку в серверной. Теперь это Azure Virtual Desktop.

Сам клиент переименовывался четыре раза: mstsc.exe → Microsoft Remote Desktop → MSRDC → Windows App (2024). Четыре имени для одной идеи. Центральные вычисления, удалённый UI. Мечта эпохи мейнфреймов, перепакованная для каждого поколения.

Почему это важно, если ты работаешь с RDP сегодня

Я работал над системой Privileged Access Management, которая обрабатывает RDP-сессии — парсит графические фреймы, реконструирует происходившее на экране. Когда копаешь в RDP на таком уровне, ты работаешь не с чистым протоколом. Ты работаешь с 35 годами накопленных решений, каждое из которых было разумным в свой момент, наслоенных друг на друга как геологические пласты.

Понимание почему протокол такой, какой есть — почему четыре разных графических кодека сосуществуют, почему клиент всё ещё называется mstsc.exe, почему эхо T.120 проявляется в современных захватах пакетов — делает тебя лучшим инженером. Не потому что история полезна сама по себе, а потому что она говорит, какие допущения — несущие, а какие — просто инерция.

Яхта Эда Якобуччи называлась Tenacity. Это также разумное имя для протокола, который он запустил.

Эд Якобуччи умер 21 июня 2013 года, дома в Бока-Ратон. Его пережили жена Нэнси, трое детей и трое внуков. На церемонии Ernst & Young 1998 года, где Эд получил награду «Предприниматель года», Билл Гейтс был на коктейльном приёме перед церемонией. Единственное, что Гейтс хотел знать, — когда прибудет его друг Эд.