SPICE (протокол)
SPICE (сокр. от англ. «Simple Protocol for Independent Computing Environments», то есть «Простой протокол для независимой вычислительной среды») — протокол, используемый в рамках проекта с аналогичным названием (но пишется строчными буквами: Spice). Проект представляет собой систему отображения (рендеринга) удаленного дисплея, построенную для виртуальной среды, которая позволяет вам просматривать виртуальный «рабочий стол» вычислительной среды не только на машине, на которой он запущен, но и откуда угодно через Интернет, причем для просмотра можно использовать широкий спектр машинных архитектур.
Первоначально протокол был разработан компанией Qumranet, которую затем купила Red Hat, Inc.
9 декабря 2009 Red Hat, Inc объявила о решении открыть исходный код протокола [1][2].
ОбзорПравить
Протокол SPICE определяет набор протокольных сообщений для подключения, управления и получения входящей информации от удаленных компьютерных устройств (например, клавиатура, видеокарта, мышь) по сети, а также отправка им сообщений. Контролируемое устройство может располагаться на любой стороне: как на стороне сервера, так и/или на стороне клиента. Кроме того, протокол определяет набор вызовов для поддержки миграции удаленного сервера с одного сетевого адреса на другой.
Шифрование передаваемых данных, за одним исключением, оставляет для протокола возможность максимальной гибкости в выборе методов шифрования. SPICE использует простейший обмен сообщениями и не зависит от любых стандартов вызовов удаленных процедур (RPC) или специфики транспортного уровня.
Сессия взаимодействия в SPICE делится на множество коммуникационных каналов (то есть каждый канал — это удаленное устройство) чтобы иметь возможность контролировать обмен информацией и обработку сообщений в зависимости от типа канала (то есть шифрование QoS), а также добавлять и отключать коммуникационные каналы во время работы (что поддерживается стандартом протокола).
В черновом варианте стандарта протокола (который является пока что актуальным на данный момент) определены следующие коммуникационные каналы:
- Основной (главный) канал выступает в роли основного соединения сессии;
- видеоканал для приема обновления изображения удаленного монитора;
- канал входных данных для отправки уведомлений о событиях, связанных с мышью и клавиатурой;
- курсорный канал для приема формы и позиции указателя;
- канал воспроизведения для приема аудиопотока;
- канал записи для отправки аудиозахвата.
Новые типы каналов будут добавляться по мере развития протокола. Стандарт SPICE также содержит набор протокольных определений для синхронизации работы каналов на удаленном узле.
Структура пакетаПравить
Структура заголовкаПравить
Заголовок содержит следующие типы полей:
- UINT8 — 8-битное беззнаковое целое
- INT16 — 16-битное знаковое целое
- UINT16 — 16-битное беззнаковое целое
- UINT32 — 32-битное беззнаковое целое
- INT32 — 32-битное знаковое целое
- UINT64 — 64-битное беззнаковое целое
- ADDRESS — 64-битное беззнаковое целое, величина смещения адресуемых данных от начала тела сообщения протокола SPICE (то есть данные, следующие за RedDataHeader или RedSubMessage).
- FIXED28_4 — 32-битное число с фиксированной запятой. 28 старших битов являются знаковым целым. Младшие 4 бита являются беззнаковым целым числителем дроби со знаменателем 16.
- POINT — INT32 x, INT32 y
- POINT16 — INT16 x, INT16 y
- RECT — INT32 верх, INT32 лево, INT32 низ, INT32 право
- POINTFIX — FIXED28_4 x, FIXED28_4 y
Версия протоколаПравить
Версия протокола определяется двумя значениями типа UINT32, которые определяют основную версию протокола и дополнительную, соответственно.
СовместимостьПравить
Чтобы обеспечить некоторую степень гибкости в реализации клиента и сервера и улучшить совместимость, протокол SPICE поддерживает двунаправленный обмен настройками каналов.
Процесс установки соединенияПравить
Процесс подключения к каналу инициируется клиентом, который посылает серверу сообщение RedLinkMess. В качестве ответа сервер отсылает RedLinkReply.
ОбилечиваниеПравить
Обилечивание — механизм, реализованный в SPICE для гарантии, что соединения открыты только от авторизованных источников.
Перенос каналаПравить
Поток операцийПравить
Передача изображенияПравить
Управление видеопотокомПравить
ПримечанияПравить
- ↑ Red Hat Makes Move That Will Allow Open Collaboration With Partners to Drive Virtualization Innovation Архивная копия от 14 декабря 2009 на Wayback Machine (англ.)
- ↑ Официальный сайт проекта Архивная копия от 25 февраля 2021 на Wayback Machine (англ.)
СсылкиПравить
В статье не хватает ссылок на источники (см. рекомендации по поиску). |