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

RPC over HTTP

RPC over HTTP — это технология, позволяющая выполнять удалённые вызовы процедур (RPC) через протокол HTTP, используя его в качестве транспортного уровня. Данный механизм обеспечивает взаимодействие между клиентскими и серверными приложениями в условиях, когда стандартные транспортные протоколы (например, TCP/IP напрямую) недоступны из-за сетевых ограничений, таких как файрволы, прокси-серверы или NAT (трансляция сетевых адресов). RPC over HTTP инкапсулирует вызовы удалённых процедур в HTTP-запросы и ответы, что позволяет им проходить через большинство корпоративных и домашних сетевых шлюзов, которые обычно разрешают HTTP-трафик.

История

Технология RPC over HTTP была разработана корпорацией Microsoft в конце 1990-х — начале 2000-х годов как часть платформы Windows. Первоначально она была реализована в составе Microsoft Exchange Server 2000 под названием RPC over HTTP (позднее переименована в Outlook Anywhere). Основной целью было обеспечение доступа клиентов Microsoft Outlook к почтовым ящикам Exchange Server через интернет без необходимости настройки VPN-соединений или открытия дополнительных портов для прямого RPC-трафика (обычно порт 135 и динамические порты для RPC).

В 2003 году с выходом Windows Server 2003 и Windows XP Professional поддержка RPC over HTTP была включена в состав операционной системы. Это позволило использовать технологию не только для Exchange, но и для других приложений, использующих RPC, таких как Active Directory, файловые серверы и базы данных. В последующих версиях Windows (Vista, 7, 8, 10) и Windows Server (2008, 2012, 2016, 2019) поддержка была сохранена, но с рядом изменений и улучшений, включая поддержку IPv6, сжатие трафика и интеграцию с IIS (Internet Information Services).

С развитием веб-технологий и появлением более современных протоколов (например, SOAP, REST, gRPC) популярность RPC over HTTP снизилась, однако он остаётся востребованным в корпоративных средах, где требуется совместимость с унаследованными системами.

Принцип работы

Инкапсуляция RPC в HTTP

RPC over HTTP работает путём инкапсуляции стандартных RPC-пакетов в тело HTTP-запросов (методы POST или PUT) и HTTP-ответов. Клиентское приложение отправляет RPC-вызов, который перехватывается RPC over HTTP-прокси (RPC Proxy) на стороне клиента. Прокси упаковывает RPC-пакет в HTTP-запрос, добавляя необходимые заголовки (например, Content-Type: application/rpc, Content-Length, Host). Запрос направляется на сервер RPC over HTTP (обычно работающий на базе IIS), который извлекает RPC-пакет, передаёт его соответствующему серверному приложению (например, Exchange Server или Active Directory) и возвращает результат в HTTP-ответе.

Компоненты

  • RPC over HTTP Proxy (RPC Proxy) — компонент на стороне клиента, который перехватывает RPC-вызовы и преобразует их в HTTP-запросы. В Windows этот компонент встроен в службу RPC (Remote Procedure Call).
  • RPC over HTTP Server (RPC Server) — компонент на стороне сервера, который принимает HTTP-запросы, извлекает RPC-пакеты и передаёт их целевому приложению. В Windows Server реализован как расширение IIS.
  • IIS (Internet Information Services) — веб-сервер, который выступает в роли хост-приложения для RPC Server. IIS обрабатывает HTTP-запросы, аутентификацию и управление сессиями.
  • RPC Endpoint Mapper — служба, которая сопоставляет идентификаторы RPC-интерфейсов с сетевыми адресами и портами. В RPC over HTTP используется для разрешения целевых RPC-сервисов.

Процесс взаимодействия

  1. Клиентское приложение (например, Outlook) инициирует RPC-вызов к серверу (например, Exchange Server).
  2. RPC Proxy на клиенте перехватывает вызов и определяет, что необходимо использовать RPC over HTTP.
  3. RPC Proxy устанавливает HTTP-соединение с сервером RPC over HTTP (обычно через порт 443, HTTPS).
  4. RPC Proxy отправляет HTTP-запрос, содержащий закодированный RPC-пакет.
  5. Сервер RPC over HTTP (IIS) принимает запрос, извлекает RPC-пакет и передаёт его целевому RPC-сервису.
  6. Целевой RPC-сервис обрабатывает вызов и возвращает результат.
  7. Результат упаковывается в HTTP-ответ и отправляется обратно клиенту.
  8. RPC Proxy на клиенте извлекает результат из HTTP-ответа и передаёт его клиентскому приложению.

Преимущества и недостатки

Преимущества

  • Обход файрволов и прокси: HTTP-трафик (порты 80 и 443) почти всегда разрешён в корпоративных сетях, что позволяет использовать RPC over HTTP без дополнительных настроек безопасности.
  • Простота настройки: Для клиента требуется только указать URL сервера RPC over HTTP; не требуется настройка VPN или открытие дополнительных портов.
  • Безопасность: Трафик может быть зашифрован с помощью SSL/TLS (HTTPS), обеспечивая конфиденциальность и целостность данных.
  • Поддержка аутентификации: RPC over HTTP поддерживает различные методы аутентификации, включая Basic, NTLM и Kerberos, что позволяет интегрироваться с корпоративными системами безопасности.

Недостатки

  • Производительность: Инкапсуляция RPC в HTTP добавляет накладные расходы (заголовки, сериализация/десериализация), что может снижать скорость передачи данных по сравнению с нативным RPC.
  • Зависимость от IIS: На стороне сервера требуется работающий IIS, что увеличивает сложность и требования к ресурсам.
  • Ограниченная масштабируемость: RPC over HTTP не предназначен для высоконагруженных систем с большим количеством одновременных вызовов; для таких задач лучше подходят специализированные протоколы (например, gRPC).
  • Сложность отладки: Из-за многоуровневой архитектуры (RPC → HTTP → IIS) диагностика проблем может быть затруднена.

Применение

Microsoft Exchange Server (Outlook Anywhere)

Наиболее известное применение RPC over HTTP — это Outlook Anywhere (ранее RPC over HTTP) в Microsoft Exchange Server. Эта функция позволяет клиентам Microsoft Outlook подключаться к почтовым ящикам Exchange через интернет, используя HTTPS. Outlook Anywhere поддерживается в Exchange Server 2003, 2007, 2010, 2013, 2016 и 2019. Для работы требуется настройка сертификата SSL/TLS на сервере IIS и включение соответствующей роли на клиенте.

Active Directory

RPC over HTTP может использоваться для доступа к службам Active Directory (например, для аутентификации или поиска объектов) через интернет. Это позволяет администраторам управлять доменами и пользователями удалённо, не подключаясь к локальной сети через VPN.

Другие приложения

Любые приложения, использующие RPC (например, файловые серверы, базы данных, системы управления конфигурациями), могут быть адаптированы для работы через RPC over HTTP, если это поддерживается их реализацией. В Windows это часто достигается путём настройки RPC-связывания (binding) на использование HTTP-транспорта.

Сравнение с альтернативами

ХарактеристикаRPC over HTTPSOAPRESTgRPC
ТранспортHTTP/HTTPSHTTP/HTTPS, SMTP, другиеHTTP/HTTPSHTTP/2
Формат данныхБинарный (RPC)XMLJSON, XML, другиеProtocol Buffers
ПроизводительностьСредняяНизкаяСредняяВысокая
Сложность реализацииВысокаяСредняяНизкаяСредняя
Поддержка стримингаНетНетНетДа
Основное применениеУнаследованные системы, корпоративные сетиВеб-сервисы, SOAВеб-API, микросервисыМикросервисы, высоконагруженные системы

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

  • RPC over HTTP был разработан в ответ на растущую потребность в удалённом доступе к корпоративным ресурсам без использования VPN, что было особенно актуально для мобильных сотрудников.
  • Технология является частью более широкой концепции RPC (Remote Procedure Call), которая была разработана в 1970-х годах в Xerox PARC и позже стандартизирована в DCE/RPC (Distributed Computing Environment / Remote Procedure Call).
  • В Windows RPC over HTTP поддерживается не только для Exchange, но и для других служб, таких как файловые серверы (SMB) и службы печати, хотя на практике это используется редко.
  • Название «Outlook Anywhere» было введено в Exchange Server 2007, чтобы подчеркнуть возможность доступа к почте из любого места.

Источники

  • Microsoft Docs: «RPC over HTTP Deployment» (Windows Server 2003, 2008, 2012, 2016, 2019).
  • Microsoft Docs: «Outlook Anywhere (RPC over HTTP)» (Exchange Server 2007, 2010, 2013, 2016, 2019).
  • RFC 5531: «Remote Procedure Call Protocol Specification Version 2» (Open Network Computing).
  • Книга: «Windows Internals, Part 1» (Mark Russinovich, David A. Solomon, Alex Ionescu) — описание RPC в Windows.
  • Статья: «RPC over HTTP: A Technical Overview» (Microsoft TechNet, 2003).

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

На главную BFOmetr →