2

TeamViewer работает быстрее по сравнению с альтернативами FLOSS в двух аспектах:

  1. Весь процесс настройки перед фактическим сеансом: определение IP, обход через NAT и брандмауэр и т.д., Тогда как в TeamViewer просто вводите ID/PW, который проходит через централизованную систему TeamViewer (это, конечно, вопрос доверия!).
  2. Сам сеанс удаленного просмотра / управления: решения VNC гораздо менее плавные и отзывчивые, часто отстают на десятки секунд, тогда как в Teamviewer он ощущается почти как "живой", за исключением, конечно, значительного изменения содержимого экрана на высоких частотах (анимированного содержимого и т.д.).

Буду признателен за технические пояснения относительно № 2. Я не могу просто понять, где потенциал оптимизации, который делает TeamViewer намного быстрее.

2 ответа2

4

VNC просто неэффективен - он использует RFB. который фактически делает снимки вашей системы очень часто и говорит клиентской системе рисовать блоки размера X очень часто (полное описание протокола RFB здесь. Более эффективные протоколы не работают на уровне кадрового буфера - RDP использует драйвер уровня ядра в Windows, например, кэш- память nx и сжимает данные.

Более эффективные протоколы, вероятно, как таковые

  1. кэшировать данные и отправлять только различия
  2. подключиться к нативным подсистемам хоста os
  3. использование кэширования и сжатия для ускорения передачи данных.

В случае teamviewer, вероятно, разумно использовать первое и третье - поскольку он, кажется, использует один и тот же клиент для Windows и Linux, и использует их сервер для обработки соединения и маршрутизации трафика.

3

Я хотел бы подчеркнуть тот факт, что VNC - просто ужасная точка сравнения.

Между системами Linux правильно сконфигурированная xpra обеспечивает гораздо более высокую производительность - в основном благодаря поддержке сжатия с потерями на основе H.264.

Кажется, что единственное сжатие с потерями, поддерживаемое TeamViewer, - это уменьшение глубины цвета и некоторые чересстрочные обновления, которые мало помогают с анимированным контентом, как вы заметили. Хорошая система могла бы плавно жертвовать качеством, чтобы поддерживать разумную частоту обновлений. Упомянутый xpra немного похож на него, но, честно говоря, он все еще делает дерьмовую работу.

Другой проблемой является TCP против UDP на основе. Протоколы на основе TCP довольно уязвимы, например, к большой потере пакетов и тому факту, что после отправки некоторых данных их необходимо передавать - таким образом, одно большое обновление означает, что ваш экран будет зависать до тех пор, пока он не появится. Особенно при медленных соединениях, что делает VNC непригодным для использования, поскольку любые большие изменения на экране означают, что вы не увидите никаких изменений только через несколько минут. Сравните также ssh и mosh для чистого текста.

Кажется, еще никому не удалось изобрести действительно хороший протокол, который сочетает в себе высокие коэффициенты сжатия передовых видеокодеков, использование UDP с хорошим способом борьбы с потерянными пакетами, проницательное кодирование, которое обнаруживает и поддерживает читабельность текста над "бесполезным". "детализация, хорошая автоматическая балансировка скоростей обновления / передачи с качеством и скоростью кодирования, постепенное и плавное уточнение качества с течением времени для необновленных областей, кэширование и различие на стороне клиента (хотя кодирование видео может ссылаться на прошлые кадры, они на самом деле не очень хорошие соответствует обычному содержимому рабочего стола, а также тому факту, что вы можете легко хранить 100 МБ эталонных данных на стороне клиента). Другими словами: все, что, по-видимому, делает TeamViewer, - это не совершать совершенно глупых поступков (хотя VNC оправдывается в основном показом своего возраста), я не знаю ни одного решения, которое бы реализовывало бы хотя бы небольшую часть хитрых трюков, возможных даже сегодня, не говоря уже о все те, которые можно себе представить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .