SPICE (протокол)
SPICE(сокр. от англ. «Simple Protocol for Independent Computing Environments», то есть «Простой протокол для независимой вычислительной среды») — протокол, используемый в рамках проекта с аналогичным названием (но пишется строчными буквами: Spice). Проект представляет собой систему отображения (рендеринга) удаленного дисплея, построенную для виртуальной среды, которая позволяет вам просматривать виртуальный «рабочий стол» вычислительной среды не только на машине, на которой он запущен, но и откуда угодно через Интернет, причем для просмотра можно использовать широкий спектр машинных архитектур.
Первоначально протокол был разработан компаниейQumranet,которую затем купилаRed Hat, Inc.
9 декабря2009Red 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(англ.)
Ссылки
[править|править код]- spice-space.org(англ.)— официальный сайт SPICE
- Spice remote computing protocol definition v1.0 Draft 1(англ.)
- Download(англ.).Virutal Machine Manager.
В статьене хватаетссылок на источники(см.рекомендации по поиску). |