@Drovosek01

Зачем нужен RDP, VNC и вообще разнообразие протоколов?

Очень давно узнал о программе TeamViewer и как узнал - сразу протестировал ее возможности. Тогда для меня это было просто мега удивительно.
Пару лет назад узнал, что в Windows есть встроенная утилита "Подключение к удаленному рабочему столу", которая тоже позволяет полностью управлять другим компьютером, но в локальной сети. Протестировать удалось только на днях. Мне понравилось (за исключением того, что управлять можно только по локальной сети).

Начал гуглить в чем отличие между встроенной утилитой и Team Viewer, прямых сравнений не нашёл, но понял, что они как минимум работают по разным протоколам, Team Viewer - http, Подключение к удаленному рабочему столу - RDP.
Потом нагуглил, что есть еще схожая утилита UltraVNC, которая передает данные по VNC протоколу.

Встал вопрос.
Зачем они используют разные протоколы?
Я понимаю, что каждая из этих программ по разному преобразует информацию с компа-сервера и передает на клиент, но я думаю эту информацию можно же и по http передавать, например команды, нажатые клавиши и т.д. через JSON, картинки типа рабочий стол в png/jpg. Зачем для этого использовать отдельный протокол?
  • Вопрос задан
  • 13897 просмотров
Решения вопроса 2
@stratosmi
Во первых:
RDP != VNC, TeamViewer - так как RDP работает в отдельной сессии.
На одном сервере может быть несколько подключений под RDP, они не видят экранов друг друга, их клавишы/мышь передаются независимо, у каждого в свою сессию.

Во вторых:
http передавать, например команды, нажатые клавиши и т.д. через JSON, картинки типа рабочий стол в png/jpg. Зачем для этого использовать отдельный протокол?

http - протокол нижнего уровня.
Если вы поверх него каким то образом собираетесь передавать клавишы и пр. - вам нужно будет придумать поверх http свой протокол

В третьих:
http текстовый протокол, не бинарный. Он довольно много передает лишней информации.
Для того чтобы обеспечить комфортную работу через сеть, чтобы нажал кнопку и увидел отзыв - лишние звенья в передаче данных ни к чему.

В четвертых:
http не очень хорош как протокол оперативного двустороннего обмена (что и вызвало появление WebSocket).

В пятых:
Team Viewer - http

Это не так

В шестых:
Зачем они используют разные протоколы?

Ну давайте все будем использовать ту технологию что придумана когда-то.
Ну например, ездить на автомобилях без пневматических шин, с деревянными колесами.
Множество протоколов возникает:
а) как процесс совершенствования, как решение каких то дополнительных уникальных проблем.
б) некоторые протоколы, как протокол TeamViewer - закрыты и недоступны для других разработчиков.

Но, к примеру, тот же VNC (это единственных из трех вами упомянутых TeamViewer, VNC, RDP - открытый протокол) - используется в разном софте. Например, в локально запущенных виртуальных машинах для подключения к консоли или у хостеров для подключения к "локальной" консоли сервера клиента.

А вообще:
5c2c67f613da8346430356.jpeg
Ответ написан
Комментировать
@rPman
Не зачем а почему. Полагаю главная причина - политика монополизации рынка Microsoft, которая на любой чих вместо использования существующих стандартов, изобретает ни с чем не совместимый свой, чтобы добавить как минимум лицензионные ограничения, а так же чтобы среда в организациях была не смешанная (т.е. было сложно одновременно использовать не microsoft решения).
А еще по умолчанию почти любой инструмент удаленного управления требует особой настройки сети и фаервола (либо работает без проблем только в локальной сети).

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

Существует еще xwinows протокол, используемый xserver в linux (есть реализации под windows но с ними будут работать приложения заточенные только под его использования, т.е. пришедшие из linux/unix). Это даже не протокол для удаленного подключения, а штатная работа самой системы вывода изображения на экран мониторов - она изначально предполагает работу по сети, даже если работает локально, подключение идет через сокеты. Жутко не эффективный протокол, не умеет подстраиваться под сетевой канал и т.п. например его открытие - понижение уровня безопасности, злоумышленник может навредить или даже проникнуть на сервер (до недавних пор сам сервис xserver даже работал по root со всеми вытекающими от сюда рисками). Благодаря особенности работы, его в т.ч. используют для запуска даже отдельных приложений под разными логинами, подключившись к терминалу удаленно (тот же ssh), мало того возможны обратное направление - вы подключаетесь к серверу и перенаправляете порты своего локального пользовательского xserver на сервер в открытую сессию, и запущенные серверные приложения отображаются у вас (только в пределах вашего нового подключения).

Поверх xvindow под linux есть протоколы, от почившей NX nomachine и открытый x2go, на порядок уменьшающие требования к сети и терминалу,позволяющие удаленно работать с linux машинами, на мой взгляд наилучшие для слабых сетевых каналов.

vnc - открытый протокол, это копирование экрана пользователя без блокирования, у него есть различные расширения от того же tightvnc и т.п. главное его отличие - изображение передается не один к одному, возможны пропуски изменений на экране. Используется по умолчанию (но само собой не обязательно) для удаленного управления ubuntu (сервер vino). По умолчанию очень не эффективный протокол, изображение сильно отстает и т.п.

Еще в windows 7 и выше штатно есть фича - удаленный помощник, работает так - вы отправляете файл настроек администратору, с помощью которого он подключается к вашему экрану, не блокируя его. У инструмента куча ограничений (только администратор может подключиться), есть какие то проблемы при работе на терминальном сервере с пользовательскими сессиями, в остальном - то обычный проприетарный аналог vnc

teamviewer и тот же anydesk - это комбайны, которые содержат в себе не только удаленное управление но и голосовой и не только чат, vpn, передачу файлов и главное - сервис-прокси для подключения между клиентами без необходимости настройки того же фаервола, т.е. содержат инструменты обхода NAT. Это главная причина популяризации этих утилит - удобная работа, которая не вынуждает клиентов что то где то настраивать (что обычно очень сложно или даже невозможно).
Будьте осторожны, открывая доступ к машине, вы даете полный доступ разработчикам/администраторам этих решений к вашим машинам. У teamviewer была даже проблема, то ли используя ее уязвимость, толи пароли угадывали, информации было мало, злоумышленники подключались к машинам, выводили деньги из paypal и криптовалюты (обычно у людей локально пароли сохранены). Понятно что возможно это не проблема протокола, но это очередные открытые двери к вашей машине, ключ к которым тоже нужно охранять.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
DMGarikk
@DMGarikk
Lead Software Developer
зачем? потому что они создавались по этому принципу: https://xkcd.ru/927/
==
http не позволяет в полной мере обеспечить функционал требуемый программами этого класса хотябы потому что http изначально не умел держать постоянно открытое соединение
Ответ написан
Комментировать
NeiroNx
@NeiroNx
Программист
Еще есть X11 forwarding который родственник RDP.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы